目录
1.概述
2.数据库的增删改查
3.表的增删改查
3.1.创建和查看表结构
3.2.修改表
3.3.查看所有的表
3.4.删除表
4.用户
5.DDL在实际应用场景中的作用
5.1.数据库设计
5.2.数据库维护
5.3.数据库迁移或重置
5.4.优化性能
5.5.小结
1.概述
啥是DDL?我们数据库的课程里应该学过。DDL就是Data Definition Language的首字母,即数据定义语言。是一类用于定义和修改数据库结构的语言。使用户能够创建、修改、删除数据库中的各种对象,如表、视图、索引、触发器等。DDL作为SQL(Structured Query Language,结构化查询语言)的一个重要组成部分,其指令主要涉及数据库模式的创建和维护。主要包括create、alter、drop等指令。
2.数据库的增删改查
- 创建数据库:create database 数据库名;
- 创建数据库并指定编码:utf8,设置好后,数据库中就可以存储中⽂数据。create database 数据库名 charset utf8;
- 使⽤数据库:use 数据库名;
- 查看所有数据库:show databases; #查看当前所有数据库。
- 单独常看当前数据库:select database(); #查看当前使⽤的是哪⼀个数据库。
- 修改数据库:数据库的名称⼀旦创建好之后就⽆法修改。
- 删除数据库:drop database 数据库名;
3.表的增删改查
3.1.创建和查看表结构
create table 表名(
字段名1 类型(宽度) 约束条件,
字段名2 类型(宽度) 约束条件,
字段名3 类型(宽度) 约束条件,
);
注意:
- 字段名不能重复
- 字段名和类型是必选
- 宽度和约束条件可选
查看表结构:desc 表名;
例如:
create table student(
name char(10),
age int,
score float(5,2),
startTime time,
lesson
set('English','Math','Chinese'),
sex enum('male','female')
);
> OK
> 时间: 0.008s
desc student;
约束:
为了防⽌不符合规范的数据进⼊数据库,在⽤户对数据进⾏插⼊、修改、删除等操作时,数据库需要按照⼀定的约束条件对数据进⾏监测,使不符合规范的数据不能进⼊数据库,以确保数据库中存储的数据正确性和有效型。
约束条件主要分为以下⼏种:
- NOT NULL:⾮空约束,指定某列不能为空
- DEFAULT:默认值
- UNIQUE:唯⼀约束,指定某列或者⼏列组合不能重复
- PRIMARY KEY:主键,指定该列的值可以唯⼀地标识该列记录
- FOREIGN KEY:外键,指定该⾏记录从属于主表中的⼀条记录,主要⽤于参照完整性
primary key:
主键,为了保证表中的每⼀条数据的该字段都是表格中的唯⼀值。是⽤来独⼀⽆⼆地确认⼀个表格中的每⼀⾏数据。
create table tp (
id int PRIMARY KEY , #主键约束
name varchar(20),
salary float(6,2)
)
auto_increment:
⾃增字段,对于主键id⽽⾔,往往我们可以设置为⾃增字段,不⽤⼿动填写。
create table ta(
id int PRIMARY KEY auto_increment, #主键约
束
name varchar(50)
)
not null:
非空,当设置⼀个字段时,不允许它为空,可以使⽤此约束条。
create table tn (
id int PRIMARY KEY auto_increment, #主键约束
name varchar(50) not null #name字段的值不可以为空
)
default:
默认值,例如:对于性别⼀列,如果⼤部分都是男性,可以设置成默认值,不填则取默认值,填写了则覆盖默认值。
create table td (
id int PRIMARY KEY auto_increment, #主键约束
name varchar(50),
sex char(20) DEFAULT('male')
)
unique:
唯⼀值,当有⼀列字段你不想让它有重复值时,可以设置为唯⼀。
create table tu (
id int PRIMARY KEY auto_increment, #主键约束
name varchar(50) unique, #唯⼀约束
)
联合唯⼀:
只有当你设置的这些字段同时重复时才会报错
create table tu1 (
id int PRIMARY KEY auto_increment, #主键约束
name varchar(50),
dep char(10),
UNIQUE(name,dep) #联合唯⼀约束
)
foreign key:
外键,假设我们要描述所有公司的员⼯,需要描述的属性有:姓名,年龄,性别,部⻔,部⻔描述。
假设公司有3个部⻔,但是有一千万的员⼯,那意味着部⻔和部⻔描述这两个字段需要重复存储,部⻔名字和部⻔描述内容越⻓,越浪费内存,该如何处理?
解决办法:我们可以定义⼀个部⻔表然后让员⼯信息表关联该表,如何关联,即foreign key。
创建两张表:
被关联表:dep
create table dep(
id int primary key auto_increment,
dep_name varchar(20),
dep_desc varchar(200));
关联表:emp
create table emp(
id int primary key auto_increment,
name varchar(20),
age int,
gender enum('male','female'),
dep_id int not null,
foreign key(dep_id) references
dep(id));
级联删除、更新:
两张表建⽴关联之后,如果部⻔表某个部⻔被砍掉了,那对应的⼈员表中的那些部⻔的⼈员相应的该如何处理呢?可以保存,也可以随之⼀起删除。如果要保证两表⼀致,则需要在设置外键时添加on delete cascade,如果部⻔id更新了,要⼀起更新的话,则添加on update cascade。
被关联表:dep
create table dep001(
id int primary key auto_increment,
dep_name varchar(20),
dep_desc varchar(200));
关联表:emp
create table emp001(
id int primary key auto_increment,
name varchar(20),
age int,
gender enum('male','female'),
dep_id int not null,
foreign key(dep_id) references
dep001(id) on delete cascade on update
cascade
);
3.2.修改表
修改表名:
alter table 旧表名 rename 新表名
修改表字段的数据类型:
alter table 表名 modify 字段 新数据类型
修改表字段名:
alter table 表名 change 旧字段名 新字段名 新数据类型
新增字段:
alter table 表名 add 新增字段名 数据类型 约束条件#约束条件可选
删除字段:
alter table 表名 drop 字段名
3.3.查看所有的表
show tables;
3.4.删除表
drop table 表名;
使用`DROP`时需谨慎,它将从数据库中永久删除所选对象。
truncate table 表名;
`TRUNCATE`指令用于删除表中的所有行,但不删除表本身。与`DROP TABLE`相比,它删除数据的速度更快且效率更高。
4.用户
为了呼应后续继续写的内容,本节插入一段DCL相关内容。
创建用户 xyz , 只能够在当前主机localhost访问, 密码123456;
create user 'xyz'@'localhost' identified by '123456';
创建用户 abcd, 可以在任意主机访问该数据库, 密码123456 ;
create user 'abcd'@'%' identified by '123456';
修改用户 abcd 的访问密码为 5678;
alter user 'abcd'@'%' identified with mysql_native_password by '5678';
删除xyz@localhost用户
drop user 'xyz'@'localhost';
查询权限
show grants for 'abcd'@'%';
授予权限
grant all on xyz.* to 'abcd'@'%';
撤销权限
revoke all on xyz.* from 'abcd'@'%';
5.DDL在实际应用场景中的作用
5.1.数据库设计
在数据库设计阶段,通过使用DDL的`CREATE`指令创建数据库以及数据库内所需的表和其他对象,是数据库建设的初期步骤。
5.2.数据库维护
数据需求随时可能改变,使用`ALTER`指令可以针对现有数据库结构进行调整,如添加新列来存储额外信息,或者修改现有列的数据类型以适应数据格式的变化。
5.3.数据库迁移或重置
在数据库迁移或需要重置数据时,可能会使用到`DROP`指令删除旧的数据库对象或`TRUNCATE`指令清空表中的数据,以便重新开始或导入新的数据集。
5.4.优化性能
当数据库中的某些表不再需要时,使用`DROP`指令删除这些表可以帮助减少数据库的大小,从而提高整体性能。同样,使用`TRUNCATE`快速清空表中数据也是常见的优化手段之一。
5.5.小结
数据库DDL是数据库管理和维护的一项重要工具。通过熟练使用`CREATE`、`ALTER`、`DROP`和`TRUNCATE`等指令,DBA可以有效地控制和管理数据库的结构。每一条DDL指令针对的是数据库结构层面的操作,对于数据库设计、维护和优化等多个环节都有着至关重要的作用。尽管DDL操作通常由具有数据库设计经验的技术人员执行,了解这些基础的DDL操作对于任何希望深入理解数据库运作的人来说都是十分有益的。