一 ,字段特殊标识
PK:Primary Key 主键 唯一标识
NN:Not Null 值不允许为空
UQ:Unique 值唯一 索引
B: Binary 二进制数据(比text更大的二进制数据)
UN:Unsigned 无符号 整数(非负数)
ZF:Zero fill 自动填充0 例如字段内容是1 int(4), 则内容显示为0001
AI:Auto increment 自增
G: Generated column 生成列
二 ,DataType 数据类型
整数浮点数类型
int 整数 4字节
float 浮点数 4字节
bigint 整数 8字节
double 浮点数 8字节
字符串类型
char(len)字符串 len长度范围 取0~~255的任意值
varchar(len)字符串 取0~65535之间的任意值
布尔类型
tinyint(1)布尔值
时间类型
year 年
data 年月日
time 时分秒
datatime 年月日时分秒
三,SQL语句
查询数据
select * from 表名称 查询所有数据
select 列名称 from 表名称 查询列的数据
select 列名称,列名称 from 表名称 查询多个列的数据
插入数据
insert into 表名称 (列名称,列名称) values (值,值)
注意插入值的是什么类型
更新数据
update 表名称 set 列名称 = 新值 where 列名称 =某值
update 表名称 set 列名称 = 新值,列名称 = 新值 where 列名称 =某值
更新多个数据
删除数据
update from 表名称 where 列名称 = 值
四,WHERE子句可用运算符
= != > >= < <= BETWEEN某个范围 LIKE搜索某种模式
AND是 与&& OR是或 ||
五,排序 ORDER BY
order by
默认升序 select * from users order by id asc
降序 select * from users order by id desc
多重排序 select * from users order by id asc ,username desc
六,SQL的Count(*)函数
select count(*) from 表名 where 条件
用于统计查询结果的条数
七,如何选择数据类型
1 整数类型和浮点数类型
整数类型和浮点数类型最大的区别在于能否表达小数。整数类型不能表示小数,而浮点数类型可以表示小数。不同的整数类型的取值范围不同。tinyint类型的取值范围为0~255。如果字段的最大值不超过255,那选择tinyint类型就足够了。bigint类型的取值范围最大。最常用的整数类型是INT类型。
浮点数类型包括float类型和 double类型。double类型的精度比float类型高。如果需要精确到小数点后10位以上,就应该选择double类型,而不应该选择float类型。
2 浮点数类型和定点数类型
对于浮点数和定点数,当插入值的精度高于实际定义的精度时,系统会自动进行四舍五入处理。其目的是为了使该值的精度达到要求。浮点数进行四舍五入时系统不会报警,定点数会出现警告。
在未指定精度的情况下,浮点数和定点数有其默认的精度。float型和 double型默认会保存实际精度。这个精度与操作系统和硬件的精度有关。decimal型默认整数位为10,小数位为0,即默认为整数。
在 MySQL中,定点数精度比浮点数要高。而且,浮点数会出现误差。如果要对数据的精度要求比较高,应该选择定点数。
3 char类型和varchar类型
char类型的长度是固定的,而varchar类型的长度是在范围内可变的。因此,varchar类型占用的空间比char类型小。而且,varchar类型比 char类型灵活。对于长度变化比较大的字符串类型,最好是选择varchar类型。
虽然CHAR类型占用的空间比较大,但是CHAR类型的处理速度比VARCHAR快。因此,对于长度变化不大和查询速度要求较高的字符串类型,最好选择CHAR类型。
4 时间和日期类型
year类型只表示年份。如果只需要记录年份,选择year类型可以节约空间。time类型只表示时间。如果只需要记录时间,选择time类型是最合适的。date类型只表示日期。如果只需要记录日期,选择date类型是最合适的。
如果需要记录日期和时间,可以选择 datetime类型和 timestamp类型。datetime类型表示的时间范围比 timestamp类型大。因此,若需要的时间范围比较大,选择datetime类型比较合适。timestamp类型的时间是根据时区来显示的。如果需要显示的时间与时区对应,那就应该选择timestamp类型。
5 enum类型和set类型
enum类型最多可以有65535个成员,而set类型最多只能包含64个成员。两者的取值只能在成员列表中选取。enum类型只能从成员中选择一个,而set类型可以选择多个。
因此,对于多个值中选取一个的,可以选择ENUM类型。例如,“性别”字段就可以定义成ENUM类型,因为只能在“男”和“女”中选其中一个。对于可以选取多个值的字段,可以选择SET类型。例如,“爱好”字段就可以选择SET类型,因为可能有多种爱好。
6 text类型和blob类型
text类型与blob类型很类似。text类型存储只能存储字符数据。而blob类型可以用于存储二进制数据。如果要存储文章等纯文本的数据,应该选择text类型。如果需要存储图片等二进制的数据,应该选择blob类型。
text类型包括tinytext、text、mediumtext和 longtext。这4者最大的不同是内容的长度不同。tinytext类型允许的长度最小,longtext类型允许的长度最大。blob类型也是如此。