• 欢迎光临~

(数据库)MySQL数据管理 DML语言(增删改)

开发技术 开发技术 2022-07-24 次浏览

MySQL数据管理

外键(了解即可)

方式一、在创建表的时候,增加约束(麻烦,比较复杂)

  • 学生表的gradeid字段,要去引用年级表的gradeid

  • 定义外键key

  • 给这个外键添加约束(执行引用) references 引用

  • 删除有外键关系的表的时候,必须先删除引用别人的表(从表),再删除被引用的表(主表)

方式二、创建表成功后,添加外键约束

ALTER TABLE student ADD gradeid INT(10)
-- 创建表的时候没有外键关系
ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);

-- ALTER TABLE `表名` ADD CONSTRAINT `约束名` FOREIGN KEY(`作为外键的列`) REFERENCES `哪个表`(`哪个字段`);

以上操作都是物理外键,数据库级别的外键,不建议使用(避免数据库过多造成困扰,了解即可)

最佳实践

  • 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)

  • 我们想使用多张表的数据,想使用外键,通过程序实现

 

DML语言(全部记住)

数据库意义:数据存储,数据管理

DML语言:数据操作语言

  • insert

  • update

  • delete

添加

insert into

-- ALTER TABLE `表名` ADD CONSTRAINT `约束名` FOREIGN KEY(`作为外键的列`) REFERENCES `哪个表`(`哪个字段`);

-- 插入语句(添加)
-- insert into 表名([字段名1,字段2,字段3])values('值1'),('值2'),('值3'),('值4')
INSERT INTO `grade`(`gradename`) VALUES('大三'),('大四'),('大五'),('大六')

INSERT INTO `student`(`name`,`pwd`,`sex`) VALUES('张三','aaaaaa','男')

语法:

  • insert into 表名([字段名1,字段2,字段3])values('值1'),('值2'),('值3'),('值4')

注意事项:

  1. 字段和字段之间使用 英文逗号 隔开

  2. 字段是可以省略的,但是后面的值必须要一一对应,不能少

  3. 可以同时插入多条数据,values后面的值,需要使用,隔开

 

修改

update

-- 修改学员姓名
UPDATE `student` SET `name`='xd' WHERE id=1;

-- 不指定条件的情况下,会改动所有表
UPDATE`student` SET `name`='xd'

-- 语法:UPDATE `表名` SET `列名`='值' WHERE 条件;

-- 修改多个属性,逗号隔开
UPDATE `student` SET `name`='xd',`emile`='5551545.com' WHERE id = 1;

条件:where 子句 运算符 id等于某个值,大于某个值,在某个值区间修改

操作符会返回 布尔值

操作符含义范围结果
= 等于 5=66 false
<> 不等于 5<>6 true
>      
<      
>=      
<=      
BETWEEN...AND... 在某个范围内 [2,5]  
AND && 5>1 AND 1>2 FALSE
OR || 5<1 OR 1>2 TRUE
-- 通过多个条件定位数据
UPDATE `student` SET `name`='dddd' WHERE `name`='xd' AND sex='女'

注意

  • 数据库的列名,尽量带上``

  • 条件,筛选的条件,如果没有指定,则会修改所有的列

  • value,是一个具体的值,也可以是一个变量(主要用时间变量)

  • 多个设置的属性,使用英文逗号隔开

 

删除

delete命令

语法:delete from 表名 [where 条件]

-- 删除数据(避免这样写,会全部删除)
DELETE FROM `student`

-- 删除指定数据
DELETE FROM `student` WHERE id=1

truncate命令

作用:完全清空一个数据库表,表的结构和索引约束不会变

-- 清空 student表
TRUNCATE `student`

 

  • 相同点:都能删除数据,都不会删除表结构

  • 不同:

    • truncate:重新设置 自增列 计数器会归零

    • truncate:不会影响事物

测试

-- 测试delete 和truncate区别
CREATE TABLE `test`(
`id` INT(4) NOT NULL AUTO_INCREMENT,
`coll` VARCHAR(20) NOT NULL,
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8


INSERT INTO `test`(`coll`) VALUES('1'),('2'),('3')


DELETE FROM `test` -- 不会影响自增
TRUNCATE `test` -- 自增会归零

了解即可:delete删除问题,重启数据库,现象

  • innodb 自增列会重1开始(存在内存中,断电即失)

  • mylsam 继从上一个自增量开始(存在文件中,不会丢失)

程序员灯塔
转载请注明原文链接:(数据库)MySQL数据管理 DML语言(增删改)
喜欢 (0)