MySql-基础查询
约 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` AS 名 FROM 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