《学习笔记40》—— # MySQL # 外键和DML的基本使用
程序员文章站
2022-03-03 19:20:43
...
1 外键(了解)
-- 方式一.在创建表时就添加外键
-- 步骤
-- 1.定义外键key
-- 2.为外键添加约束(执行引用references)
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
CREATE TABLE IF NOT EXISTS `student` (
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`password` INT(50) NOT NULL COMMENT '密码',
`birthday` DATETIME COMMENT '出生日期',
`gradeid` INT(10) COMMENT '年级id',
`gender` VARCHAR(3) NOT NULL DEFAULT '男' COMMENT '性别',
`email` VARCHAR(50) NOT NULL COMMENT '邮箱',
PRIMARY KEY(`id`),
KEY `FK_gradeid` (`gradeid`),
CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES grade(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
-- 方式二、存在表的时候为表添加上外键
ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`)
以上操作都是在物理外键,数据库级别的外键,这里不推荐使用!(数据库过多,会引起删改操作上的困扰)
2 DML语言(熟悉)
2.1 添加
INSERT INTO `student` (`name`,`password`,`birthday`,`email`)
VALUES ('张三',123456,'2000-02-10','[email protected]')
语法:
INSERT INTO 表名 ([字段名1],[字段名2],[字段名3]……)
VALUES (值1,值2,值3……),(值1,值2,值3……)……
说明:
-
字段和字段之间用英文逗号隔开
-
字段可以省略,但是省略后,后面的值必须要表中的字段一一对应,一个不少!
-
同时插入多条语句,在values后面的值中,需要使用
(值1,值2,值3……),(值1,值2,值3……)……
2.2 修改
update
UPDATE `student` SET `name`='王五' WHERE id=4;
--不指定条件下,会修改所有的表!
UPDATE `student` SET `name`='二狗子';
语法:
-- column_name1:要修改的值所在的字段名
-- value1:修改后的新值
-- column_name3:要修改的值所在的字段名的其他字段名(定位条件)
-- value3:定位条件的值
UPDATE 表名 SET column_name1=value1,column_name2=value2 where column_name3 条件判断符 value3;
条件判断符 | 含义 |
---|---|
= | 等于 |
<>或!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于或等于 |
BETWEEN……AND…… | 在某个范围内 |
AND | 和 |
OR | 或 |
说明:
-
要修改多个值,要用英文逗号在中间隔开
-
若省略了where,则表示修改表中的所有数据
2.3 删除
DELETE/TRUNCATE(删节:尤指掐头或去尾)
-- 删除指定内容
DELETE FROM `student` WHERE id=2;
-- 删除表中全部内容
-- 1.使用truncate
TRUNCATE `student`
-- 2.使用delete
DELETE `student`
语法:
DELETE FROM 表名 WHERE column_name1 条件判断符 value1;
说明:
-
如果不添加where,则默认删除表中全部内容,但不会删除表头
truncate和delete的共同点:
-
都能删除数据,且不会删除掉表头
truncate和delete的不同点:
-
TRUNCATE会重新设置自增列,计数器归零;而delete不会
-
TRUNCATE不会影响事务
上一篇: npm发布包
下一篇: mysql外键的使用