#语法:
create table 表名(字段名1 类型[(宽度) 约束条件],字段名2 类型[(宽度) 约束条件],字段名3 类型[(宽度) 约束条件]);
#注意:
1. 在同一张表中,字段名是不能相同
2. 宽度和约束条件可选、非必须,宽度指的就是字段长度约束,例如:char(10)里面的10
3. 字段名和类型是必须的
show tables; #这是查看当前库下的所有表
describe 表名; #也可以写成desc 表名,这是查看表的结构
insert into 表名 values(填对应的数据); #这是向表里面插入数据
select 表名(字段)from 表名; #这是查看表中某字段的所有数据
select * from 表名; #这是查看表中所有字段的所有数据
3,MySQL的基础数据类型
3.1,整数类型:tinyint,smallint,mediumint,int,bigint
tinyint[(m)] [unsigned] [zerofill]
小整数,数据类型用于保存一些范围的整数数值范围:2**8
有符号:-128 ~ 127
无符号:0~ 255
PS: MySQL中无布尔值,使用tinyint(1)构造。
int[(m)][unsigned][zerofill]
整数,数据类型用于保存一些范围的整数数值范围:2**32
有符号:-2147483648 ~ 2147483647
无符号:0~ 4294967295
bigint[(m)][unsigned][zerofill]
大整数,数据类型用于保存一些范围的整数数值范围: 2**64
有符号: -9223372036854775808 ~ 9223372036854775807
无符号:0 ~ 18446744073709551615
注意:对于整型来说,数据类型后面的宽度并不是存储长度限度,而是显示长度限制
3.2,浮点型:
1.FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
定义:单精度浮点数(非准确小数值),m是整数部分总个数,d是小数点后个数。m最大值为255,d最大值为30,例如:float(255,30]
有符号: -3.402823466E+38 to -1.175494351E-38,
1.175494351E-38 to 3.402823466E+38
无符号: 1.175494351E-38 to 3.402823466E+38
精确度: **** 随着小数的增多,精度变得不准确 ****
2.DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
定义:双精度浮点数(非准确小数值),m是整数部分总个数,d是小数点后个数。m最大值也为255,d最大值也为30
有符号: -1.7976931348623157E+308 to -2.2250738585072014E-308
2.2250738585072014E-308 to 1.7976931348623157E+308
无符号: 2.2250738585072014E-308 to 1.7976931348623157E+308
精确度:****随着小数的增多,精度比float要高,但也会变得不准确 ***
3.decimal[(m[,d])] [unsigned] [zerofill]
定义:准确的小数值,m是整数部分总个数(负号不算),d是小数点后个数。 m最大值为65,d最大值为30。比float和double的整数个数少,但是小数位数都是30位
精确度:**** 随着小数的增多,精度始终准确 ****
对于精确数值计算时需要用此类型,decimal能够存储精确值的原因在于其内部按照字符串存储。
精度从高到低:decimal、double、float
decimal精度高,但是整数位数少,float和double精度低,但是整数位数多,float已经满足绝大多数的场景了,但是什么导弹、航线等要求精度非常高,所以还是需要按照业务场景自行选择,如果又要精度高又要整数位数多,那么你可以直接用字符串来存。
在使用时,m必须大于d,不然会报错
3.3,日期类型:date,time,datetime,timestamp,year
year:YYYY(范围:1901/2155)2018
date:YYYY-MM-DD(范围:1000-01-01/9999-12-31)例:2018-01-01
time:HH:MM:SS(范围:'-838:59:59'/'838:59:59')例:12:09:32
datetime:YYYY-MM-DD HH:MM:SS(范围:1000-01-01 00:00:00/9999-12-31 23:59:59 Y)例: 2018-01-01 12:09:32
timestamp:YYYYMMDD HHMMSS(范围:1970-01-01 00:00:00/2037 年某时)
常用写法:
create table t1(x datetime not null default now()); # 需要指定传入,空值时默认取当前时间
create table t2(x timestamp); # 无需任何设置,在传空值的情况下自动传入当前时间
3.4,字符串类型
CHAR 和 VARCHAR 是最常使用的两种字符串类型。
CHAR(N)用来保存固定长度的字符串,对于 CHAR 类型,N 的范围 为 0 ~ 255
VARCHAR(N)用来保存变长字符类型,对于 VARCHAR 类型,N 的范围为 0 ~ 65 535
CHAR(N)和 VARCHAR(N) 中的 N 都代表字符长度,而非字节长度。#CHAR类型
对于 CHAR 类型的字符串,MySQL 数据库会自动对存储列的右边进行填充(Right Padded)操作,直到字符串达到指定的长度 N。而在读取该列时,MySQL 数据库会自动将填充的字符删除。我们可以把sql——mode设置为 PAD_CHAR_TO_ FULL_LENGTH,就会显示填充的字符。#VARCHAR类型
VARCHAR 类型存储变长字段的字符类型,与 CHAR 类型不同的是,其存储时需要在前缀长度列表加上实际存储的字符,该字符占用 1 ~ 2 字节的空间。当存储的字符串长度小 于 255 字节时,其需要 1 字节的空间,当大于 255 字节时,需要 2 字节的空间。
length(字段) #查看该字段数据的字节长度
char——length(字段) #查看该字段数据的字符长度
3.5,枚举类型enum和集合类型set