天天看點

05-MySQL資料管理MySQL資料管理

MySQL資料管理

  • MySQL資料管理
    • 外鍵
    • DML語言:資料操作語言
      • Insert → 添加/插入語句
      • update → 修改語句
      • delete → 删除語句

MySQL資料管理

外鍵

  • 方式一:建立表的時候增加限制(較為麻煩);
KEY `FK_gradeid` (`gradeid`),
	CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`)
           
-- 建立年紀表
CREATE TABLE `grade`(
	`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年紀id',
	`gradename` VARCHAR(50) NOT NULL COMMENT '年級名稱',
	PRIMARY KEY(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

-- 學生表的gradeid字段要去引用年級的gradeid
-- 定義外鍵 key
-- 給這個外鍵添加限制(執行引用) REFERENCES(引用)
CREATE TABLE IF NOT EXISTS `student`(
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '學号',
	`gradeid` INT(10) NOT NULL COMMENT '學生的年級',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`password` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密碼',
	`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
	`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
	`familyAddress` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
	`email` VARCHAR(50) DEFAULT NULL COMMENT '郵箱',
	PRIMARY KEY(`id`),
	KEY `FK_gradeid` (`gradeid`),
	CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
           
  • 方式二:建立表成功之後,添加外鍵限制;
-- 建立年紀表
CREATE TABLE `grade`(
	`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年紀id',
	`gradename` VARCHAR(50) NOT NULL COMMENT '年級名稱',
	PRIMARY KEY(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

-- 學生表的gradeid字段要去引用年級的gradeid
CREATE TABLE IF NOT EXISTS `student`(
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '學号',
	`gradeid` INT(10) NOT NULL COMMENT '學生的年級',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`password` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密碼',
	`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
	`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
	`familyAddress` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
	`email` VARCHAR(50) DEFAULT NULL COMMENT '郵箱',
	PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

-- 建立表的時候沒有外鍵關系
-- ALTER TABLE 表名 ADD CONSTRAINT 限制名 FOREIGN KEY(作為外鍵的列) REFERENCES 那個表(那個字段)
ALTER TABLE `student` ADD CONSTRAINT `FK_gradeid` 
FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`)

           

注意:删除有外鍵關系的表的時候,必須要先删除引用别人的表,在删除被引用的表;

以上的操作都是實體外鍵,資料庫級别的外鍵,不建議使用!(避免資料庫過多造成幹擾)。

  • 資料庫就是單純的表,隻用開存資料,隻有行(資料)和列(字段);
  • 我們想使用多張表的資料,想使用外鍵(用程式進行實作);

DML語言:資料操作語言

資料庫意義:資料存儲,資料管理;

Insert → 添加/插入語句

  • 插入單行語句
-- 插入語句(添加)
INSERT INTO `grade`(`gradename`) VALUES ('大四');

-- 由于主鍵自增,可以省略主鍵
-- 如果不寫字段,表會進行一一比對
-- 一般寫插入語句,我們一定要資料和字段一一對應
INSERT INTO `grade` VALUES (2,'大三');

           
05-MySQL資料管理MySQL資料管理
  • 插入多行資料
-- 插入多行資料
INSERT INTO `grade`(`gradename`) VALUES ('大二'),('大一')

-- 插入多個字段
INSERT INTO `student`(`name`,`password`,`sex`) VALUES ('張三','aaaaa','男'),('李四','bbbbbb','女')
           
05-MySQL資料管理MySQL資料管理

文法:

INSERT INTO 表名('字段1','字段2','字段3') VALUSE ('值1','值2','值3'),('值1','值2','值3')

注意事項:

1. 字段和字段之間使用英文逗号隔開;

2. 字段是可以省略的,但是後面的值必須要和建立的表的列一一對應,不能少;

05-MySQL資料管理MySQL資料管理

3. 可以同時插入多條資料,VALUES 後面的值需要使用逗号隔開

VALUES ('',''),('',''),...

update → 修改語句

update 修改誰 (條件) set 原來的值 = 新值;
  • 修改單條資料
-- 修改學員名字
UPDATE `student` SET `name`='郭陳' WHERE id=1;

-- 不指定條件的情況下,會改動所有的行的資料
UPDATE `student` SET `name`='chen';
           

文法:

UPDATE 表名 SET column_name=value [WHERE 條件];

  • 修改多條資料
-- 修改多個屬性,逗号隔開
UPDATE `student` SET `name`='陳',email='[email protected]' WHERE id=1;
           

文法:

UPDATE 表名 SET column_name=value,[column=value,......] [WHERE 條件];

注意:

  1. column_name 是資料庫的列,盡量帶上``
  2. 條件,篩選的條件,如果沒有指定,則會修改所有的列;
  3. value,是一個具體的值,也可以是一個變量;
  4. 多個設定的屬性之間,使用英文逗号隔開;
  • 條件:where 子句 運算符,例如:id等于某個值,大于某個值,在某個區間…
操作符 含義 示例
= 等于

WHERE id=1;

<>或!= 不等于

WHERE id <> 2;

> 大于

WHERE id > 3;

< 小于

WHERE id < 3;

>= 大于等于

WHERE id >= 3;

<= 小于等于

WHERE id <=3;

BETWEEN … AND … 在某個區間 ,閉合區間

WHERE id BETWEEN 2 AND 5;

AND 可以多個條件(無上限),相當于&&

WHERE name='chen' AND age=18;

OR 或者,相當于 ||

WHERE name='chen' OR email='[email protected]'

delete → 删除語句

delete 指令

文法:

DELETE FROM 表名 [WHERE 條件];

-- 删除資料(避免這樣寫,會删除整個表中資料)
DELETE FROM `student` 

-- 删除指定資料
DELETE FROM `student` WHERE `name`='陳';

           
TRUNCATE 指令,清空表

文法:

TRUNCATE 表名;

-- 清空表
TRUNCATE `student`
           
DELETE 和 TRUNCATE 差別
  • 相同點:都能删除資料,都不會删除表結構;
  • 不同:
    • TRUNCATE 重新設定,自增列 計數器都會歸零,DELETE 不會清空自增量;
    • TRUNCATE 不會影響事務;

持續更新,如果錯誤,歡迎大家指出…