DDL语句用于对数据库,表的管理
库的管理:
一、创建库
create database if not exists 库名
二、修改库
alter database 库名
三、删除库
drop database if exists 库名
表的管理:
一、创建表
create table if not exists 表名(
字段名 字段类型【约束】,
字段名 字段类型【约束】,
字段名 字段类型【约束】,….
)
二、修改表
1.添加列
alter table 表名 add column 列名 类型
2.修改列的类型或约束
alter table 表名 modify column 列名 新类型【新约束】
3.修改列名
alter table 表名 change column 旧列名 新列名 类型
4.删除列
alter table 表名 drop column 列名
5.修改表名
alter table 表名 rename 新表名
三、删除表
drop table if exists 表名
四、复制表
1.赋值表的结构
crate table 表名 like 旧表
2.赋值表的结构+数据
create table 表名
select 查询列表 from 旧表 where 筛选条件
数据类型
一、数值型
1.整型
tinyint 1子节
smallint 2子节
mediumint 3子节
int/integer 4子节
bigint 8子节
特点:
1.都可以设置无符号和有符号,默认有符号,通过unsigined设置无符号
2.如果超出了范围,会报out or range异常,会停留在临界值
2.浮点型
定点数:decimal(M,D)
浮点数:
float(M,D) 4子节
double(M,D)8子节
特点:
1.M代表整数部分+小数部分的个数,D代表小数位数
2.如果超出了范围,会报out or range异常,会停留在临界值
3.M和D都可以省略,但对于定点数,M默认为10,D默认为0
4.如果精度要求高,则有限考虑使用定点数
3.字符型
char:固定长度的字符,写法为char(M),最大长度不能超过M,其中M可以省略,默认为1
varchar:可变长度的字符,写法为varchar(M),最大长度不能超过M,M不能省略
4.日期型
year年
date日期
time时间
datetime日期+时间 8个子节
常见的约束
一种限制,用于限制表中的数据,为了保证表中的数据的准确性和可靠性
一、常见的约束
NOT NULL:非空,该字段的值必填
UNIQUE:唯一,该字段的值不可重复
DEFAULT:默认,该字段的值不用手动插入有默认值
PRIMARY KEY:主键,该字段的值不可重复并且非空 unique+notnull
FOREIGN KEY:外键,该字段的值引用了另外的表的字段
主键和唯一
1.区别:
①.一个表至多有一个主键,但可以有多个唯一
②.主键不允许为空,唯一可以为空
2.相同点:
都具有唯一性
都支持组合键,但不推荐
外键
1.用于限制两个表的关系,从表的字段引用了主表的某字段值
2.外键列和主表的被引用列要求类型一致
3.主表的被引用列要求是一个key
4.插入数据,先插入主表,删除数据,先删除从表
二、创建表时添加约束
create table 表名(
字段名 字段类型 not null,
字段名 字段类型 primary key,
字段名 字段类型 unique,
constraint 约束名 foreign key(字段名) references 主表(被引用列)
)
三、修改表时添加或删除约束
1.非空
添加非空
alter table 表名 modify column 字段名 字段类型 not null
删除非空
alter table 表名 modify column 字段名 字段类型
2.默认
添加默认
alter table 表名 modify column 字段名 字段类型 default 值
删除默认
alter table 表名 modify column 字段名 字段类型
3.主键
添加主键
alter table 表名 add primary key(字段名)
删除主键
alter table 表名 drop primary key
4.唯一
添加唯一
alter table 表名 add unique(字段名)
删除唯一
alter table 表名 drop index 索引名
四、自增长列
特点:
1.不用手动插入值,可以自动提供序列值,默认从1开始,步长为1
添加AUTO_INCREMENT
如果要更改起始值:手动插入值
如果要更改步长:set AUTO_INCREMENT = 值
2.一个表至多有一个自增长列
3.子增长列只支持数值型
4.子增长列必须为一个key