单表查询

非条件查询

简单查询
mysql> SELECT * FROM employee5;

去重DISTINCT
mysql> SELECT DISTINCT post  FROM employee5;
注:不能部分使用DISTINCT,通常仅用于某一字段。

通过四则运算查询
mysql> SELECT name, salary, salary*14 FROM employee5;
mysql> SELECT name, salary, salary*14 AS Annual_salary FROM employee5;

定义显示格式
CONCAT() 函数用于连接字符串
mysql> SELECT CONCAT(name, ' annual salary: ', salary*14)  AS Annual_salary FROM employee5;
View Code

 

条件查询

语法 select * from 表名 where 条件
比较运算符 >        <        >=            <=            !=或<>
逻辑运算符and        or        not
模糊查询
    like
    %           表示任意多个任意字符
    _           表示一个任意字符

范围查询
    in                  表示在一个非连续的范围内
    between...and...    表示在一个连续的范围内

空判断
    判断空:is null
    判断非空:is not null 

优先级
    小括号,not 比较运算符, 逻辑运算符
    and比or优先级高,如果同时出现并希望先选or,需要结合()来使用
View Code

 

多条件查询

单列排序
mysql> SELECT name, salary FROM employee5 ORDER BY salary ASC;

按多列排序
mysql> SELECT * FROM employee5 ORDER BY hire_date DESC,salary ASC;

# 先按入职时间,再按薪水排序
mysql> SELECT * FROM employee5 ORDER BY hire_date DESC, salary DESC;

分页查询 limit
mysql> SELECT * FROM employee5 ORDER BY salary DESC LIMIT 5;      //默认初始位置为0
mysql> SELECT * FROM employee5 ORDER BY salary DESC LIMIT 3,5;      //从第4条开始,共显示5条

聚合函数查询
复制代码
    a、count(*)       表示计算总行数,括号中可以写*和列名
    b、max(列)        表示求此列的最大值
    c、min(列)        表示求此列的最小值
    d、sun(列)        表示求此列的和
    e、avg(列)        表示求此列的平均值
mysql> SELECT SUM(salary) FROM employee5 WHERE dep_id=101;
View Code

 

正则表达式

mysql> SELECT * FROM employee5 WHERE salary REGEXP '[5]+.*'; //匹配有一个5以上的任意字符串

升序   asc默认

降序   desc

 

多表查询

 

内连接

内连接:找两张表共有的部分,相当于利用条件从笛卡尔积结果中筛选出了正确的结果。(只连接匹配的行)

mysql> select * from employee1 inner join department on employee1.dep_id=department.id;

外连接

左连接left

优先显示左表全部记录。

#左链接:在按照on的条件取到两张表共同部分的基础上,保留左表的记录

mysql> select * from department left join  employee1 on department.id=employee1.dep_id;

全部连接join

mysql> select * from department full join employee1;

 

posted on 2020-03-14 15:53  topass123  阅读(87)  评论(0编辑  收藏  举报