DDL
1.库管理
创建库
create database [if not exists] 库名;
删除库
drop databases [if exists] 库名;
建库通⽤的写法
drop database if exists 旧库名;
create database 新库名
2.表管理
创建表
create table 表名(
字段名1 类型[(宽度)] [约束条件] [comment '字段说明'],
字段名2 类型[(宽度)] [约束条件] [comment '字段说明'],
字段名3 类型[(宽度)] [约束条件] [comment '字段说明']
)[表的⼀些设置];
注意:
- 在同⼀张表中,字段名不能相同
- 宽度和约束条件为可选参数,字段名和类型是必须的
- 最后⼀个字段后不能加逗号
- 类型是⽤来限制 字段 必须以何种数据类型来存储记录
- 类型其实也是对字段的约束(约束字段下的记录必须为XX类型)
- 类型后写的 约束条件 是在类型之外的 额外添加的约束
3.表中列的管理
添加列
alter table 表名 add column 列名 类型 [列约束];
修改列
alter table 表名 modify column 列名 新类型 [约束];
或者
alter table 表名 change column 列名 新列名 新类型 [约束];
删除列
alter table 表名 drop column 列名;
DML
DML(Data Manipulation Language)数据操作语⾔,
以INSERT、UPDATE、DELETE三种指令为核⼼,分别代表插⼊、更新与删除,是必须要掌握的指令,DML和SQL中的select熟称CRUD(增删改查)。
1.插⼊操作
插入单行
⽅式1
- insert into 表名[(字段,字段)] values (值,值);
说明:
值和字段需要⼀⼀对应
如果是字符型或⽇期类型,值需要⽤单引号引起来;如果是数值类型,不需要⽤单引号
字段和值的个数必须⼀致,位置对应
字段如果不能为空,则必须插⼊值
可以为空的字段可以不⽤插⼊值,但需要注意:字段和值都不写;或字段写上,值⽤null代替
表名后⾯的字段可以省略不写,此时表⽰所有字段,顺序和表中字段顺序⼀致。
批量插入2种方式
⽅式1
- insert into 表名 [(字段,字段)] values (值,值),(值,值),(值,值);
⽅式2
- insert into 表 [(字段,字段)]
数据来源select语句;
说明:
select返回的结果和插入数据的字段数量、顺序、类型需要一致。
2.数据更新
单表更新
语法:
- update 表名 [[as] 别名] set [别名.]字段 = 值,[别名.]字段 = 值 [where条件];
如果⽆别名的时候,表名就是别名。
多表更新
可以同时更新多个表中的数据
语法:
- update 表1 [[as] 别名1],表名2 [[as] 别名2] set [别名.]字段 = 值,[别名.]字段 = 值 [where条件]
使⽤建议
- 建议采⽤单表⽅式更新,⽅便维护。
3.删除数据操作
delete单表删除
- delete [别名] from 表名 [[as] 别名] [where条件];
注意:
如果⽆别名的时候,表名就是别名
如果有别名,delete后⾯必须写别名
如果没有别名,delete后⾯的别名可以省略不写。
delete多表删除
可以同时删除多个表中的记录
语法如下:
- delete [别名1,别名2] from 表1 [[as] 别名1],表2 [[as] 别名2] [where条件];
示例1
-
delete t1 from test1 t1,test2 t2 where t1.a=t2.c2;
删除test1表中的记录,条件是这些记录的字段a在test.c2中存在的记录
使⽤truncate删除
语法
truncate 表名;
drop,truncate,delete区别
- drop,删除表的内容以及表结构。(删除后,数据不可恢复)
- truncate,删除表的数据,但是不删除表的结构。
注意:truncate只能删除整个表的数据,不能单独删除一行。 - delete,根据where过滤条件来删除表中指定的行数据(删除操作作为事务记录在日志中保存,以便做回滚操作。)
truncate与不带where的delete:只删除数据,⽽不删除表的结构(定义)。
truncate table 删除表中的所有⾏,但表结构及其列、约束、索引等保持不变。
对于由foreign key 约束引⽤的表,不能使⽤truncate table,⽽应使⽤不带where⼦句的delete语句。
由于truncate table 记录在⽇志中,所以它不能激活触发器。
truncate、drop 是数据库定义语⾔(ddl),操作⽴即⽣效,原数据不放到 rollback segment中,不能回滚,操作不触发 trigger。
• 安全性:⼩⼼使⽤ drop 和 truncate,尤其没有备份的时候,否则哭都来不及
• 删除速度,⼀般来说: drop> truncate > delete
• 如果要删除表定义及其数据,请使⽤ drop table 语句