mysql学习笔记-数据定义语言DDL

DDL(数据定义语言)

创建:create
修改:alter
删除:drop

一、库的管理

  1. 库的创建
    CREATE DATABASE books;
    CREATE DATABASE IF NOT EXISTS books;
  2. 库的修改
    RENAME DATABASE books TO newbook;(报错,这个命令应该适用于5.1.7到5.1.23版本)
    更改库的字符集
    ALTER DATABASE books CHARACTER SET gbk;
  3. 库的删除
    DROP DATABASE IF EXISTS books;

二、表的管理

  1. 表的创建
    CREATE TABLE 表名(
    列名 列的类型 【(长度)约束】,
    列名 列的类型 【(长度)约束】,
    列名 列的类型 【(长度)约束】,

    列名 列的类型 【(长度)约束】
    )
  2. 表的修改
  3. 表的删除
  4. 查看表的信息: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:保存日期+时间
mysql学习笔记-数据定义语言DDL