创建数据表
建表的语法格式
create table 表名
(
字段名字 数据类型 [列级别约束] [默认值],
字段名字2 数据类型 [列级别约束] [默认值]
....
[表级别约束]
);
- 创建测试数据库
create database test_db;
use test_db; - 创建表 tb_emp1
create table tb_emp1(
id int(11) ,
name varchar(25),
depId int(11),
salary float
);
- 使用show tables 查看这个数据库中的表
可以看到我们刚刚创建的表
列的约束
建表中的数据类型我们放到下一篇说
主键约束(primary key constraint)
创建主键有两种方式
- 方式1 在字段后面加约束
定义数据表tb_emp2
create table tb_emp2(
id int(11) primary key,
name varchar(25),
depId int(11),
salary float
);
- 方式二 在定义完所有主键之后指定表中的主键
定义数据表tb_emp3
create table tb_emp3(
id int(11),
name varchar(25),
depId int(11),
salary float,
primary key(`id`)
);
主键还可由多个字段组成
定义数据表tb_emp4
create table tb_emp4(
id int(11),
name varchar(25),
depId int(11),
salary float,
primary key(`id`,depId`)
);
id和depId 将会成为联合主键
外键约束(foreign key)
外键是用来在两个数据表之间建立联系的,一个表中可以有多个外键
主表:对于两张相关联关系的表而言,关联字段中主键所在的表为主表
从表:对于两张相关联关系的表而言,关联字段中外键所在的表为从表
语法
constraint 外键名 foreign key 字段名 references 主表名 主键列
示例
创建主表
create table tb_dept1(
id int primary key,
name varchar(36) not null,
location varchar(36));
创建从表
create table tb_emp5(
id int primary key ,
name varchar(36),
deptId int,
salary float,
constraint fk_emp_dept2 foreign key(deptId) references tb_dept1(id));
** 这里references 的字段必须是主表中的primary key 不然会创建失败,如下图**
非空约束 not null
语法格式
字段名 数据类型 not null
示例代码
create table tb_emp5(
id int primary key ,
name varchar(36) not null,
deptId int,
salary float);
其中 name字段的值不能为空
唯一约束 unique
表示该字段(列)的值是唯一的不能重复
语法格式
字段名 数据类型 unique
示例
create table tb_dept1(
id int primary key,
name varchar(36) unique,
location varchar(36));
默认约束
语法格式
字段名字 数据类型 default 符合前面定义的数据类型的默认值
示例
create table tb_emp7(
id int primary key ,
name varchar(36) not null,
deptId int default 111,
salary float);
自增 auto_increment
每当加入一条新数据字段值自动加 1
注意:一个字段只能有一个字段使用auto_increment ,而且这个字段必须是主键的一部分 (主键可以由多个字段组成)
create table user(
id int primary key auto_increment,
name varchar(16));
查看数据表的结构
describe 表名
简写
desc 表名
- field 字段名字
- type 数据类型
- null 是否为空
- key 索引是什么
- default 默认值
- extra 与字段有关的附加信息
show create table 表名
查看定义表的语句
修改表
修改表名
语法
alert table 旧表名 rename to 新表名
修改字段的数据类型
将 tb_dept1 name的varchar改成64
使用 modify
alter table 表名 modify 字段名 数据类型
修改字段名
语法格式
alter table 表名 change 字段名 新字段名 型数据类型
示例
如果不需要更改数据类型可以与原来一样,我这里修改成了text
可以发现 change也可以修改数据和modify一样
添加字段
语法格式
alter table 表名 add 字段名 数据类型
- alter table 表名 add 字段 数据类型 first # 将该字段添加到表的第一列
- alter table 表名 add 字段1 数据类型 after 字段2 # 将字段1添加到字段2后面
以上两个使用的比较少,
删除字段
语法格式
alter table 表名 drop 字段
更改表的存储引擎
语法格式
alter table 表名 engine=‘所支持的引擎类型’
删除外键约束
语法格式
alter table 表名 drop foreign key 约束名
tb_emp1 有个外键 fk_emp_dep1
可以看到当初建表时候的constraint foreign key 没有了
删表
语法格式
drop table 表名
drop table if exists 表名 (推荐的写法)