3.MySQL数据管理
3.MySQL数据管理
3.1外键(了解)
先来学点单词
constraint n.限制; 限定; 约束; 严管;
references 引用,提及,参考
方式1:在创建表的时候增加约束
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 = utf8mb4
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`gender` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
`gradeid` INT(10) NOT NULL COMMENT '学生的年级',
PRIMARY KEY(`id`),
KEY `FK_gradeid`(`gradeid`),-- 定义一个键
CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`)
-- 学生表的gradeid字段要去引用(REFERENCES)年级表的gradeid
)ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
删除有外键关系的表的时候,必须先删除引用别人的表(student),再删除被引用的表(grade)
如果直接删除被引用的表会报错

方式2:在SQLyog里直接修改(方便)

-- 这是历史记录中的语句
ALTER TABLE `school`.`student`
ADD CONSTRAINT ```FK_gradeid``` FOREIGN KEY (`gradeid`) REFERENCES `school`.`grade`(`gradeid`);
那我们也可以效仿历史记录的语句自己来写
-- 创建表单时候没有外键关系
ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`)
以上都是物理外键,数据库级别的外键,不推荐使用(避免数据库过多造成困扰)
总结:
- 数据库就是一张表,只用来存数据,只有行(数据)和列(字段)
- 如果要使用多张表的数据,想使用外键,就通过程序去实现
3.2DML语言(全部记住)
概念:数据操作语言
- Insert
- update
- delete
3.3添加(INSERT)
语法:
-- 一次插入多个不同的字段(只新建一行)
INSERT INTO `表名`(`字段名1`, `字段名2`) VALUE ('值1', '值2') -- 一个括号
-- 一次插入多个相同的字段(新建多行)
INSERT INTO `表名`(`字段名1`, `字段名2`) VALUE ('值1', '值2'),('值3', '值4') -- 多个括号
例子:
INSERT INTO `student`(`name`) VALUE ('xiaoHong')
INSERT INTO `student`(`name`) VALUE ('xiaoHong2'),('xiaoMing')
INSERT INTO `student`(`name`, `pwd`) VALUE ('xiaoXong', '001107')

也可以不写字段名,但是要一一对应
-- 如果不写表的字段,他就会一一匹配,不能少(就是第一个值对应第一个字段,第二个值对应第二个字段...)
INSERT INTO `student` VALUE ('7','xiaoWei', '147258369', '男', '2000-11-07', '江门', 'email', '1')

3.4修改(UPDATE)
语法:
UPDATE `表名` SET `字段1`= '值1/变量', `字段2`= '值2/变量'... WHERE `条件`
上边可以设置值,也可以设置变量(日期之类的)
例子:
-- 修改学员名字,带上条件(WHERE `id` = 1)
UPDATE `student` SET `name` = 'NoMAd' WHERE `id` = 1

-- 不指定条件,会改动所有表
UPDATE `student` SET `name` = 'NoMAd15234'

-- 修改多个属性,用逗号隔开
UPDATE `student` SET `name` = 'NoMAd',`gender` = '男' WHERE `id` = 1

条件:

3.5删除(DELETE)
语法:
DELETE FROM `表名` WHERE `条件`
例子:
-- 删除数据(避免这样写,直接删除了一整张表)
DELETE FROM `student`
-- 删除指定数据
DELETE FROM `student` WHERE `id` = 1
TRUNCATE
vt.截断; 截短,缩短,删节(尤指掐头或去尾)
作用:完全清空一个数据库表,表的结构和索引约束不会变
-- 清空student表
TRUNCATE TABLE `student`
DELETE和TRUNCATE区别:
-
相同点:都能删除数据,都不会删除表结构,要想完全删除一张表就用DROP关键字
-
不同点:
-
TRUNCATE会重新设置自增列,计数器会归零

-
TRUNCATE不会影响事务
-

浙公网安备 33010602011771号