#yyds干货盘点# 04 MySQL创建表
Posted 江下下啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点# 04 MySQL创建表相关的知识,希望对你有一定的参考价值。
一、表命令
1.查看所有表
show tables;
2.创建表
CREATE TABLE table_name (
column1_name data_type constraints,
column2_name data_type constraints,
....
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.创建一个用户表
CREATE TABLE users (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
birth_date DATE,
phone VARCHAR(11) NOT NULL UNIQUE
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
上面的语句创建了一个名为users的表,其中包含5个字段id
、name
、birth_date
和phone
。注意,每个字段后面都有一个数据类型声明,表示该字段将存储何种类型的数据,例如:整数、字符串、日期等。
二、mysql支持的常用数据类型
1.数字型
类型 | 说明 | 取值范围 | 存储需求 |
tinyint | 非常小的数据 | 有符值: -27 ~ 27-1 无符号值:0 ~ 28-1 | 1字节 |
smallint | 较小的数据 | 有符值: -215~ 215-1 无符号值: 0 ~ 216-1 | 2字节 |
mediumint | 中等大小的数据 | 有符值: -223~ 223-1 无符号值: 0 ~ 224-1 | 3字节 |
int | 标准整数 | 有符值: -231~ 231-1 无符号值:0 ~ 232-1 | 4字节 |
bigint | 较大的整数 | 有符值: -263~263-1 无符号值:0 ~264-1 | 8字节 |
float | 单精度浮点数 | ±1.1754351e -38 | 4字节 |
double | 双精度浮点数 | ±2.2250738585072014e -308 | 8字节 |
decimal | 字符串形式的浮点数 | decimal(m, d) | m个字节 |
单精度和双精度不同
1、在内存中占有的字节数不同
2、有效数字位数不同
3、所能表示数的范围不同
2.字符串
类型 | 说明 | 最大长度 |
char[(M)] | 固定长字符串,检索快但费空间, 0 <= M <= 255 | M字符 |
varchar[(M)] | 可变字符串 0 <= M <= 65535 | 变长度 |
tinytext | 微型文本串 | 28–1字节 |
text | 文本串 | 216–1字节 |
3.日期
类型 | 说明 | 取值范围 |
DATE | YYYY-MM-DD,日期格式 | 1000-01-01~ 9999-12-31 |
TIME | Hh:mm:ss ,时间格式 | -838:59:59~838:59:59 |
DATETIME | YY-MM-DD hh:mm:ss | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 |
TIMESTAMP | YYYYMMDDhhmmss 格式表示的时间戳 | 197010101000000 ~ 2037年的某个时刻 |
YEAR | YYYY格式的年份值 | 1901~2155 |
三、MySQL支持的常用约束
修饰符 | 描述 |
primary key | 主键 |
not null | 非空 |
unique | 唯一 |
default | 默认 |
foreign key | 外键 |
四、存储引擎
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
show engines;
五、表命令(crud)
1.查看表结构
desc 表名;
2.查看表的创建语句
show create table 表名;
3.更改表名称
rename table 原表名 to 新表名;
4.修改表
alter table 表名 add|change|drop 列名 类型;
alter table users add age int default 1;
alter table users add user_desc varchar(50) default 哈哈;
alter table users change user_desc userdesc varchar(50);
alter table users drop userdesc
5.删除表
drop table 表名;
六、更新约束
1.先创建一个表,除了主键,不加其他约束。
CREATE TABLE users1 (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
birth_date DATE,
phone VARCHAR(11)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.给手机号添加唯一约束
ALTER TABLE users1 ADD UNIQUE (phone);
3.删除唯一约束
ALTER TABLE users1 DROP INDEX phone;
4.给名字添加非空约束
ALTER TABLE users1 modify name VARCHAR(50) not null;
5.删除非空约束
ALTER TABLE users1
CHANGE COLUMN `name` `name` VARCHAR(50) NULL ;
6.给生日添加默认约束
ALTER TABLE users1 ALTER birth_date SET DEFAULT 1992-05-11;
7.删除默认约束
ALTER TABLE users1 ALTER birth_date DROP DEFAULT;
以上是关于#yyds干货盘点# 04 MySQL创建表的主要内容,如果未能解决你的问题,请参考以下文章
#yyds干货盘点#mysql索引_效率测试(包含测试sql脚本300万条数据)
#yyds干货盘点# 要修改值和原值相等,MySQL还会再执行update吗?