Mysql基础

1、数值型:

整形:tinyintsmallintmediumintintbigint

整形的unsigned(无符号);

Zerofill(零填充);

M(宽度)。

浮点型/定点型:

         Float(M,d) unsigned

                      M 精度,即总位数;

                      D代表小数点位数。

         Decimalfloat更精确。

2、字符型:

         Char(M) 定长,可存储的字符数,M<=255;

         Varchar(M) 变长,可存储的字符数,M<=65535;

         CharVarchar的区别:

         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

         分组,一般和统计函数配置实用。

         Maxminavgsumcount

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...

校对集:就是字符集的排序规则。

一种字符集对应一种或者多种校对集。

 

 


 

你可能感兴趣的:(MySQL基础)