DDL数据定义语言

DDL数据定义语言

DDL是用于定义数据库对象的操作语言。
create创建、alter修改、drop删除、truncate截断

修改表名称

rename table 原始表名称 to 新的表名称;

数据库操作

创建数据库
语法规则:create database 数据库名称 default character set utf8;
默认编码字符集为uft-8。如果数据库已经存在,用上述语句再次创建会报错。
如果要创建的数据库已经存在,用create database if not exists 数据库名称 default character set utf8;则不会报错。

删除数据库
语法规则:drop database 数据库名称;
如果指定删除的数据库不存在,则用上述语句删除会报错。
drop database if exists 数据库名称;则不会报错。

查看所有数据库
show databases;
mysql中允许同时打开多个数据库,不同的数据库管理系统不一样。

切换数据库
use 数据库名称;如果数据库存在,则切换成功,如果不存在则报错。

查看当前数据库
select database();

查看数据库的创建语句
show create database 数据库名称;

数据表操作

表创建操作(create)

创建数据表基本语法规则:
create table 数据库名称(数据列名称 数据类型 约束规则 ......)engine=innodb 存储引擎名称 default charset utf8;
例如:

create table tb_user(
	id bigint primary key auto_increment,
	name varchar(20) not null comment '姓名',
	sex boolean
)engine=innodb default charset utf8;

数据表创建完成,则会发现在data/test目录下出现一个文件tb_student.ibd。
一般使用的存储引擎engine常见的有innodb和myisam两种,如果使用myisam则会创建两个文件。

  • .myd数据信息文件,其中包含表的数据;
  • .myi索引信息文件,是用于提高查询效率的索引数据。

查看表中的列定义
desc 表名称;

desc tb_user;

查看具体的列定义
show create table 表名称;

show create table tb_user;

克隆表结构
快速创建一个表和另外一个表的结构相同,只是克隆表结构,不会克隆数据。
create table 新表名称 like 已经存在的旧表名称;

create table tb_newuser like tb_user;
表修改操作(alter)

语法:alter table 表名称 add/drop/modify 列名称 [类型 约束];
新增列:

alter table tb_user add age int;
--在tb_user表中增加age列

删除列:

alter table tb_student drop column age;
--删除指定列

修改列:

alter table tb_student modify sex varchar(10);
--注: 修改列定义时,要求已经存在的数据必须符合规则,否则修改失败。modify一般用于修改列的数据类型和长度,但是如果有数据则必须和目标类型匹配,否则修改失败。

修改列名称
alter table 表名称 change 旧有列名称 新列名称 类型 约束;

alter table tb_user change name uername varchar(20) not null;
表删除操作(drop)

drop table 表名称

drop table tb_student;
--或者下面这个
drop table if exists tb_student;
表截断操作(truncate)

语法:truncate table tb_user;
表的截断操作可以删除表中的所有数据,没有事务,不会记录操作日志,所以大量删除数据时执行效率高。缺点在于没有反悔的机会。底层原理就是创建一个相同的空表。

逻辑删除和物理删除

物理删除就是从表中直接删除数据,逻辑删除类似于回收站,只是给某行数据上添加一个删除标志,表示该行数据已经删除。

逻辑删除的具体实现

  • 修改表结构,在tb_user表中新增一个额外列,用于表示该行数据是否已经删除
alter table tb_user add deleted boolean default 0;
-- 0表示没有删除
  • 逻辑删除,修额外列的值,并没有真是删除
update tb_user set deleted=1 where id=2;
-- 删除2号用户的信息,

-- 物理删除
delete from tb_user where id=2;
  • 查询时为了避免查到已经逻辑删除的数据,需要额外增加查询条件
select * from tb_user where deleted=0;
-- 查询tb_user中deleted列值为0的数据
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值