数据库—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 : 自增列依然从上一个自增数据基础上开始 (存在文件中,不会丢失)
参考资料:狂神说

浙公网安备 33010602011771号