1、数值型:
整形:tinyint,smallint,mediumint,int,bigint
整形的unsigned(无符号);
Zerofill(零填充);
M(宽度)。
浮点型/定点型:
Float(M,d) unsigned
M 精度,即总位数;
D代表小数点位数。
Decimal比float更精确。
2、字符型:
Char(M) 定长,可存储的字符数,M<=255;
Varchar(M) 变长,可存储的字符数,M<=65535;
Char与Varchar的区别:
Char(M) 实占M个字符,不过M个,右侧补空格,取出时,去除右侧的空格;
Varchar(M) 有1-2个字节来标记真实的长度。
3、日期时间类型:
Year 1901-2155,如果输入2位‘00-69’之间+2000,‘70-99’+1900;
Date YYYY-MM-DD,范围在1000-01-01=>9999-12-31;
Time HH-ii-ss,范围在-838:59:59=>838:59:59;
Datetime YYYY-MM-DD HH-ii-ss 1000-01-01 00:00:00=>9999-12-31 23:59:59
4、开发中的一个问题—精确到秒的时间表示方法,不是用datetime,而是用int来表示时间戳。用时间戳方便计算,并且方便格式化成不同的显示样式。
5、创建表语句:
Create table 表名 (
列名称 列类型 【列属性】 【默认值】,
) engine 引擎名 charset 字符集
*****************************************************************************
Select的五种子句:
Where表达式:
表达式在哪一行成立,哪一行就取出来。
=,!=,<>,>,<,>=,<=
In,between and
Or,and,not
Group by:
分组,一般和统计函数配置实用。
Max,min,avg,sum,count
Having:
数据在表中,表在硬盘或内容以文件形式存在,where就是针对表文件发挥作用的。
查询出的结果,也可以看成一张表,其文件一般临时存在于缓存区。
Having就是针对查询的结果发挥作用。
Order by:
作用:排序
可以针对字段,升序(asc),降序(desc)排序,
可能一个字段排不出结果,可以选用其他字段继续排序。
格式:order by 字段1[asc/desc],字段2[asc/desc]……
Limit:
作用:限制取出条目
格式:Limit [offset] N offset:偏移量;N:取出条目。
以取出第3条到第5条为例:limit 2,3
子查询:
Where型:
内层的查询结果作为外层查询的比较条件。
例如:查询最新商品(以good_id最大为最新)
Select * from goods where (selet max(goods_id) from goods);
From型:
把内层的查询结果供外层再次查询。
注意,内层的查询结果看成临时表,加“as”临时表名。
Exists型:
把外层的查询结果代入到内层,看内层是否成立。
例如:查询有商品的栏目。
Select * from category where exists (select * from goods where goods.cat_id = category.cat_id)
***********************************************************************************
1、union的用法
合并查询结果(取select结果的并集),
对于重复的行,去掉。
如果不去重复的行,可以用union all。
union的要求:
各select查出的列数一致。
如果子句中用了order by limit。
那么子句要用“()”包起来。
如果子句只用order by,没有limit,order by被优化掉,不起作用。
2、左连接、右连接、内连接
select ta.列,tb.列
from
ta left/right/inner join tb
on ta.列 = tb.列
where
左连接与右连接可以相互转化。
a left join b == b right join a
内连接:inner join
左右连接的交集。
3、表的管理(列的增删改)
列声明:(列名称 列类型 [列属性] [默认值])
增加列:
alter table 表名 add 列声明 [after列名称/first]
修改列:
alter table 表名 change 待修改列名 列声明
删除列:
alter table 表名 drop 列名
4、视图view
视图是一张虚拟的表,因为没有真实数据存在,只是与表的一种查询产生的对应关系。
语法:
create [algorithm=merge|temptable|undefined] view 视图名称 as select......
5、字符集与校对集
[客户端]===>[转换器]===>[服务器]
[客户端]<===
客户端使用的字符集:set character_set_client = gbk/utf8...
转换器转换后的字符集:set character_set_connection = gbk/utf8...
返回给客户端的字符集:set character_set_results = gbk/utf8...
如果以上三者都是字符集N,可以简写为set names gbk/utf8...
校对集:就是字符集的排序规则。
一种字符集对应一种或者多种校对集。