mysql学习笔记-数据定义语言DDL
DDL(数据定义语言)
创建:create
修改:alter
删除:drop
一、库的管理
- 库的创建
CREATE DATABASE books;
CREATE DATABASE IF NOT EXISTS books; - 库的修改
RENAME DATABASE books TO newbook;(报错,这个命令应该适用于5.1.7到5.1.23版本)
更改库的字符集
ALTER DATABASE books CHARACTER SET gbk; - 库的删除
DROP DATABASE IF EXISTS books;
二、表的管理
- 表的创建
CREATE TABLE 表名(
列名 列的类型 【(长度)约束】,
列名 列的类型 【(长度)约束】,
列名 列的类型 【(长度)约束】,
…
列名 列的类型 【(长度)约束】
) - 表的修改
- 表的删除
- 查看表的信息:DESC book;
(1)表的创建
CREATE TABLE book(
id INT ,
bname VARCHAR(20) ,
price DOUBLE ,
authorId INT,
publishDate DATETIME
)
(2)表的修改
ALTER TABLE 表名 add|drop|modify|change column 列名 【列类型 约束】;
ALTER TABLE 表名 add 列名 类型 【first|after(新列位置) 字段名】;
1.修改列名
ALTER TABLE book CHANGE COLUMN publishdate pubDate DATETIME;
2.修改列的类型或约束
ALTER TABLE book MODIFY COLUMN pubDate TIMESTAMP;
3.添加新列
ALTER TABLE book ADD COLUMN annual DOUBLE;
4.删除列
ALTER TABLE book DROP COLUMN annual;
5.修改表名
ALTER TABLE book RENAME TO newbook;
(3)表的删除
DROP TABLE newbook;
DROP TABLE IF EXISTS newbook;
(4)表的复制
1.仅复制表结构
CREATE TABLE copy LIKE book;
2.复制表的结构+数据
CREATE TABLE copy2 SELECT * FROM book;
若只复制部分数据,只需添加筛选条件
三、常见的数据类型
数值型:
整型
小数
定点数
浮点数
字符型:
较短的文本:char、varchar
较长的文本:text、blob(较长的二进制数据)
日期型:
(1)整型:
类型 | 字节数 |
---|---|
tinyint | 1 |
smallint | 2 |
mediumint | 3 |
int/integer | 4 |
bigint | 8 |
特点:1.默认设置有符号数,无符号添加unsigned
2.如果插入数值超过整型范围,报异常
3.默认长度在不设置时代表显示的最大宽度,可配合zerofill使用填满
如何设置无符号和有符号
CREATE TABLE tab_int(
t1 INT ,
t2 INT UNSIGNED
);
无符号插入负数报错
(2)小数
1.浮点型
float(M,D)
double(M,D)
2.定点型
dec(M,D)
decimal(M,D)
3.M和D
M:整数位+小数位
D:小数部位
decimal中M默认为10,D默认为0
float和double根据插入的数值决定精度
4.
CREATE TABLE tab_float(
f1 FLOAT(5,2) ,
f2 DOUBLE(5,2) ,
f3 DECIMAL (5,2)
);
5.选择的类型越简单越好,保存数值的类型越小越好
6.精度要求较高,优先考虑定点数
(3)字符型
较短的文本:char、varchar
较长的文本:text、blob(较长的二进制数据)
binary和varbinary类型(用于保存较短的二进制):类似于char、varchar,但它们只用于二进制字符串
enum(用于保存枚举)类型:要求插入的值必须属于列表,若列表成员数为1-255,需用一个字节存储,1-65535需两个字节,最多需65535个成员
set类型(用于保存集合):和enum类似,可保存64个成员,但set类型可以一次选取多个成员,每8个成员需要一个字节
写法 | 最大的字符数 | 特点 | 空间的耗费 | 效率 | |
---|---|---|---|---|---|
char | char(M) | 255 | 固定长度的字符(M可省略,默认为1) | 比较耗费 | 高 |
varchar | varchar(M) | 65535(M不可省略) | 可变长度的字符 | 比较节省 | 低 |
(4)日期型
date:只保存日期
time:只保存时间
year:只保存年
datetime:保存日期+时间
timestamp:保存日期+时间