创建数据表
CREATE TABLE 表名(
列名 类型 [约束],
列名 类型 [约束]
... );
注意:在MySQL中,大小写不敏感,即关键字大写还是小写都是可以且效果是一样的
常用类型
数值型
名称 |
字节 |
说明 |
int |
4 |
|
bigint |
8 |
|
double |
double(M,D) |
double(M,D):表示最长为M位,其中小数点后D位 例如:double(5,2)表示的数据范围[-999.99,999.99],如果超过这个范围会报错。 |
字符型
名称 |
字节 |
说明 |
char |
char(M) |
字符类型,且长度为M,不足M的,用空格填充 例如:char(11) char如果没有指定宽度,默认为1个字符 |
varchar |
varchar(M) |
字符类型,最大长度为M,不足M的,按照实际的大小占用空间,例如:varchar(32) varchar |
时间类型
名称 |
说明 |
date |
日期类型 格式为 YYYY-MM-DD 例如:2021-05-10 |
time |
时间类型 格式为 HH:MM:SS 例如:17:47:30 |
datetime |
日期时间类型 是date 与time的结合 格式为 YYYY-MM-DD HH:mm:ss 例如: 2021-05-10 17:48:31 |
常用约束
约束 |
约束关键字 |
说明 |
主键 |
primary key |
非空且唯一,并且一张表只能有一个主键 |
唯一 |
unique |
唯一,当前列不能出现相同的数据 |
非空 |
not null |
非空,当前列不能为null |
默认 |
default |
如果当前列没有数据,则指定默认数据 |
注意:
1. 先设置了primary key 再能设置auto_increment
2. 只有当设置了auto_increment 才可以插入null , 否则插入null会报错
举例
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT, -- 主键自增长
NAME VARCHAR(30) UNIQUE, -- 唯一约束
gender CHAR(1) NOT NULL DEFAULT ‘男‘
);
查看所有的数据表
show tables;
查看表的定义结构
desc 表名;
-- 例如:
desc student;
修改表
增加一列
alter table [数据库名.]表名称 add [column] 字段名 数据类型;-- 添加到最后
alter table [数据库名.]表名称 add [column] 字段名 数据类型 first;-- 添加到第一列
alter table [数据库名.]表名称 add [column] 字段名 数据类型 after 另一个字段;-- 添加到某一列的前面
修改列的类型约束
alter table 表名 modify 字段 类型 约束 ;
修改列的名称,类型,约束
alter table 表名 change 旧列 新列 类型 约束;
删除一列
alter table 表名 drop 列名;
修改表名
rename table 旧表名 to 新表名;
删除表
drop tale 表名;
案例
- 给学生表增加一个grade字段,类型为varchar(20),不能为空
ALTER TABLE student ADD grade VARCHAR(20) NOT NULL;
- 给学生表的gender字段改成int类型,不能为空,默认值为1
alter table student modify gender varchar(20);
ALTER TABLE student CHANGE grade class VARCHAR(20) NOT NULL;
ALTER TABLE student DROP class;
RENAME TABLE student TO teacher;
drop table teacher;
MySQL-Table