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,'大三');
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL4tmaOFzaU9UMNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5IDOwADM1ITMzIjMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
- 插入多行資料
-- 插入多行資料
INSERT INTO `grade`(`gradename`) VALUES ('大二'),('大一')
-- 插入多個字段
INSERT INTO `student`(`name`,`password`,`sex`) VALUES ('張三','aaaaa','男'),('李四','bbbbbb','女')
文法:
INSERT INTO 表名('字段1','字段2','字段3') VALUSE ('值1','值2','值3'),('值1','值2','值3')
。
注意事項:
1. 字段和字段之間使用英文逗号隔開;
2. 字段是可以省略的,但是後面的值必須要和建立的表的列一一對應,不能少;
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 條件];
注意:
- column_name 是資料庫的列,盡量帶上``
- 條件,篩選的條件,如果沒有指定,則會修改所有的列;
- value,是一個具體的值,也可以是一個變量;
- 多個設定的屬性之間,使用英文逗号隔開;
- 條件:where 子句 運算符,例如:id等于某個值,大于某個值,在某個區間…
操作符 | 含義 | 示例 |
---|---|---|
= | 等于 | |
<>或!= | 不等于 | |
> | 大于 | |
< | 小于 | |
>= | 大于等于 | |
<= | 小于等于 | |
BETWEEN … AND … | 在某個區間 ,閉合區間 | |
AND | 可以多個條件(無上限),相當于&& | |
OR | 或者,相當于 || | |
delete → 删除語句
delete 指令
文法:
DELETE FROM 表名 [WHERE 條件];
-- 删除資料(避免這樣寫,會删除整個表中資料)
DELETE FROM `student`
-- 删除指定資料
DELETE FROM `student` WHERE `name`='陳';
TRUNCATE 指令,清空表
文法:
TRUNCATE 表名;
-- 清空表
TRUNCATE `student`
DELETE 和 TRUNCATE 差別
- 相同點:都能删除資料,都不會删除表結構;
- 不同:
- TRUNCATE 重新設定,自增列 計數器都會歸零,DELETE 不會清空自增量;
- TRUNCATE 不會影響事務;
持續更新,如果錯誤,歡迎大家指出…