文章目录
目标:掌握创建、查看、修改和删除表
一、查看所有表
语法:
show tables;
二、创建表
语法:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name(
field datatype [约束] [comment '注解内容']
[, field datatype [约束] [comment '注解内容']] ...
) [engine 存储引擎] [character set 字符集] [collate 排序规则];
- 大写是关键字
- TEMPORARY:表示创建的是一个临时表
- TABLE:表示表
- tbl_name:自定义的表名
- field:列名
- datatype:数据类型
- []:表示可选项
- comment:对列的描述或说明
- engine:存储引擎,不指定则使用默认存储引擎
- character set:字符集,不指定则使用默认字符集
- collate:排序规则,不指定则使用默认排序规则
字符集和排序规则在博主的这篇博客中有教大家怎么去看链接在这里点击即可
数据类型
- 数值类型
类型 | 大小 | 说明 |
---|---|---|
BIG[(M)] | 默认比特 | 位值类型。M表示每个值的位数,取值范围为1 ~ 64。如果省略M,则默认为1。 |
TINYINT[(M)] | 1byte | 取值范围-27~27-1,无符号取值范围28-1。 |
BOOL | 1byte | TINYINT(1)的同义词。值为0被认为是假,非零值被认为是true。 |
SMALLINT[(M)] | 2byte | 取值范围-215~215-1,无符号取值范围216-1。 |
MEDIUMINT[(M)] | 3byte | 取值范围-223~223-1,无符号取值范围224-1。 |
INT[(M)] | 4byte | 取值范围-231~231-1,无符号取值范围232-1。 |
INTEGER[(M)] | 4byte | INT[(M)]的同义词。 |
BIGINT[(M)] | 8byte | 取值范围-263~263-1,无符号取值范围264-1。 |
FLOAT[(M,D)] | 4byte | 单精度浮点型,M是总位数,D是小数点后面的位数,大约可以精确到小数点后7位。 |
DOUBLE[(M,D)] | 8byte | 双精度浮点型,M是总位数,D是小数点后面的位数,大约可以精确到小数点后15位。 |
DECIMEAL[(M,D)] | 动态 | 不存在精度丢失,M是总位数,D是小数点后面的位数,DECIMEAL的最大位数[(M)]为65,最大小数位数(D)为30。如果省略M,则默认为10,如果省略D,则默认为0。M中不计算小数点和负数的符号。 |
- 字符串类型
类型 | 说明 |
---|---|
CHAR [(M)] | 固定长度字符串,M 表示长度,以字符为单位,取值范围0~255,M 省略则长度为1 |
VARCHAR[(M)] | 可变长度字符串, M 表示字符最大长度,的范围0~65535字节,有效字符个数取决于实际字符数和使用的字符集 |
TINYTEXT[(M)] | 小文本类型,最大长度为255(28-1)个字节,有效字符个数取决于使用的字符集 |
TEXT[(M)] | 文本类型,最大长度为65535(216-1)个字节,有效字符个数取决于使用的字符集 |
MEDIUMTEXT | 中文本类型,最大长度为16,777,215(224-1)个字节,有效字符个数取决于使用的字符集 |
LONGTEXT | 大文本类型,最大长度为4,294,967,295即4GB(232-1)个字符,有效字符个数取决于使用的字符集 |
BINARY[(M)] | 固定长度二进制字节,与CHAR 类似,但存储的是二进制字节而不是字符串。 M 表示长度,以字节为单位,取值范围0~255, M 省略则长度为1 |
VARBINARY(M) | 可变长度二进制字节,于 VARCHAR 类似,但存储的是二进制字节而不是字符串。 M 表示长度,以字节为单位 |
TINYBLOB | 小二进制字节类型,最大长度为255(28-1)个字节 |
BLOB [(M)] | 二进制字节类型,最大长度为65535(216-1)个字节 |
MEDIUMBLOB | 中二进制字节类型,最大长度为16,777,215(224-1)个字节 |
LONGBLOB | 大二进制字节类型,最大长度为4,294,967,295即4GB(28-1)个字节 |
ENUM (’ value1’,’ value2’,…) | 1.枚举 。2.从值列表’ value1’,‘value2’或’ '(空字符串)和 NULL 中选一个值。3.最多可以有65,535个不同的元素。4.单个元素的最大长度是 M <=255或( M x w )<=1020,其中 M 是元素字符长度, w 是字符集中字符所需的最大字节数。5.ENUM 的值在内部表示为整数。 |
SET (’ valuel ‘,’ value2’,…) | 1.集合。2.从值列表’ valuel ','value2’中选零个或多个值。3.最多64个元素。4.单个元素的最大长度是 M <=255或( M x w )<=1020,其中 M 是元素字符长度, w 是字符集中字符所需的最大字节数。5.SET 值在内部表示为整数 |
- 日期类型
类型 | 大小 | 说明 |
---|---|---|
TIMESTAMP[(fsp)] | 4 bytes | 1.时间戳类型.2.支持范围1970-01-01 00:00:01.000000-2038-01-19 03:14:07.499999。3.0值为0000-00-0000:00:00 |
DATETIME [(fsp)] | 8bytes | 1.日期类型和时间类型的组合。2.支持范围1000-01-01 00:00:00.000000~9999-12-31 00:00:00 23:59:59.499999。3.显示格式为 YYYY-MM-DD hh : mm : ss [. fraction]。4.0值为0000-00-0000:00:00 |
DATE | 3bytes | 1.日期类型。2.支持范围1000-01-01 ~ 9999-12-31。3.显示格式为 YYYY - MM - DD 。4.0值为0000-00-00 |
TIME [(fsp)] | 3bytes | 1.时间类型。2.支持范围-838:59:59.000000 ~ 838:59:59.000000。3.显示格式为 hh : mm : ss [. fraction]。4.0值为00:00:00 |
YEAR [(4)] | 1byte | 1.4位格式的年份。2.支持范围1901~2155。3.显示格式为 YYYY。4.0值为0 |
示例:
1.创建一个用户表,其中包含用户编号、用户名、密码、生日,并指定字符集为utf8mb4,排序规则为utf8mb4_0900_ai_ci
-- 创建一张示例表
create table users (
id bigint comment '编号',
name varchar(10) comment '姓名',
#列名如果是关键字,用单引号引起来
`password` char(32) comment '密码',
birthday date comment '生日'
)character set utf8mb4 collate utf8mb4_0900_ai_ci;
-- 单行注释
#单行注释
/*
多行注释
*/
2.创建一个表并指定存储引擎为MyISAM
create table t_myisam (
id bigint comment '编号',
name varchar(10) comment '姓名'
)engine MyISAM;
三、查看表结构
语法:
desc 表名;
查看创建表的语句
show create table tbl_name;
四、修改表
语法:
ALTER TABLE tbl_name [alter_option [, alter_option] ...];
alter_option: {
table_options
#新增列
| ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]
#修改列
| MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
#删除列
| DROP [COLUMN] col_name
#重命名列
| RENAME COLUMN old_col_name TO new_col_name
#重命名表
| RENAME [TO |AS] new_tbl_name
}
示例:
把之前建立的users表中的name字段的长度改成20
alter table users modify name varchar(20) comment '姓名';
五、删除表(非常危险,执行删除语句时一定要谨慎!!!)
语法:
#可以删除多个表,用逗号隔开
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...