表操作SQL
学习目标
- 掌握表操作的SQL语法
1. 创建表的基础语法
语法:
create table 表名 (
列名1 数据类型,
列名2 数据类型,
列名3 数据类型
......,
列名n 数据类型
);
案例:
create table user_info (
user_id int(11),
user_name varchar(30),
user_age int(3)
);
解释:
- 创建一张数据表,名为user_info
- 表里有4个列,分别为:
- user_id列为int类型,长度11;
- user_name列为varchar类型,最大字符长度为30;
- user_age列为int类型,长度为3;
注意:
- 在同一个数据库里,表名不可重复
- 每一个字段末尾以英文逗号分隔,最后一个字段不加逗号,整段语句最后以分号结尾
- 每一个字段的数据类型需要符合业务实际情况,不可随意取名
2. 创建表设置[约束]
① 带[单一主键约束]
语法1:
create table 表名 (
列名1 数据类型 primary key,
列名2 数据类型,
列名3 数据类型,
......,
列名n 数据类型
);
案例:
create table user_info (
user_id int(11) primary key,
user_name varchar(30),
user_age int(3)
);
效果:创建表的同时,将user_id列设置为单一主键
语法2:
create table 表名 (
列名1 数据类型,
列名2 数据类型,
列名3 数据类型,
......,
列名n 数据类型,
primary key(某列名)
);
案例:
create table user_info (
user_id int(11),
user_name varchar(30),
user_age int(3),
primary key(user_id)
);
效果:创建表的同时,将user_id列设置为单一主键② 带[复合主键约束]
语法:
create table 表名 (
列名1 数据类型,
列名2 数据类型,
列名3 数据类型,
......,
列名n 数据类型,
primary key(某列名1,某列名2,...,某列名n)
);
案例:
create table user_info (
user_id int(11),
user_name varchar(30),
user_age int(3),
primary key(user_id,user_name)
);
效果:创建表的同时,将user_id和user_name两列,共同设置为一个联合主键③ 带[唯一约束]
语法:
create table 表名 (
列名1 数据类型 unique,
列名2 数据类型,
列名3 数据类型,
......,
列名n 数据类型
);
案例:
create table user_info (
user_id int(11) unique,
user_name varchar(30),
user_age int(3)
);
效果:创建表的同时,将user_id加上唯一约束③ 带[默认值约束]
语法:
create table 表名 (
列名1 数据类型 default '值',
列名2 数据类型,
列名3 数据类型,
......,
列名n 数据类型
);
案例:
create table user_info (
user_id int(11),
user_name varchar(30),
user_age int(3) default '18'
);
效果:创建表的同时,将user_age设置默认值为18④ 带[非空约束]
语法:
create table 表名 (
列名1 数据类型 not null,
列名2 数据类型,
列名3 数据类型,
......,
列名n 数据类型
);
案例:
create table user_info (
user_id int(11),
user_name varchar(30) not null,
user_age int(3)
);
效果:创建表的同时,将user_name设置不能为空3. 创建表时,带[自增]属性
语法:
create table 表名 (
列名1 数据类型 primary key auto_increment,
列名2 数据类型,
列名3 数据类型,
......,
列名n 数据类型
);
案例:
create table user_info (
user_id int(11) primary key auto_increment,
user_name varchar(30),
user_age int(3)
);
效果:创建表的同时,将user_id设置为主键,并且自增注意:每张表只允许有一列自增,且该列必须为主键
4. 创建表时,带[备注]属性
语法:
create table 表名 (
列名1 数据类型 comment '备注字',
列名2 数据类型,
列名3 数据类型,
......,
列名n 数据类型
);
案例:
create table user_info (
user_id int(11) comment '用户编号',
user_name varchar(30),
user_age int(3)
);
效果:创建表的同时,将user_id设置一个备注为“用户编号”注意:备注字需要用引号包裹
5. 创建表时,带[存储引擎和编码]属性
语法:
create table 表名 (
列名1 数据类型,
列名2 数据类型,
列名3 数据类型,
......,
列名n 数据类型
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
案例:
create table user_info (
user_id int(11),
user_name varchar(30),
user_age int(3)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
效果:将该表的的存储引擎设置为InnoDB,将字符编码设置为utf86. 综合使用
案例:
create table user_info (
user_id int(11) auto_increment comment '用户编号',
user_name varchar(30) unique comment '用户姓名',
user_age int(3) default '18' not null comment '用户年龄',
primary key(user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
7. 查看全部表
语法:show tables;
解释:返回当前库里所有的表名称
8. 查看表结构
语法:desc 表名;
案例:desc user_info;
解释:返回user_info表的表结构信息
9. 删除指定表
语法:drop table 表名;
案例:drop table user_info;
解释:删除user_info表