DML数据定义语句
1.查看数据库
show databases like '模糊匹配';
2.查看表
show tables like '模糊匹配';
3.使用一个数据库
use 数据库名
4.建库
create database 库名 [charset utf8]
5.删库
drop database 库名
或者
drop database [if exists 库名];
6.建表
create table 表(
列1 数据类型1 标识列 列约束1 comment '描述信息',
列2 数据类型2 标识列 列约束2 comment '描述信息',
...
表约束
)[engine=数据库引擎名][charset = 字符集名]
根据其他表的结构建表
create table 表名 like 其他表
根据查询语句建表
create table 表名 查询语句;
4,删表
drop table 表名;
drop table [if exists 表名];
字符
定长 char 255
变长 varchar 255
tinytext 变长 255
mediumtext变长 255
text 变长 255
longtext 变长 255
数值
boolean(bool) 0/1
float 很大
double 很大
decimal(dec) 精确 dec(有效数字位数,保留小数点后位数) 默认有效10位,保留0位
bit 最大64b
tinyint -128~127
smallint -32768~32767
mediumint -8388608~8388607
int(integer) -2147483648~2147483647
bigint 很大
集合
set
枚举
enum
日期
date 格式 yyyy-MM-DD 范围 1000-01-01 ~ 9999-12-31
time 格式 HH:MM:SS
datetime格式 yyyy-MM-DD HH:MM:SS
timestamp 时间戳 范围小
year 格式 yyyy或yy 范围1901-2155 或 70(1970)-69(2069)
二进制
tinyblob 最大 255 byte
blob 最大 64 kB
mediumblob 最大 16 MB
longblob 最大 4 GB
列约束
写在括号内部
- default 默认值 默认约束
设置一个默认值
不设置表示默认值为null
age int default 18,
- not null 非空约束
不能是空值
默认可以是空值
id varchar(20) not null
- unique 唯一约束
该列必须有唯一值(一个unique的列可以有多个null,null与null不相等)
默认情况下可以重复
id varchar(20) not null,
- primary key 主键约束
主键:相当于not null 和unique的组合,不能是空值且必须有值,列约束里只能有一个主键,但是表约束里可以有多个形成复合主键,但只有第一个是主键,其他是辅助主键
默认情况下没有主键
id varchar(20) primary key,
5.check 检查约束
用于检查字段的值是否符合条件,mysql不支持也不报错,oracle支持
age int not null check(age>0 and age<100);
comment 列描述信息
comment "描述性文字",
通过查看建表语句可以看到
show create table 表名;
表约束
写在括号里的最后
1. 唯一约束 (括号里可以有多个字段,但只有第一个识别)
格式:
[constraint 自定义约束名] unique(约束字段),
举例:
unique(id)
2. 主键约束
格式:[constraint 自定义约束名] primary key(约束字段)
这里约束字段可以多个构成复合主键
复合主键:
一个表的多个字段来确定当前行的唯一性
联合主键:
多个表有相同名称的主键,以便联合查询
举例:
primary key(主键字段,辅助主键字段...)
3. 外键约束
格式:
[constraint 自定义约束名] foreign key(约束字段) reference 其他表(字段)
约束字段引用其他表的主键,而且二者的数据类型必须匹配
外键约束标识,该字段的引用值必须在外表的某一个的字段之中,
建表时候,先建被引用表再建引用表
删表时候,先删引用表再删被引用表
举例:
foreign key(id) reference source(id);
标识列
对于某一列进行标识
auto_increment 可以放在约束的前后
自动增长,必须在unique或者primary key或者外键 一起用,且最多只有一个,只能是列级约束
举例:
order int unique auto_increment;
类型约束只能紧跟着类型或者其他类型约束
unsigned
无符号,对数值有效,相当于增大了数值的范围
举例:
order int unsigned unique;
类型约束只能紧跟着类型或者其他类型约束
zerofill
零填充对,数值有效,自动使用无符号,需要整数类型进行宽度最大指定
举例:
order int(3) zerofill unique;
建表语句举例
创建一个包含,序号,学号,姓名,性别,QQ字段的表
列级约束表示
drop table if exists abc;
create table if not exists abc(
indexs int(3) unsigned zerofill auto_increment unique comment '序号自动增长',
id varchar(20) primary key comment '学号是主键',
name varchar(10) not null comment '名字不能是空的',
gender bool default 1 comment '性别默认是男',
QQ varchar(12) unique comment 'QQ号必须唯一'
);
表级约束表示
create table if not exists abc(
indexs int(3) unsigned zerofill auto_increment comment '序号自动增长',
id varchar(20) comment '学号是主键',
name varchar(10) not null comment '名字不能是空的',
gender bool default 1 comment '性别默认是男',
QQ varchar(12) comment 'QQ号必须唯一',
unique(QQ,indexs),
primary key(id)
);
非空和默认写为列级约束,唯一,主键,外键,写表级约束

浙公网安备 33010602011771号