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


约束

列约束

写在括号内部
  1. default 默认值 默认约束
    设置一个默认值
    不设置表示默认值为null
age int default 18,
  1. not null 非空约束
    不能是空值
    默认可以是空值
id varchar(20) not null
  1. unique 唯一约束
    该列必须有唯一值(一个unique的列可以有多个null,null与null不相等)
    默认情况下可以重复
id varchar(20) not null,
  1. 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)
);

建议

非空和默认写为列级约束,唯一,主键,外键,写表级约束

posted @ 2020-04-07 21:07  思绪﹀扰乱了情绪  阅读(137)  评论(0)    收藏  举报