MySQL查询

#1查看当前所有库
SHOW DATABASES;
#2打开指定库
USE myemployees;
#3查看当前库中的表
SHOW TABLES;
#4从当前库查看其他库的表
SHOW TABLES FROM mysql;
#5查看表的结构
DESC jobs;


#基础查询
#select 查询列表 from 表名
SELECT * FROM jobs;
SELECT min_salary FROM jobs;
SELECT job_title,min_salary FROM jobs;
#查询常量值
SELECT 'bi';
#查询表达式
SELECT 100*98;
#查询函数
SELECT VERSION();


#起别名
/*
1、便于理解
2、若查询字段有重名,则可以使用别名来区分
*/
SELECT 100*200 AS 结果;
SELECT last_name AS 姓,first_name AS 名 FROM employees;
#as可省略
SELECT last_name 姓,first_name 名 FROM employees;
#若别名有特殊符号,则将别名双引号
SELECT salary "out put" FROM employees;

#去重
SELECT DISTINCT department_id AS 部门编号 FROM employees;

#+的作用
/*
select 100+10;  俩个数都是数值型则做加法运算
select '100'+10; 若有一个字符型,试图将字符转换为数值型
                         若转换成功,则继续做加法运算
select 'ji'+10;          若失败 将字符型转换为0;
select null+ 10;         若一方为null则结果为null;                      
*/

#拼接字符串  concat(  ,  ,  ,)
SELECT CONCAT(last_name,first_name) 姓名 FROM employees;
#判空函数 ifnull(判断的字段,若为空想要返回的值);
SELECT IFNULL(`commission_pct`,0) AS 奖金率,
                `commission_pct`
FROM employees;


SELECT DISTINCT job_id FROM employees;
#拼接employees中所有列  由于`commission_pct`中有null所以要有判空函否则输出为空
SELECT CONCAT(`first_name`,',',`last_name`,',',`email`,',',`phone_number`,',',`job_id`,',',`salary`,
',',IFNULL(`commission_pct`,0),
',',`manager_id`,',',`department_id`,',',`hiredate`) OUT_PUT 
FROM employees;



#条件查询
/*
select  查询列表  第三步 
form   表名       第一步
where 筛选条件    第二步

根据筛选条件分类:
1、按照条件表达式筛选
条件运算符: < > + <>不等  =  >=  <=
2、按照逻辑表达式筛选 
逻辑表达式: 
             连接条件表达式
             && || ! 与或非
             and or not
3、模糊查询
    like      
    一般和通配符搭配使用  %表示任意多个字符
                          _任意单个字符              
    between and 
    包含临界值  等于>=and<=  两个临界值不能调换顺序
    in  等于 = or =
    判断某字段的值是否属于in列表中的某一项
    列表中的值类型统一或兼容
    不可以配合通配符一起使用
    is null  /is not null
    = <> 不能判断是否为NULL值
*/
#一、按照条件表达式筛选
#案例一: 查询工资大于12000的员工信息
SELECT * FROM employees WHERE salary >12000;
#案例二:查询部门编号不等于90号的员工名和部门编号
SELECT
       CONCAT(last_name,first_name) AS "name" ,
       department_id
FROM
         employees
WHERE 
       department_id <> 90;

#二、按照逻辑表达式筛选
#案例三:查询工资在10000到20000之间的员工名、工资以及奖金
SELECT 
      CONCAT(last_name,first_name) AS 'name',
      salary,
      IFNULL(commission_pct,0)
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;
         #或者 NOT department_id >=90 AND department_id <=110 OR salary >15000;
#模糊查询 
#案例五:员工名中包含字符a的员工信息
SELECT 
       *
FROM
      employees
WHERE
       last_name LIKE '%a%' OR first_name LIKE '%a%';#%通配符
#案例六:查询员工中的第三个字符为e第五个字符为a的员工名和工资
SELECT 
          last_name,
          salary
FROM 
          employees
WHERE
          last_name LIKE '_a_a%';
#案例七:查询员工名中第二个字符为_的员工
SELECT *
FROM employees
WHERE last_name LIKE '_\_%';#\转义字符

SELECT *
FROM employees
WHERE last_name LIKE '_$_%'ESCAPE '$';#定义转义字符escape

#案例八:查询员工标号在100到120之间的员工信息
SELECT last_name,
       department_id
FROM   employees
WHERE  department_id BETWEEN 100 AND 120; #department_id >=100 and department_id<=120;

#案例九:查询员工的工种编号的IT_PROG、AD_VP、AD_PRES中的一个员工名和员工编号
SELECT last_name,
       job_id
FROM   employees
WHERE job_id IN ('IT_PROG','AD_VPm','AD_PRES');#等于job_id='IT_PROT' OR job_id='AD_VP' OR job_id ='AD_PRES';
#案例十:查询没有奖金的员工名和奖金率
SELECT last_name,
       commission_pct
FROM   employees
WHERE  commission_pct IS NULL;#不能写成commission_pct=NULL;

SELECT last_name,
       commission_pct
FROM   employees
WHERE  commission_pct IS NOT NULL;

#安全等于 <=> 可以判断null值  也可以判断普通值  可读性差
SELECT last_name,
       commission_pct
FROM   employees
WHERE  commission_pct <=> NULL;
SELECT last_name,
       commission_pct
FROM   employees
WHERE  commission_pct <=> 0.3;

#测试一:查询员工号为176的员工姓名和部门号和年薪
SELECT  last_name,
        department_id,
        salary*(1+IFNULL(commission_pct,0))*12 AS 年薪
FROM    employees
WHERE employee_id=176;
上一篇:金锐信链:3.11比特币可以突破60000吗?晚间行情如何把握?


下一篇:蓝桥杯单片机CT107D_01_LED