跳至主要內容

MySql-基础查询

HFwasMySqlMySql约 1106 字大约 4 分钟

MySql-基础查询

  • 使用数据库
USE myemployees;
  • 查询表中单个字段
SELECT first_name FROM employees;
  • 查询表中的多个字段
SELECT first_name,last_name,email,salary FROM employees;
  • 查询表中的所有字段

    • 方式一
    SELECT 
      `employee_id`,
      `first_name`,
      `last_name`,
      `email`,
      `phone_number`,
      `job_id`,
      `salary`,
      `commission_pct`,
      `manager_id`,
      `department_id`,
      `hiredate` 
    FROM
      employees ;
    
    • 方式二
    SELECT * FROM employees;
    
  • 查询常量值

SELECT 100;
SELECT 'abc';
  • 查询表达式
SELECT 98*100;
  • 查询函数
SELECT VERSION();	
  • 起别名

    • 方式一:使用AS
    SELECT 98%100 AS 余数;
    SELECT `first_name` AS,`last_name` ASFROM employees;
    
    • 方式二:使用空格
    SELECT `first_name`,`last_name`FROM employees;
    
    #案例:查询salary,显示结果为out put 
    SELECT `salary` AS "out put" FROM employees;
    
  • 去重

#案例:查询员工表中涉及到的所有部门编号
SELECT DISTINCT `department_id` FROM employees;
  • +号的作用

    • Java中+的作用:
    1、加法运算
    	100+1.5      'a'+2    1.3+'2'
    2、拼接符
    	至少有一个操作数为字符串
    	"hello"+'a'	
    
    • mysql中+的作用:
    1、加法运算
    ①两个操作数都是数值型
    100+1.5
    ②其中一个操作数为字符型
    将字符型数据强制转换成数值型,如果无法转换,则直接当做0处理
    '张无忌'+100===>100
    ③其中一个操作数为null
    null+null====null
    null+100====null
    
    • 示例
    #案例:查询员工名和姓连接起来作为一个字段,并显示为姓名
    
    #方案一:使用concat关键字
    SELECT CONCAT('a','b','c') AS 结果;
    
    SELECT CONCAT(`last_name`,`first_name`) AS 姓名 FROM employees;	
    

测试

  • 下面的语句是否可以执行成功
SELECT 
  last_name,
  job_id,
  salary AS sal 
FROM
  employees ;
  • 下面的语句是否可以执行成功 (true)
SELECT 
  * 
FROM
  employees ;
  • 找出下面语句中的错误 (false last_name,)
SELECT 
  employee_id,
  last_name,
  salary * 12 “ ANNUAL SALARY ” 
FROM
  employees ;
  • 显示表 departments 的结构,并查询其中的全部数据
DESC departments;
SELECT * FROM `departments`;
SHOW COLUMNS FROM departments;
  • 显示出表 employees 中的全部 job_id (不能重复)
SELECT DISTINCT 
  job_id 
FROM
  employees ;
  • 显示出表 employees 的全部列,各个列之间用逗号连接,列头显示成 OUT_PUT
SELECT 
  CONCAT(
    employee_id,
    ',',
    first_name,
    ',',
    last_name,
    ',',
    salary,
    ',',
    IFNULL(commission_pct, ',')
  ) AS "out_put" 
FROM
  employees ;
  • 过滤数据
SELECT 
  last_name,
  salary 
FROM
  employees 
WHERE salary > 12000 ;
  • 查询员工号为 176 的员工的姓名和部门号和年薪
SELECT 
  last_name,
  department_id,
  salary * 12 * (1+ IFNULL(commission_pct, 0)) 年薪 
FROM
  employees 
WHERE employee_id = 176 ;
  • 选择工资不在 5000 到 12000 的员工的姓名和工资
SELECT 
  last_name,
  salary 
FROM
  employees 
WHERE salary NOT BETWEEN 5000 
  AND 12000 ;
  • 选择在 20 或 50 号部门工作的员工姓名和部门号
SELECT 
  last_name,
  department_id 
FROM
  employees 
WHERE department_id IN (20, 50) ;
  • 选择公司中没有管理者的员工姓名及 job_id
SELECT 
  last_name,
  job_id 
FROM
  employees 
WHERE manager_id IS NULL ;
  • 选择公司中有奖金的员工姓名,工资和奖金级别
SELECT 
  last_name,
  salary,
  commission_pct 
FROM
  employees 
WHERE commission_pct IS NOT NULL ;
  • 选择员工姓名的第三个字母是 a 的员工姓名
SELECT 
  last_name 
FROM
  employees 
WHERE last_name LIKE '__a%' ;
  • 选择姓名中有字母 a 和 e 的员工姓名
SELECT 
  last_name 
FROM
  employees 
WHERE last_name LIKE '%a%' 
  AND last_name LIKE '%e%' ;
  • 显示出表 employees 表中 first_name 以 'e' 结尾的员工信息
SELECT * 
FROM
  employees 
WHERE first_name LIKE '%e' ;
  • 显示出表 employees 部门编号在 80-100 之间的姓名、职位
SELECT 
  last_name,
  job_id 
FROM
  employees 
WHERE department_id BETWEEN 80 
  AND 100 ;
  • 显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、职位
SELECT 
  last_name,
  job_id 
FROM
  employees 
WHERE manager_id IN (100, 101, 110) ;

排序数据

  • 查询员工的姓名和部门号和年薪,按年薪降序按姓名升序
SELECT 
  last_name,
 salary * 12 * (1+ IFNULL(commission_pct, 0)) 年薪 
  department_id 
FROM
  employees 
ORDER BY   年薪  ASC,
  last_name DESC ;
  • 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序
SELECT last_name,salary
FROM employees
WHERE salary NOT BETWEEN 8000 AND 12000
ORDER BY  salary DESC;
  • 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序
SELECT *
FROM employees
WHERE email LIKE '%e%' 
ORDER BY LENGTH (email) DESC, department_id ASC;
  • 查询没有奖金,且工资小于18000的salary,last_name
SELECT `salary`,`last_name` FROM employees WHERE salary IS NULL AND salary < 18000;
  • 查询employees表中,job_id不为'IT'或者工资为12000的员工信息
SELECT * FROM employees WHERE job_id<>'IT' OR salary <=>12000;
  • 查看部门departments表的结构,查询效果
DESC departments;
  • 查询部门departments表中涉及到了那些位置编号
SELECT DISTINCT location_id FROM departments;
  • 经典面试题:试问select * from emplpoyees ;和select * from employees where commission_pct loke '%%' and last_name like '%%'结果是否一样?并说明原因
    • 不一样,如果判断的字段由NULL值
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3