MySQL学习之DQL(查询语言之1,2,3)

一、DQL(查询)

  1.基础查询

# 进阶1:基础查询
/*
select 查询内容(可以读个) from 表名;
特点:
1.查询内容:可以是表中字段、常量值、表达式、函数
2.查询结果是一个虚拟表格
*/

#3.查询表中的单个字段
USE myemployees;
SELECT last_name FROM employees;
    #查询表中的多个字段
SELECT last_name,email FROM employees;
#查询表中的所有字段
    ##方式一
SELECT 
  `first_name`,`employee_id`,`last_name`,`email`,`phone_number`  #顺序可按照名字排列改变
FROM employees;
    ##方式二
SELECT * FROM employees; # 顺序和原表一致
#特殊情况,字段与关键字一致时,用[’‘]区分
SELECT 'name' FROM employees,

#4.查询表中常量值;不区分字符与字符串
SELECT 100;
SELECT 'jion';

#5.查询表达式
SELECT 100*99;
SELECT 100%99;

#6.查询函数(执行version()函数,并且返回结果)
SELECT VERSION();

# 7.为字段起别名

/*
便于理解
如果要查询的字段有重复的情况,使用别名可以区分开来
*/
#方式一 使用as
SELECT 100%98 AS 结果;
SELECT last_name AS 姓, first_name ASFROM employees;
#方式二 使用空格
SELECT  last_name 姓, first_name 名 FROM employees;
#案例 特殊情况,查询salary,输出结果为out put(包含关键字或空格);
SELECT salary AS "out put" FROM employees;

#8.去重
#案例:查询员工表中涉及所有部门 distinct
SELECT DISTINCT department_id FROM employees;

#9. +号作用
# 案例:查询员工名与姓,连接成一个字段,并且显示为 姓名
/*
mysql中的+号;
仅仅一个功能;运算符
例如: select 100+90;两个均是数值,做加法运算
select '123' +90; 其中一方为字符型,试图将字符型转换为数值型,
如果转换成功,则继续做加法运算
如果转换失败,则字符转为0,继续做加法运算
如果其中一方为null,则结果肯定为null
*/
SELECT last_name+first_name AS 姓名
FROM employees; #结果均为0.

SELECT CONCAT("a","c","b") AS 结果; #连接字符函数
#正确方式
SELECT 
    CONCAT(last_name,first_name) AS 姓名
FROM 
    employees;
#显示表的结构
DESC departments;

#案例,一列里面显示出表employees的全部列,各个列之间用逗号链接,列头显示为out_put
SELECT 
    CONCAT(`first_name`,',',`last_name`,',',`job_id`) AS out_put
FROM 
    employees;
#补充函数,解决null存在情况,ifnull 表达式中为null,转换为想要的数值
SELECT 
    IFNULL(commission_pct,0) AS 奖金率,
        commission_pct
FROM employees;

 

  2.条件查询

 

#进阶2:条件查询
/*
语法:select 查询列表 from 表名 where  筛选条件;
分类:
    1.按照条件表达式筛选
    条件表达式:>, < , = , <> OR != ,>=.<=
    2.按照逻辑表达式筛选
    逻辑运算符: and or not
    3.模糊查询
    like
    between and
    in
    is null
    
*/
#1.案例(条件表达式):员工工资大于一万二的方法,
SELECT * FROM employees WHERE salary >12000; 
SELECT department_id,first_name FROM employees WHERE department_id <> 90;
#2.案例(逻辑表达式):工资在1万到2万之间的员工名、工资与奖金
SELECT last_name,salary,commission_pct FROM employees 
      WHERE salary>10000 AND salary <20000;
 #部门编号不在90——110之间或者工资高于15000的员工信息
 SELECT * FROM employees WHERE department_id < 90 OR department_id >110 OR salary > 15000;
 SELECT * FROM employees WHERE NOT(department_id >= 90 AND department_id <= 110) OR salary > 15000;
 # 3.模糊查询
 /*
 like
 特点:一般与通配符搭配使用,通配符:% 任意多个字符,包含0个字符,[_]任意单个字符
between and
提高语句的简洁度
包含临界值
两个临界值不要调换
in
含义:判断某字段的值是否属于in列表中的某一项
特点:使用in提高语句简洁度,in列表中的值类型必须一致或兼容
is null
等号或不等于 不能用于判断null值
is null OR is bot null 进行判断
 */
#案例(like):查询员工名中包含字符a的员工信息,%代表通配符,并且不区分大小写
SELECT * FROM employees  WHERE last_name LIKE '%a%';
SELECT * FROM employees WHERE last_name LIKE '__n_l%';
#案例:查询员工名中第二字符为_的员工名,转译[\]
SELECT * FROM employees WHERE last_name LIKE '_\_%';

#案例 (between and):员工编号在100至120之间的员工信息。
 SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 120
#案例(in):查询员工工种编号 时 AD_VP IT_PROG中的一个员工名和工种编号
 SELECT last_name,job_id
 FROM myemployees
  #where job_id ='IT_PROG' or job_id = 'AD_VP'
WHERE jog_id IN('IT_PROG' ,'AD_VP');
#案例(isnull):查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct
FROM myemployees
WHERE commission_pct ISNULL; # is not null

#安全等于 <=> 可用于判断null 也可以查询普通数值;确定:难确定不等于或者等于,可读性差

 

  3.排序查询

 

# 排序查询
USE myemployees;

/*
SELECT * FROM employees;
语法:select 查询列表 from 表 order by 排列列表【asc|desc】
 特点:asc 升序 desc 降序;默认为升序
一般放在语句最后
*/ # 案例1.查询员工信息,要求工资从高到底排序 SELECT * FROM employees ORDER BY salary ASC; #案例2,查询部门编号>= 90的员工信息,按照入职时间先后排序(筛选排序) SELECT * FROM employees WHERE department_id >= 90 ORDER BY hiredate; #案例3,按照年薪高低显示员工信息和年薪,可以按照表达式排序 OR 别名 SELECT *,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪 FROM employees ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC; #案例4. 按照姓的字节长度显示员工的姓名与工资【按照函数排序】 SELECT LENGTH(last_name),salary FROM employees ORDER BY LENGTH(last_name); #案例5.查询员工信息,要先按照工资排序,再按照员工编号排序【多个字段排序,主要关键词+次要关键词】, SELECT * FROM employees ORDER BY salary ASC, employee_id DESC;

 

  4.常见函数

  5.分组函数

  6.链接函数

  7.子查询

  8.分页查询

  9.union联合查询

二、DML(增删改查)

三、TCL(数据转换语言)

 

posted @ 2020-11-24 13:53  上虞牧之  阅读(408)  评论(0)    收藏  举报