文章目录
DDL语言
- DDL语言:数据定义语言
库和表的管理
- 库的管理
创建、修改、删除 - 表的管理
创建、修改、删除
- 创建: create
- 修改: alter
- 删除: drop
1. 库的管理
1. 库的创建
语法:
create database [if not exists]库名;
[if not exists]:为选填字段,表示如果库已经存在就不再创建
-
案例:创建库Books
create database if not exists books ;
2. 库的修改
- 数据库一般不修改,因为修改容易导致数据库数据的丢失。
可以更改库的字符集
alter database 库名 character set 字符集;
字符集原来默认是UTF-8改为gbK
alter database books character set gbk;
3. 库的删除
- 语法
drop database 【if exists】 库名;
【if exists】:为选填字符表示,如果存在就删除该库。
drop database if exists books;
2. 表的管理
1.表的创建 ★
- 语法:
create table 表名
(
列名 列的类型(长度) 【约束】,
列名 列的类型(长度) 【 约束】,
...
列名 列的类型(长度) 【 约束】
)
- 案例:创建表Book
create table book
(
id INT, #编号
bName VARCHAR(20), #图书名
price DOUBLE, #价格
authorId INT, #作者编号
publishDate DATETIME #出版日期
);#后为注释
2.表的修改 (对表内的列进行操作)
- 语法
alter table 表名
{change(改变名)|modify(修改)|add(添加)|drop(删除)}
column 列名
【列类型 约束】;
①修改列名
- 语法:
alter table 表名 change column 列名 新列名 列类型 ;
alter table book change column publishdate pubDate DATETIME;
②修改列的类型或约束
- 语法:
alter table 表名 modify column pubdate 新类型 ;
③添加新列
- 语法:
alter table 表名 add column 新列名 类型;
- 在author表中添加新列名为年薪。
alter table author add column annual double ;
④删除列
- 语法:
alter table 表名 drop column 要删的列名 ;
alter table book_author drop column annual;
⑤修改表名
- 语法:
alter table 表名 rename to 新表名 ;
- 将author表名修改为book_author
alter table author rename to book_author ;
3.表的删除
drop table 【if exists】 表名 ;
【if exists】:如果表存在,则删除。
drop table if exists book_author;
通用的写法:
drop database if exists 旧库名;
create database 新库名;
drop table if exists 旧表名;
create table 表名();
4.表的复制
1. 仅仅复制表的结构
- 语法:
create table 新表 LIKE 待复制的表 ;:复制表a为新标
- 复制表auther的结构给新标copy
create table copy LIKE author ;
2. 复制表的 结构+数据
- 语法:
create table 新表
select * from 待复制的表 ;
- 复制表auther的数据给新标copy2
create table copy2
select * from author;
1. 只复制部分数据
举例
create table copy3
select id,au_name
from author
where nation='中国';
2. 仅仅复制某些字段
举例
create table copy4
select id,au_name
from author
where 0;
创建表的约束
含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性
六大约束
- not null :非空,用于保证该字段的值不能为空
比如姓名、学号等 - default :默认,用于保证该字段有默认值
比如性别 - primary key:主键,用于保证该字段的值具有唯一性,并且非空
比如学号、员工编号等 - unique:唯一,用于保证该字段的值具有唯一性,可以为空
比如座位号 - ckeck:检查约束,用于加选择条件,可有满足你所给定的条件中的项才可以【mysql中不支持】
比如性别只能是你所给定男或女中的一个 - foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的联列的值(表1中的某字段必须来源于表2,约束字段要添加在表1中)
在从表添加外键约束,用于引用主表中某列的值
比如学生表的专业编号,员工表的部门编号,员工表的工种编号
添加约束的时机:(数据添加之前)
1.创建表时
2.修改表时
- 约束的添加分类:
- 列级约束:
六大约束语法上都支持,但外键约束没有效果 - 表级约束:
除了非空、默认,其他的都支持
- 列级约束:
语法:
create table 表名
(
字段名 字段类型 列级约束,
字段名 字段类型,
表级约束
)
直接在字段名和类型后面追加 约束类型即可。
只支持:默认、非空、主键、唯一
1.添加列级约束
create table stuinfo
(
id int primary key, #主键
stuName varchar(20) not null quitue, #非空
gender char(1) check(gender='男' OR gender ='女'),#检查
seat int unique ,#唯一
age int default 18,#默认约束
majorId int references major(id) #外键
);
2.添加表级约束
语法:在各个字段的最下面
【constraint 约束名】 约束类型(字段名)
drop table if exists stuinfo;
CREATE TABLE stuinfo
(
id INT,
stuname VARCHAR(20),
gender CHAR(1),
seat INT,
age INT,
majorid INT,
constraint pk primary key(id),#主键
constraint uq unique(seat),#唯一键
constraint ck check (gender ='男' OR gender = '女'),#检查
constraint fk_stuinfo_major foreign key (majorid) references major(id)#外键
);
本文详细介绍了数据库的创建、修改和删除操作,以及表的管理,包括创建、修改、删除和复制。讨论了DDL语言在数据库和表级别的应用,如创建表的约束、修改列名和类型、添加新列、删除列以及表的复制。同时,文章讲解了数据约束的重要性,如非空、默认、主键、唯一和外键约束。
5975

被折叠的 条评论
为什么被折叠?



