3.MySQL数据管理
3.1,外键
方式一:创建表的时候,增加约束
– 年级表 (id\年级名称)
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
– 学生信息表 (学号,姓名,性别,年级,手机,地址,出生日期,邮箱,身份证号)
– 定义外键key
– 给这个外键添加约束
CREATE TABLE student3
(
studentno
INT(4) NOT NULL COMMENT ‘学号’,
studentname
VARCHAR(20) NOT NULL DEFAULT ‘匿名’ COMMENT ‘姓名’,
sex
TINYINT(1) DEFAULT ‘1’ COMMENT ‘性别’,
gradeid
INT(10) DEFAULT NULL COMMENT ‘年级’,
phoneNum
VARCHAR(50) NOT NULL COMMENT ‘手机’,
address
VARCHAR(255) DEFAULT NULL COMMENT ‘地址’,
borndate
DATETIME DEFAULT NULL COMMENT ‘生日’,
email
VARCHAR(50) DEFAULT NULL COMMENT ‘邮箱’,
idCard
VARCHAR(18) DEFAULT NULL COMMENT ‘身份证号’,
PRIMARY KEY (studentno
),
KEY FK_gradeid
(gradeid
),
CONSTRAINT FK_gradeid
FOREIGN KEY (gradeid
) REFERENCES grade
(gradeid
)
) ENGINE=INNODB DEFAULT CHARSET=utf8
删除有外键关系的表时,先删除引用别人的表,再删除被引用的表
方式二:创建表成功后,添加外键约束
– 创建表的时候没有外键关系
ALTER TABLE student3
ADD CONSTRAINT FK_gradeid
FOREIGN KEY(gradeid
) REFERENCES grade
(gradeid
);
以上操作都是物理外键!
最佳实践:
数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)。
多张表的数据,使用外键。(用程序实现)
3.2,DML语言
①添加
– 插入语句(添加)
insert into 表名 (字段1,字段2,···,字段n) values (值1,值2,···,值n);
注意:
字段和字段之间用英文逗号隔开
可以同时插入多条数据,values后面的值用逗号隔开
②修改
– 有条件的修改字段对应的内容
update 表名
set 字段名=value where 条件;
– 修改多个属性,逗号隔开
update 表名
set 字段名=value,字段名=value,···,字段名=value where 条件;
操作符 含义 范围 结果(返回布尔类型结果)
= 等于 5=6 false
<> 或 != 不等于 5<>6 true
大于 5>6 false
< 小于 5<6 true
= 大于等于 5>=6 false
<= 小于等于 5<=6 false
between ··· and ··· 在某个范围内 [ 5 , 6 ] ```
or ··· 或 ··· 5 > 6 or 6 > 5 true
and ··· 和 ··· 5 > 6 or 6 > 5 false
注意:
value可以是一个值,也可以是一个变量
如果没有指定筛选的条件,则修改所有行的该字段内容
③删除
– delete 删除数据
delete from 表名
where 条件;
– 删除数据(无条件),对自增无影响
delete from 表名
;
– truncate 删除数据
truncate 表名
;
#delete 和 truncate 的区别:
#都能删除数据,都不会删除表的结构;delete不影响自增,truncate后自增清零;
小知识:
用delete删除后,重启数据库的不同引擎的现象:
InnoDB 计数器归零。 【存储在内存当中】
MyISAM 自增不影响。 【储存在文件中,不会丢失】