MySQL笔记一


title: MySQL笔记一
date: 2019-05-28 16:21:00
tags: MySQL笔记
categories: 技术

MySQL学习笔记(笔记一)

学习自尚硅谷MySQL核心技术,练习所用的数据均来自尚硅谷MySQL核心技术:http://www.atguigu.com/download_detail.shtml?v=3

基础查询

语法:

select 查询列表 from 表名;

  • 特点:
  1. 查询列表可以是:表中的字段,常量,表达式,函数
  2. 查询的结果是一个虚拟的表格

查询表中的单个字段

SELECT last_name From employees;

查询表中的多个字段

SELECT last_name,salary,email FROM employees;

查询表中的所有字段

SELECT * FROM employees;

查询常量值

SELECT 100;
SELECT 'jhon';

查询表达式

SELECT 100*98;

查询函数

SELECT VERSION();

起别名

  1. 便于理解
  2. 如果要查询的字段有重名的情况,使用别名可以区分开

方式一:使用AS

SELECT 100%98 AS 结果;
SELECT last_name AS 姓,first_name AS 名 FROM employees;

方式二:使用空格

SELECT last_name 姓,first_name 名 FROM employees;

案例
  • 查询salary,显式结果为out put
    SELECT salary AS "out put" FROM employees;

DISTINCT去重

案例
  • 查询员工表中所有的部门编号
    SELECT DISTINCT department_id FROM employees;

+号的作用

  • 仅仅只有一个功能:运算符
  1. 两个操作数都为数值型,则做加法运算:select 100+50;

  2. 其中一方为字符型,试图将字符型数值转换成数值型,
    如果转换成功则继续做加法运算select '123'+90;
    如果转换失败,则将字符型数组转换成0elect 'jhon'+90;

     3. 只要其中一方结果为null,则结果肯定为`nullselect null+10;`
    
案例
  • 查询员工名和姓连接成一个字段,并显示为姓名

    SELECT CONCAT('a','b','c') AS 结果;

    SELECT CONCAT(last_name,first_name) AS 姓名 FROM employees;

条件查询

语法:

elsect 查询列表 from 表名 where 筛选条件;

分类:
  1. 按条件表达式筛选
    条件运算符:> < = >= <= <> !=
  2. 按逻辑表达式筛选
    逻辑运算符:
    作用:用于连接条件表达式
    && || !
    and or not
  3. 模糊查询:
    like
    between and
    in
    is null

按条件表达式筛选

案例一
  • 查询工资>12000的员工信息

    SELECT * FROM employees WHERE salary>12000;

案例二
  • 查询部门编号不等于90号的员工名和部门编号

    SELECT last_name,department_id

    FROM employees

    WHERE department_id<>90;

按逻辑表达式筛选

案例一
  • 查询工资在10000-20000之间的员工名,工资以及奖金

    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;

模糊查询

like
between and
in
is null|is not null

like

  • 特点:一般和通配符搭配使用
  • 通配符%:任意多个字符
  • 通配符_:任意单个字符
案例一
  • 查询员工名中包含字符a的员工信息

    SELECT * FROM employees WHERE last_name LIKE '%a%';

案例二
  • 查询员工名中第三个字符为e,第五个字符为a的员工名和工资

    SELECT last_name,salary

    FROM employees

    WHERE last_name LIKE '__e_a%';

案例三
  • 查询员工名中第二个字符为下划线的员工名

    SELECT last_name

    FROM employees

    WHERE last_name LIKE '_\_%';

    或者

    SELECT last_name

    FROM employees

    WHERE last_name LIKE '_$_%'

    ESCAPE '$';

in

  • 含义:判断某字段的值是否属于in列表中的一项
  • 特点:
    1. 使用in比使用or提高语句整洁度
    2. in列表的值类型必须统一或兼容
案例
  • 查询员工的工种编号是IT_PROG,AD_VP,AD_PRES中的一个员工名的工种编号

    使用or:

    SELECT last_name,job_id

    FROM employees

    WHERE job_id='IT_PROG'

    OR job_id='AD_VP'

    OR job_id='AD_PRES';

    使用in:

    SELECT last_name,job_id

    FROM employees

    WHERE job_id

    IN ('IT_PROG' ,'AD_VP' ,'AD_PRES');

is null

  • =或<>不能用于判断null值
  • is null或is not null 可以判断null值
案例一
  • 查询没有奖金的员工名和奖金率

    SELECT last_name,commission_pct

    FROM employees

    WHERE commission_pct IS NULL;

案例二
  • 查询有奖金的员工名和奖金率

    SELECT last_name,commission_pct

    FROM employees

    WHERE commission_pct IS NOT NULL;

安全等于: <=>

案例一
  • 查询没有奖金的员工名和奖金率

    SELECT last_name,commission_pct

    FROM employees

    WHERE commission_pct <=> NULL;

案例二
  • 查询工资为12000的员工信息

    SELECT last_name,salary

    FROM employees

    WHERE salary <=> 12000;

排序查询

语法:

selsect 查询列表

from 【表 where 筛选条件】

order by 排序列表 【asc|desc】

  • 特点:
    • asc升序,desc降序
      如果不写默认升序
    • order by 子句中可以支持单个字段,多个字段,表达式,函数,别名
    • order by 子句一般是放在查询语句的最后面,但limit子句除外
案例一
  • 查询员工信息,要求工资从高到低排序

    SELECT * FROM employees ORDER BY salary DESC;

案例二
  • 查询部门编号>=90的员工信息,按入职时间先后进行排序

    SELECT * FROM employees

    WHERE department_id>=90

    ORDER BY hiredate ASC;

案例三
  • 按年薪的高低显示员工的信息和年薪【按表达式排序】

    SELECT *,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪 FROM employees ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;

案例四
  • 按年薪的高低显示员工的信息和年薪【按别名排序】

    SELECT *,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪 FROM employees ORDER BY 年薪 DESC;

案例五
  • 按姓名的长度显示员工的姓名和工资【按函数排序】

    SELECT LENGTH(last_name) 字节长度,last_name,salary FROM employees ORDER BY LENGTH(last_name) DESC;

案例六
  • 查询员工信息,要求先按工资升序排序,再按员工编号降序排序【按多个字段排序】

    SELECT * FROM employees ORDER BY salary ASC,employee_id DESC;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值