Mysql

码农天地 -
Mysql
01、查询语法
-- 01、基本语法
SELECT DISTINCT <select_list>
FROM <left_table> <join_type> JOIN <right_table> ON <join_condition>
WHERE <where_condition>
GROUP BY <group_by_list>
HAVING <having_condition>
ORDER BY <order_by_condition>
LIMIT <limit_number>

-- 02、字段含义
FROM:需要从哪个数据表检索数据
JOIN:联合多表查询返回记录时,并生成一张临时表
ON:在生成临时表时使用的条件
WHERE:过滤表中数据的条件
GROUP BY:如何将上面过滤出的数据分组
HAVING:对上面已经分组的数据进行过滤的条件
SELECT:查看结果集中的哪个列,或列的计算结果
ORDER BY:按照什么样的顺序来查看返回的数据
LIMIT:限制查询结果返回的数量

-- 03、执行顺序
FROM → JOIN → ON → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
02、基本操作
-- 01、查询当前DBMS中所有的DB
SHOW DATABASES;
-- 02、进入指定的DB
USE 数据库名;
-- 03、查看当前DB中的所有table
SHOW TABLES;
-- 04、在当前DB中查看指定DB中的所有table
SHOW TABLES FROM 数据库名;
-- 05、查看table的结构
DESC 表名;
-- 06、查看MySQL服务器的版本
SELECT version();
03、查询列表
-- 01、查询常量
SELECT 100;
-- 02、查询字段
SELECT last_name, email, employee_id FROM employees;
-- 03、查询表达式
SELECT 100 % 3;
-- 04、查询函数
SELECT vesion();
04、字段别名
-- 方式一:使用AS关键字
SELECT USER() AS "用户名";
SELECT USER() AS '用户名';
SELECT USER() AS 用户名;

-- 方式二:使用空格
SELECT USER() 用户名;
SELECT USER() "用户名";
SELECT USER() '用户名';
05、字段去重
-- DISTINCT关键字的作用是针对查询结果去除重复列

-- 需求:查询员工涉及到的部门编号有哪些
SELECT DISTINCT department_id FROM employees;
06、加号作用
mysql中 "+" 的作用(加法运算):
    ①两个操作数都是数值型:
      100 + 1.5 ==> 101.5;
    ②其中一个操作数为字符型:
      将字符型数据强制转换成数值型,如果无法转换,则直接当做0处理:'张无忌' + 100 ==> 100
    ③其中一个操作数为null:
        null + null ==> null
        null + 100 ==> null
07、过滤筛选
/*
    1、关系运算
            >   
            <    
            >=   
            <=     
            =       
            <>
            
            注意:
          =                只能判断普通的内容
          IS      只能判断NULL值
          <=>     安全等于,既能判断普通内容,又能判断NULL值

  2、逻辑运算
            AND    
            OR   
            NOT

  3、模糊查询
            LIKE
            BETWEEN AND
            IN
            NOT IN
            IS NULL
            IS NOT NULL
*/

----------------------------------------关系运算案例----------------------------------------

-- 案例1:查询工资小于15000的员工信息:姓名与工资。
SELECT last_name, salary
FROM employees
WHERE salary < 15000;

-- 案例2:查询部门编号不是100的员工信息。
SELECT *
FROM employees
WHERE employee_id <> 100;

----------------------------------------逻辑运算案例----------------------------------------

-- 案例1:查询部门编号不是50到100之间的员工信息:姓名、部门编号、邮箱。

-- 方式1:
SELECT last_name, department_id, email
FROM employees
WHERE department_id < 50 OR department_id > 100;

-- 方式2:
SELECT last_name, department_id, email
FROM employees
WHERE NOT (department_id >= 50 AND department_id <= 100);

-- 案例2:查询奖金率大于0.03或者员工编号在60到110之间的员工信息。
SELECT *
FROM employees
WHERE commission_pct > 0.03 OR (employee_id >= 60 AND employee_id <= 110);

----------------------------------------模糊查询案例----------------------------------------

--------------------LIKE/NOT LIKE--------------------

/*
LIKE/NOT LIKE
  功能:一般和通配符搭配使用,对字符型数据进行部分匹配查询
  常见的通配符:
    _ 任意单个字符
    % 任意多个字符,支持0-多个 
*/

-- 案例1:查询姓名中包含字符a的员工信息。
SELECT *
FROM employees
WHERE last_name LIKE '%a%';

-- 案例2:查询姓名中包含最后一个字符为e的员工信息。
SELECT *
FROM employees
WHERE last_name LIKE '%e';

-- 案例3:查询姓名中包含第一个字符为e的员工信息。
SELECT *
FROM employees
WHERE last_name LIKE 'e%';

-- 案例4:查询姓名中包含第三个字符为x的员工信息。
SELECT *
FROM employees
WHERE last_name LIKE '__x%';

-- 案例5:查询姓名中包含第二个字符为_的员工信息。
SELECT *
FROM employees
WHERE last_name LIKE '_\_%';

--------------------IN/NOT IN--------------------

/*
IN/NOT IN
功能:查询某字段的值是否属于指定的列表之内
  a IN (常量值1,常量值2,常量值3,...)
  a NOT IN (常量值1,常量值2,常量值3,...)
*/

-- 案例1:查询部门编号是30/50/90的员工名、部门编号。

-- 方式1:
SELECT last_name,department_id
FROM employees
WHERE department_id IN (30,50,90);

-- 方式2:
SELECT last_name,department_id
FROM employees
WHERE department_id = 30
OR department_id = 50
OR department_id = 90;

-- 案例2:查询工种编号不是SH_CLERK或IT_PROG的员工信息。

-- 方式1:
SELECT *
FROM employees
WHERE job_id NOT IN('SH_CLERK','IT_PROG');

-- 方式2:
SELECT *
FROM employees
WHERE NOT(job_id ='SH_CLERK'
OR job_id = 'IT_PROG');

--------------------BETWEEN AND--------------------

/*
BETWEEN AND
功能:判断某个字段的值是否介于xx之间
    between and
    not between and
*/

-- 案例1:查询部门编号是30-90之间的部门编号、员工姓名。

-- 方式1:
SELECT department_id,last_name
FROM employees
WHERE department_id BETWEEN 30 AND 90;

-- 方式2:
SELECT department_id,last_name
FROM employees
WHERE department_id>=30 AND department_id<=90;

-- 案例2:查询年薪不是100000-200000之间的员工姓名、工资、年薪。

-- 方式1:
SELECT last_name,salary,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
WHERE salary*12*(1+IFNULL(commission_pct,0)) NOT BETWEEN 100000 AND 200000;

-- 方式2:
SELECT last_name,salary,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
WHERE salary*12*(1+IFNULL(commission_pct,0))<100000 OR salary*12*(1+IFNULL(commission_pct,0))>200000;

--------------------IS NULL/IS NOT NULL--------------------

/*
IS NULL/IS NOT NULL
功能:判断某个字段的值是否为空/非空
*/

-- 案例1:查询没有奖金的员工信息。
SELECT *
FROM employees
WHERE commission_pct IS NULL;

-- 案例2:查询有奖金的员工信息。
SELECT *
FROM employees
WHERE commission_pct IS NOT NULL;

-- 案例3:查询工资为10000的员工信息。
SELECT *
FROM employees
WHERE salary IS 10000;
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

加个好友,技术交流

1628738909466805.jpg