#yyds干货盘点# 04 MySQL创建表

Posted 江下下啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点# 04 MySQL创建表相关的知识,希望对你有一定的参考价值。

一、表命令

1.查看所有表

show tables;

#yyds干货盘点#

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;

#yyds干货盘点#

上面的语句创建了一个名为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中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

#yyds干货盘点#

show engines;

#yyds干货盘点#

五、表命令(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的锁机制是如何实现的

#yyds干货盘点#mysql索引_效率测试(包含测试sql脚本300万条数据)

#yyds干货盘点# 要修改值和原值相等,MySQL还会再执行update吗?

省市县级联表(简化版) #yyds干货盘点#

#yyds干货盘点# MySQL的普通索引和唯一索引到底什么区别?

#yyds干货盘点#算法开启小码农双链表血脉