数据定义语言
一、 库和表的管理(重点必会)
创建、修改、删除命令
create、alter、drop
1-1、 创建库
create database if not exists 数据库名;
1-2、 修改库(一般不修改)
字符集修改:alter database 库名 character set 字符集;
1-3、 删除库
drop database if exists 库名;
2-1、 创建表
create table 表名(
列名 列的类型【(长度)约束】,
列名 列的类型【(长度)约束】,
…
)
2-2、 修改表
(1)修改列名:
alter table 表名 change column 旧列名 新列名 类型;
(2)修改列的类型和约束:
alter table 表名 mudify column 列名 新类型/约束;
(3)添加列
alter table 表名 add column 列名 类型;
(4)删除列
alter table 表名 drop column if exists 列名;
(5)修改表名
alter table 表名 rename to 新表名;
2-3、删除表
drop table 表名;
2-4、显示库里所有表
show tables;
2-5、复制表结构(可跨库)
create table 复制的新表名 like 被复制表;
2-6、复制表结构和数据(可跨库)
create table 复制的新表名 as(as可省略) select * 或具体字段 from 被赋值表 where 筛选条件;
二、 常见数据类型介绍(了解)
1、 数值型
(1)整型
tinyint、smallint,mediumint、int/integer、bigint
1 2 3 4 8 字节
特点:默认有符号,unsigned设置无符号
(2)小数
定点数:dec(M,D)、decimal(M,D)
浮点数:flout(M,D)、double(M,D)
float 、double
4 8 字节
特点:M数值总位数
D小数点后保留多少位,结果位数多则四舍五入
定点数精确度更高
原则:选择类型越简单越好,保存数值长度越短越好
2、 字符型
较短文本:char、varchar
较长文本:text、blob(较长的二进制数据)
特点
char(M) M省略默认为1 固定长度字符 耗费空间 效率高
varchar(M) M不能省略 可变长度字符 节省空间 效率低
3、日期型
date 4字节 年月日
datetime 8 年月日时分秒 1000-9999 不受时区影响
timestamp 4 时间戳 1970-2038 受时区影响
time 3 时分秒
year 2 年
三、 常见约束(重点必会)
1、目的:保证数据的准确和可靠性
六大约束
not null
default
primary key
unique
check:mysql不支持
foreign key
2、添加约束的时机:
创建表或修改表
3、约束的添加分类:
(1) 列级约束
(2) 表级约束
一、创建表时添加约束
例如:
create table 表名(
字段名 字段类型 列级约束,
字段名 字段类型,
表级约束
)
表级约束:(注意约束写法)
CONSTRAINT pk PRIMARY KEY(id),
CONSTRAINT uq UNIQUE(name)
CONSTRAINT fk_name forgien key(外键) references 关联表(关联表主键)
查看表级约束
show index from 表名;
主键和唯一对比
主键:内容唯一性 不能为空 列只能有一个 不推荐组合使用
唯一:内容唯一性 能为空 列可不唯一 不推荐组合使用
外键
1、 要求在从表设置外键关系
2、 从表的外键列的类型和主表的关联列类型一致或兼容
3、 主表的关联列一般是key(主键或唯一)
4、 插入数据先插入主表再插入从表,删除顺序相反
二、修改表时添加约束
1、添加非空约束
列级约束
ALTER TABLE 表名 MODIFY COLUMN 列名 类型 约束;
表级约束
ALTER TABLE 表名 ADD 约束(字段名);
添加外键
ALTER TABLE 表名 ADD CONSTRAINT fk_name forgien key(外键) references 关联表(关联表主键)
四、 修改表时删除约束
1、 删除非空约束
alter table 表名 modify column 字段名 类型 null;
2、 删除默认约束
alter table 表名 modify column 字段名 类型;
3、 删除主键
alter table 表名 drop primary key;
4、 删除唯一
alter table 表名 drop index 唯一键名;
5、 删除外键
alter table 表名 drop foreign key 外键名;
标识列:auto_increment
自增长,不用手动插入,系统提供默认标识值
插入时直接写null或者不写
增长的步长默认为1,起始值默认为1
注意:至多有一个标识列;类型为数值型;
新建、修改表时设置标识列和删除标识列和约束类似;