Mysql(DDL,DML)

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 '字段说明']
)[表的⼀些设置];

注意:

  1. 在同⼀张表中,字段名不能相同
  2. 宽度和约束条件为可选参数,字段名和类型是必须的
  3. 最后⼀个字段后不能加逗号
  4. 类型是⽤来限制 字段 必须以何种数据类型来存储记录
  5. 类型其实也是对字段的约束(约束字段下的记录必须为XX类型)
  6. 类型后写的 约束条件 是在类型之外的 额外添加的约束

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区别

  1. drop,删除表的内容以及表结构。(删除后,数据不可恢复)
  2. truncate,删除表的数据,但是不删除表的结构。
    注意:truncate只能删除整个表的数据,不能单独删除一行。
  3. 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 语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值