数据库—DML语言

DML语言

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

DML语言:用于操作数据库对象中所包含的数据,是一种数据操作语言。

主要包括:添加数据(INSERT) 删除数据(DELETE) 修改数据(UPDATE)

外键

一个表中的字段去引用另一个表中的字段。定义外键,添加约束,执行引用。

添加外键

建表后修改添加外键

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

ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`);

删除外键

操作:删除grade表,要先删子表 , 后删主表

-- 删除外键
ALTER TABLE student DROP FOREIGN KEY FK_gradeid;
-- 发现执行完上面的,索引还在,所以还要删除索引
-- 注:这个索引是建立外键的时候默认生成的
ALTER TABLE student DROP INDEX FK_gradeid;

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

最佳实现

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

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


添加数据

INSERT命令

语法:INSERT into 表名([字段名1,字段名2,字段名3])values(值1,值2,值3)

注意事项

  • 字段和字段之间使用英文逗号隔开
  • 字段可以省略,但是后面的值必须要一一对应,不能少。
  • 可以同时插入多条数据,values(),(),.....
INSERT INTO student('name','pwd','sex')values('张三','123','男'),('李四','456','女');

修改数据

UPDATE命令

语法:UPDATE 表名 SET 'colnum_name'='value' where判断条件

修改多个属性时,用英文逗号隔开。可以通过多个判断条件判断AND OR

UPDATE student set 'name'='王','pwd'='123' where id=1;

判断条件

注意事项

  • colnum_name是数据库的列,尽量带上''。
  • 条件为筛选的条件,如果没有指定,则会修改所有的列
  • value可以是一个具体的值,也可以是一个变量。

删除数据

DELETE命令

语法

DELETE from 表名[where 条件]

TRUNCATE命令

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

-- 清空student表
TRUNCATE 'student'

DELETE与TRUNCATE的区别

  • 相同点:都可以删除数据,且不改变表的结构,但是TRUNCATE速度更快。
  • 不同点:使用TURNCATE删除表,可使自增的计数器回到初始计数状态;且不会对事务有影响。
-- 创建一个测试表
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('row1'),('row2'),('row3');

-- 删除表数据(不带where条件的delete)
DELETE FROM test;
-- 结论:如不指定Where则删除该表的所有列数据,自增当前值依然从原来基础上进行,会记录日志.

-- 删除表数据(truncate)
TRUNCATE TABLE test;
-- 结论:truncate删除数据,自增当前值会恢复到初始值重新开始;不会记录日志.

-- 同样使用DELETE清空不同引擎的数据库表数据.重启数据库服务后
-- InnoDB : 自增列从初始值重新开始 (因为是存储在内存中,断电即失)
-- MyISAM : 自增列依然从上一个自增数据基础上开始 (存在文件中,不会丢失)

参考资料:狂神说

posted @ 2021-01-05 11:07  胡木杨  阅读(970)  评论(0)    收藏  举报