MySQL 练习

基础语句

SHOW DATABASES                                                          返回可用数据库的一个列表

SHOW TABLES                                                                 返回当前选择数据库中可用的表

SHOW COLUMNS FOR table_name     

DESCRIBE  == SHOW COLUMNS FOR                             返回表名的表结构    

SELECT `name` , codename FROM auth_permission          基础的查询语句  

SELECT * FROM auth_permission                                       返回表中所有字段

SELECT DISTINCT `name` FROM auth_permission              返回当前字段不重复的内容

多个字段  DISTINCT  除非全部一样不然 都会列出来

MySQL 练习      MySQL 练习

MySQL 练习    MySQL 练习

SELECT `name` FROM `user`  LIMIT 4;     返回不多与4行

SELECT `name` FROM `user`  LIMIT 3,2;     第三行开始的后2个   第四第五个

SELECT `user`.`name` FROM `user`            限定表名和列名。不知道表里有什么列使用

排序数据

SELECT `user`.`name` FROM `user`  ORDER BY `id`    根据id排序  数字按大小,字符串按英文顺序

SELECT `user`.`name` FROM `user` ORDER BY telephone ,`info`   可以多条进行排序。 先按号码排序再信息排序

EDSC 反向排序       ASC 正向排序

SELECT `user`.`name` FROM `user` ORDER BY telephone DESC ,`info` 号码反向排序后,再按信息排序

过滤数据

SELECT `user`.`name` FROM `user` WHERE `name` = 'mj'      只返回name = mj的行

操作符 = 等于  <>  !=不等于  between z指定两个值之间

OR   和  AND

SELECT `user`.`name` FROM `user` WHERE (info > 10 OR telephone > 159) AND id >2     and的优先级高于and 执行是加上括号。

IN 搜索in括号内匹配的行

SELECT `user`.`name` FROM `user` WHERE telephone IN (159,189,111)     号码为159   189   111的行

NOT   否定关系     NOT  iN 

用通配符进行过滤

通配符  是  %

LIKE   

SELECT `user`.`name` FROM `user` WHERE `name` LIKE '%m%'   包含m    %m    m结尾      m%m打头  默认不区分大小写

REGRXP  使用正则表达式匹配  

1.基本字符    .   点  类似like

SELECT `user`.`name` FROM `user` WHERE telephone REGEXP '.11'       如果想区分大小写可使用关键字BINARY

2.     |    or  匹配

SELECT `user`.`name` FROM `user` WHERE telephone REGEXP '111|189'

3.  [ ]匹配几个字符之一       类似or

SELECT `user`.`name` FROM `user` WHERE telephone REGEXP '[189]1'   以1结尾 前面包含括号里面的东西1或8或9

4.  非  ^

SELECT `user`.`name` FROM `user` WHERE telephone REGEXP '[^1]1'    匹配不是1打头  以1结尾

5.匹配范围   [1-5]  [a-z]

SELECT `user`.`name` FROM `user` WHERE telephone REGEXP '[10-18]1'  

6. 查询关键字  字符   以\\ 打头

REGEXP  \\.     \\- 

MySQL 练习

匹配字符类

MySQL 练习

SELECT `user`.`name` FROM `user` WHERE `telephone` REGEXP '[[:alnum:]]{2}'     电话跟着任意字母或者数字的2个  

MySQL 练习

 '[[:alnum:]]+'   一位或多位数字或字母    '[[:alnum:]]{2}'  2位数字或字母       stricks?   使得s可选有没有都可以

MySQL 练习

创建计算字段 

拼接  Concat()  2个字段放在一个行

SELECT CONCAT(`user`.`name`,'(',`user`.telephone,')')  姓名和电话 FROM `user` ORDER BY id   

MySQL 练习

AS  别名

SELECT CONCAT(`user`.`name`,'(',`user`.telephone,')')  AS info FROM `user` ORDER BY id 

where 语句

使用数据处理函数

文本处理函数

MySQL 练习

MySQL 练习

soundex()返回发音类似的字段

MySQL 练习


日期和时间处理函数


MySQL 练习



汇总数据

distinct

MySQL 练习

MySQL 练习

MySQL 练习


分组函数

group  by  分组

having  和 group by 连用  来过滤数据

MySQL 练习


使用子查询

、IN 语句

MySQL 练习


作为计算字段使用子查询

selsect  当成查询字段


MySQL 练习