MySQL之库表操作详述(2)

#语法:
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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1732dc524f6450cc805cff0ba08a6311.html