05-MySQL数据管理

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,'大三');

插入数据

  • 插入多行数据
-- 插入多行数据
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. 字段是可以省略的,但是后面的值必须要和创建的表的列一一对应,不能少;

INSERT INTO `student` VALUES (4,'王五','123456','男','1998-09-17','北京','7987@qq.com')

默认顺序赋值
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='1533022@163.com' 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='153@163.com'
UPDATE `student` SET `name`='chen',email='1533022@163.com' WHERE  `name`='陈' AND `sex`='男';

delete → 删除语句

delete 命令

语法:DELETE FROM 表名 [WHERE 条件];

-- 删除数据(避免这样写,会删除整个表中数据)
DELETE FROM `student` 

-- 删除指定数据
DELETE FROM `student` WHERE `name`='陈';

TRUNCATE 命令,清空表

语法:TRUNCATE 表名;

-- 清空表
TRUNCATE `student`

DELETE 和 TRUNCATE 区别

  • 相同点:都能删除数据,都不会删除表结构;
  • 不同:
    • TRUNCATE 重新设置,自增列 计数器都会归零,DELETE 不会清空自增量;
    • TRUNCATE 不会影响事务;

持续更新,如果错误,欢迎大家指出…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个小坑货

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值