DDL数据语言|库表管理(MySQL)
Posted 桃陉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DDL数据语言|库表管理(MySQL)相关的知识,希望对你有一定的参考价值。
目录
库的管理
∙ \\bullet ∙ 创 建 库 c r e a t e \\colorRed创建库create 创建库create
语法
:
c
r
e
a
t
e
d
a
t
a
b
a
s
e
[
i
f
n
o
t
e
x
i
s
t
s
]
库
名
;
\\colorVioletcreate \\ database \\ [if \\ not \\ exists] \\ 库名;
create database [if not exists] 库名;
其中加上 if not exists 可以有效的避免报错,提高容错性。
∙ \\bullet ∙ 修 改 库 a l t e r \\colorRed修改库alter 修改库alter
主要就是更改库的字符集操作
语法
:
a
l
t
e
r
d
a
t
a
b
a
s
e
库
名
c
h
a
r
c
t
e
r
s
e
t
字
符
集
;
\\colorVioletalter \\ database \\ 库名 \\ charcter \\ set \\ 字符集;
alter database 库名 charcter set 字符集;
∙ \\bullet ∙ 删 除 库 d r o p \\colorRed删除库drop 删除库drop
语法
:
d
r
o
p
d
a
t
a
b
a
s
e
[
i
f
e
x
i
s
t
s
]
库
名
;
\\colorVioletdrop \\ database \\ [if \\ exists ] \\ 库名;
drop database [if exists] 库名;
其中加上 if exists 可以有效的避免报错,提高容错性。
表的管理
∙ \\bullet ∙ 创 建 表 c r e a t e \\colorRed创建表create 创建表create
语法
:
c
r
e
a
t
e
t
a
b
l
e
表
名
(
字
段
名
类
型
[
(
长
度
)
约
束
]
,
.
.
.
)
;
\\colorVioletcreate \\ table \\ 表名(字段名 类型[(长度) 约束],...);
create table 表名(字段名类型[(长度)约束],...);
其中文章最后介绍了相关的类型以及约束。表的创建样例如下:
∙ \\bullet ∙ 修 改 表 a l t e r t \\colorRed修改表altert 修改表altert
核心语法
:
a
l
t
e
r
t
a
b
l
e
表
名
a
d
d
∣
m
o
d
i
f
y
∣
c
h
a
n
g
e
∣
d
r
o
p
c
o
l
u
m
n
列
名
[
列
类
型
约
束
]
;
\\colorVioletalter \\ table \\ 表名 \\ add|modify|change|drop \\ column \\ 列名[列类型 \\ 约束];
alter table 表名 add∣modify∣change∣drop column 列名[列类型 约束];
修改列名:alter table 表名 change column 旧列名 新列名 类型;
修改列的类型或约束:alter table 表名 modify column 列名 新类型;
添加新列:alter table 列名 add column 列名 类型;
删除列:alter table 列名 drop column 列名;
修改表名:alter table 旧表名 rename to 新表名;
示例:增加一列age年龄,并将id列名改为stuID。
∙ \\bullet ∙ 删 除 表 d r o p \\colorRed删除表drop 删除表drop
语法
:
d
r
o
p
t
a
b
l
e
[
i
f
e
x
i
s
t
s
]
表
名
;
\\colorVioletdrop \\ table \\ [if \\ exists] \\ 表名;
drop table [if exists] 表名;
∙ \\bullet ∙ 复 制 表 \\colorRed复制表 复制表
仅仅复制表的结构
语法
:
c
r
e
a
t
e
t
a
b
l
e
复
制
表
l
i
k
e
原
始
表
;
\\colorVioletcreate \\ table \\ 复制表 \\ like \\ 原始表;
create table 复制表 like 原始表;
复制表的结构+数据
语法
:
c
r
e
a
t
e
t
a
b
l
e
复
制
表
s
e
l
e
c
t
∗
f
r
o
m
旧
表
名
;
\\colorVioletcreate \\ table \\ 复制表 \\ select \\ * \\ from \\ 旧表名;
create table 复制表 select ∗ from 旧表名;
字段类型
我们选择类型的原则
为:所选择的类型越简单越好,能保存数值的类型越小越好。
整型
分类
:tinyint、smallint、mediumint、int/integer、bigint(分别占1,2,3,4,8字节)
注意事项
:
∙
\\bullet
∙ 我们一般使用 INT,它默认为有符号整型。当需要使用无符号整型时,在INT 后追加 UNSIGNED
关键字。
∙
\\bullet
∙ 超出范围后,报out of range
异常。
∙
\\bullet
∙ 如果不设置长度,会有默认长度,长度代表了显示的最大宽度,使用zerofill
关键字可以显示前面补充的0(但是只能对正数使用改关键字)。
示例:
小数型
小数型数据具体还可以再分为浮点型和定点型。
其中浮点型数据类型有float(M,D)
(4个字节)、double(M,D)
(8个字节)。M表示整数位数+小数位数,D表示小数位数,但是我们一般不去设置参数,我们直接让它自己进行判断。
其中定点型数据类型为decimal(M,D)
,它的范围与double相同,但是更精确。当我们不给它参数时,它会有默认值为(10,0)
示例:
字符型
字符型类型我们主要使用的是char(M)
与varchar(M)
,M表示最多的字符数。它们的比较如下:
类型 | 含义 | 是否节省空间 | 是否可以省略M | 性能 |
---|---|---|---|---|
char(M) | 固定长度字符,每次申请空间都为M个字符 | 否 | 可以,默认为1 | 相对较高 |
varchar(M) | 可变长度字符,按照情况动态申请空间 | 是 | 不可以 | 相对较低 |
其余还有一些字符型类型比如说:
binary
、varbinary
保存较短的二进制字符串
enum
用于保存枚举,只能选一个插入
set
用于保存集合,一次可以插入多个
日期型
日期型的类型主要有以下几个:
类型 | 字节 | 含义 |
---|---|---|
data | 4 | 表示日期 |
time | 3 | 表示时间 |
year | 1 | 表示年份 |
datatime | 8 | 表示时间+日期 |
timestamp | 4 | 表示时间+日期 |
注意
:timestamp 比datatime更加精确,它会显示当前时区的时间(随时区的变化而变化)。
约束类型
约束含义
:一种限制,用于限制表中的数据,为了保证表中的数据准确可靠性。
分类
约束的分类
:
NOT NULL
非空约束,保证该字段的值非空,比如:姓名、学号等;
DEFAULT
默认约束,保证该字段有默认值,比如:性别
PRIMARY KEY
主键约束,用于保证该字段的值具有唯一性并且非空,比如学号
UNIQUE
唯一 约束,用于保证该字段的值具有唯一性,可以为空,比如座位号,但是只能有一个空,否则就算重复了
CHECK
检查约束,mysql不支持,用来检查有无不符合的值
FOREIGN KEY
外键约束,用于限制两个表的关系,用于保证该字段的值必须来自主表关联列的值。在从表添加外键约束用于引用主表中某列的值。比如学生表的专业编号。
添加约束的时机
:设计表时、修改表时(在数据添加之前)
约束的添加分类
:
∙ \\bullet ∙ 列极约束:直接在字段名和类型后面追加约束类型,六大约束语法上都支持,但是外键约束没有效果
∙ \\bullet ∙ 表极约束:在各个字段的最后添加除了非空、默认,其他的都支持,一般表极约束只添加外键约束。
创建表时添加约束
使用列极约束:
使用表极约束:在各个字段的最后添加 [CONSTRAINT] 约束名 约束类型(字段名)
注意
:show index from … 查看表中的所有索引,包括主键、外键、唯一
修改表时添加约束
1.添加列级约束modify column,在列名后面接列类型、约束
2.添加表级约束 add,在列名后面接列类型、约束
修改表时删除约束
语法
:
a
l
t
e
r
t
a
b
l
e
表
名
d
r
o
p
约
束
约
束
名
\\colorVioletalter \\ table \\ 表名 \\ drop \\ 约束 \\ 约束名
alter table 表名 drop 约束 约束名
注意
主键约束和唯一约束的对比
:
类型 | 唯一性 | 是否允许为空 | 一个表中可以有几个 | 是否允许组合 |
---|---|---|---|---|
主键 | 保证 | 不允许 | 只能有一个 | 允许(不推荐) |
唯一 | 保证 | 允许 | 可以有多个 | 允许(不推荐) |
外键特点
:
1.在从表上设置外键关系
2.从表的外键列的类型与主表的外键列类型一致或兼容,名称无要求
3.主表的关联列必须是一个key(一般是主键或唯一键)
4.插入数据时,先插入主表后插入从表;删除数据时,先删除从表,后删除主表
以上是关于DDL数据语言|库表管理(MySQL)的主要内容,如果未能解决你的问题,请参考以下文章