一.数值型

整型
tinyint
smallint
Mediumint
Int
Bigint

用tinyint(m)说明这一类型的本人一些理解

这个m 是宽度 需要和zerofill配合使用 比如是tinyint(5) zerofill

那么显示为0000S 这个就是你的结果

浮点型 、定点型

float
decimal

float 与 decimal 的区别 就只是decimal表现的更精准 更大些

这里用float 说明

float(M,D):M代表总位数,D代表小数位 float(6,2)最大显示为9999.99

4字节 8 字节

浮点型这一个类型是mysql特有的D

字符型

char varchar 字节65535 不过一般转换为assii码 utf8所以算起来也就2w多个字符

说明:char(8) 如果设置为utf8 那么最大能存储8个汉字 char如果不足8个字符

用空格补齐 varchar()缩展

char定长速度快些

text 内容多 所以搜索慢 如果内容不多建议用char varchar代替

日期型

这里要要引入时间戳这个概念就是1970-0-0. 0:0:0到现在的秒数
这是因为datetime虽然直观,但计算不便

Year类型:1个字节 表示1901-2155,[0000表示错误时选择]
如果输入2位‘00-69’表示 2000-2069

Date类型 典型格式 1992-08-12
日期类型: ‘1000-01-01’–>’9999-12-31′

Time类型 格式12:00:00
时间类型: -838:59;59到+838:59:59

Datetime 格式 1999-08-02 12:00:00
范围 ‘1000-01-01 00:00:00’–>’9999-12-31 00:00:00′

查询的五种子句

1.where

2.group by

3.having

4.order by

5.limit

查询要循序的利用这5个子句 如果顺序不符合 会出现错误 即有顺序要求

清空一张表

truncate 表名;

查询的结果就能当一个表使唤 如selcet * from as tmp;

where 理解 把表达式拿到行中 看是否为真

列 理解 把列当成变量来理解

查询结果 当成表来理解

select goods_id,goods_name from goods order by goods_id desc limit 1;

select goods_id,goods_name from goods where goods_id= where 子句

子查询(ps:需要结合的思想)

where 型 子查询 :把内层查询的结果当作外层的比较条件

select goods_id,cat_id,goods_name from goods where goods_id in (select max(goods_id) from goods group by cat_id);

from 型 子查询:把内层的查询结果当作一个临时表,供外层sql再次查询

select name,avg(socre) from stu where name in (select name form(select name,count(*)as gk from stu where score =2) as tmp ) group by name;

exists 型 子查询 :把外层的查询结果,拿到内层, 看内层的查询是否成立

举例:select cat_id,cat_name from category where exists (select * form goods where goods,cat_id =category.cat_id);

union:联合

把两次或者多次的查询结果合并起来

要求:两次查询的列数一致

推荐:查询的每一列,相对应的列类型也一样

可以来自于多张表

多次sql语句取出的列名可以不一致,此时以第一个sql的列名为准

如果不同的语句取出的行,有完全相同(即每个列的值都相同)那么相同的行将会合并(去重复)

如果不去重复,可以加all来制定

如果字句中有order by ,limit ,须加(),推荐放到所有子句之后,即对最终合并后的结果来排序

在子句中,order by 配合 limit 使用才有意义,如果order by 不配合limit使用,会被语法分析器优化分析时去除

举例:

select id ,sum(num) from (select * from ta union select * from tb ) as tmp group by id;

(select goods_id,cat_id,goods_name,shop_price from goods where cat_id=4 order by shop_price desc limit 2) union

(select goods_id,cat_id,goods_name,shop_price from goods where cat_id =5 order by shop_price desc limit 3)

(ps:如果desc后面不加limit那么会去除排序 即)