库的管理
创建库
CREATE DATABASE IF NOT EXISTS 库名;
修改库
更改库的字符集
ALTER DATABASE 库名 CHARACTER SET 字符集名;
删除库
DROP DATABASE IF EXISTS 库名;
表的管理
创建表
CREATE TABLE 【IF NOT EXISTS】 表名(
字段名 字段类型(长度) 约束,
字段名 字段类型(长度) 约束,
...
字段名 字段类型(长度) 约束
#长度、约束非必需
)
修改表
添加列
ALTER TABLE 表名 ADD COLUMN 列名 类型;
修改列的类型或约束
ALTER TABLE 表名 MODIFY COLUMN 列名 新类型 新约束;
修改列名
ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 类型;
删除列
ALTER TABLE 表名 DROP COLUMN 列名;
修改表名
ALTER TABLE 表名 RENAME TO 新表名;
删除表
DROP TABLE IF EXISTS 表名;
复制表
复制表的结构
CREATE TABLE 表名 LIKE 旧表;
复制表的结构+数据
CREATE TABLE 表名
SELECT 查询列表 FROM 旧表
WHERE 筛选条件;
数据类型
数值型
整型
特点:
- 都可以设置无符号和有符号,默认有符号,通过 unsigned 设置无符号
CREATE TABLE tab_int(
t1 INT,#有符号
t2 INT UNSIGNED#无符号
);
- 如果超出了范围,会报 out of range 异常,插入临界值
- 长度可以不指定,默认会有一个长度
长度代表显示的最大宽度,如果不够则左边用0填充,但需要搭配 zerofill,并且默认变为无符号整型。
CREATE TABLE tab_int(
t1 INT ZEROFILL,
);
浮点型
定点数:decima(M,D) 占用字节:M+2
浮点数:
float(M,D) 占用字节:4
double(M,D) 占用字节:8
特点:
- M代表整数部位+小数部位的个数,D代表小数部位
- 如果超出范围,则报 out of range 异常,并且插入临界值
- M和D都可以省略,但对于定点数,M默认为10,D默认为0
- 如果精度要求较高,则优先考虑使用定点数
字符型
char 和 varchar
用来保存MySQL中较短的字符串
- char:固定长度的字符,写法为char(M),最大长度不能超过M,其中M可以省略,默认为1。比较耗费空间,效率略高
- varchar:可变长度的字符,写法为varchar(M),最大长度不能超过M,其中M不可以省略。比较节省空间,效率略低
binary 和 varbinary
类似于char 和 varchar,不同的是他们包含二进制字符串而不包含非二进制字符串
text:保存较长的文本
blob:保存较大的二进制
enum
又称为枚举类,要求插入的值必须属于列表中指定的值之一
CREATE TABLE tab_char(
c1 ENUM('a','b','c')
)
set
和enum类型相似,里面可以保存0-64个成员。set可以一次选取多个成员,而enum只能选一个
日期型