一、创建表
create table 表名(字段名1 数据类型,字段2 数据类型,字段3 数据类型);
create table t_student(no int,name varchar(32),sex char(1) default 'm');
可以使用default给定默认值,表名建议以t_或者tbl_开头,可读性强
也可以将查询结果当作一张表,表和数据都有:create table emp2 as select * from emp;
查询某一列的结果当作一张表,新建:create table my_table as select ename,empno from emp where job='MANAGER';
二、创建约束
1.非空约束
not null,not null约束的字段不能为空
create table t_vip(id int,name varchar(255) not null);
not null只有列级约束,没有表级约束。
2.唯一性约束
单一字段
unique,约束的字段不能重复,但可以为null。
create table t_vip(id int,name varchar(255) unique);
直接添加在列后面的约束叫列级约束
两字段联合唯一
假如name和email联合唯一,则数据'Zhangsan','Zhangsan@123.com' 和数据'Zhangsan','Zhangsan@sina.com'是可以的。两个字段都一样才会被约束。
create table t_vip(id int,name varchar(255),email varchar(255),unique(name,email)); 这种约束叫表级约束。
注意:not null约束和unique约束可以联合使用,在mysql中一个字段如果同时具有not null和unique约束,则该字段自动称为主键字段
3.主键约束
primary key,简称PK
注意:主键值是每一行记录的唯一标识。如果其他数据都一样,主键值不同的话也是两条不同的数据。任何一张表都有主键,没有主键表无效。一张表只能添加一个主键。
主键的特征:not null 且unique,不能是空且不能重复。主键值一般都是数字,定长的,不建议使用varchar类型。建议使用自然主键,即自然数,与业务无关。
create table t_vip(id int primary key,name varchar(255));
也可以使用表级约束写法:
create table t_vip(id int,name varchar(255),primary key(id));
主键值可以采用自增的方式生成
create table t_vip(id int primary key auto_increment,name varchar(255));
insert into t_vip(name) values('zhangsan');
insert into t_vip(name) values('zhangsan');
insert into t_vip(name) values('zhangsan');
insert into t_vip(name) values('zhangsan');
insert into t_vip(name) values('zhangsan');
insert into t_vip(name) values('zhangsan');
虽然没有给id值,但id值自增。
4.外键约束
foreign key,简称FK
学生和班级两张表,如果cno字段没有约束,会产生无效数据如102,103等。
被引用的表为父表(班级表),引用的称为子表(学生表)。创建时先创建父表,删除先删子表。添加了外键约束的子表外键值只能是父表中外键字段的值,否则会报错。
create table t_class(
classno int primary key,
classname varchar(255)
);
create table t_student(
no int primary key atuo_increment,
name varchar(255),
cno int,
foreigin key(cno) references t_class(classno)
);
外键值可以为null,在父表中被引用的字段必须具有unique属性,不一定是主键。
5.检查约束
check
MySQL不支持,oracle支持
三、MySQL中的常见数据类型
1.varchar
可变长度字符串,最长255,即varchar(255)。可根据实际数据动态分配空间。可节省空间,但相较于char效率变低。
2.char
定长字符串,最长255,即char(255)。不管实际数据长度是多少,分配固定长度空间存储数据。
3.int
数字中的整数型,最长11,即int(11)
4.bigint
数字中的长整型
5.float
单精度浮点型
6.double
双精度浮点型
7.date
短日期类型,包括年月日。MySQL短日期默认格式:%Y-%m-%d
8.datetime
长日期类型,包括年月日时分秒.MySQL长日期默认格式:%Y-%m-%d %h:%i:%s
9.clob
字符大对象,最多可以存储4个G的字符串,比如存储一篇文章或说明等。超过255个字符的都要使用clob。
10.blob
用来存储图片、声音、视频等流媒体数据。往blob类型的字段上插入数据时需要使用IO流。
四、删除表
drop table 表名;
或者
drop table if exists 表名; 这种语句不会报错