欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【MySQL】基础查询

程序员文章站 2022-11-22 17:07:16
SELECT语句查询单个字段select 字段名 from 表名;SELECT last_name FROM employees;查询多个字段select 字段名,字段名 from 表名;SELECT last_name,salary,email FROM employees;查询所有字段--方式一select * from 表名SELECT * FROM employees;--方式二SELECT employee_id,first_name,last_name,email,p...

SELECT语句

查询单个字段

select 字段名 from 表名;
SELECT last_name FROM employees;

查询多个字段

select 字段名,字段名 from 表名;
SELECT last_name,salary,email FROM employees;

查询所有字段

--方式一
select * from 表名
SELECT * 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 常量值;

SELECT 100;
SELECT 'john'

注意:字符型和日期型的常量值必须用单引号引起来,数值型不需要

查询函数

select 函数名(实参列表);
SELECT VERSION();

查询表达式

select 100/1234;
SELECT 100*98;

起别名

as 或者 空格

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

--方式一 使用as
SELECT 100%98 AS 结果;
SELECT last_name AS,first_name ASFROM employees;

--方式二 使用空格
SELECT last_name 姓,first_name 名 FROM employees;
--案例:查询 salary,结果显示为 out put
SELECT salary AS "out put" FROM employees

去重

select distinct 字段名 from 表名;
SELECT DISTINCT department_id FROM employees;

+ 号

功能:仅仅是运算符,不能作为字符串连接

select 数值+数值; --直接运算
select 字符+数值;--先试图将字符转换成数值,如果转换成功,则继续运算;否则转换成0,再做运算
select null+;--结果都为null

select 100+90;--两个操作数都为数值型,则做加法运算
select '123'+90;--其中一方为字符型,试图将字符型数值转换成数值型
select 'john'+90;
select null+10;--只要其中一方为null,则结果肯定为null 

concat函数
功能:拼接字符

select concat(字符1,字符2,字符3,...);

ifnull函数
功能:判断某字段或表达式是否为null,如果为null 返回指定的值,否则返回原本的值

select ifnull(commission_pct,0) from employees;

isnull函数
功能:判断某字段或表达式是否为null,如果是,则返回1,否则返回0

条件查询

语法

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

筛选条件

按条件表达式筛选

条件运算符:> < = !=(不等于) <>(不等于,建议用这种) >= <= 安全等于 <=>

--案例1:查询工资>12000的员工信息
SELECT *FROM employees WHERE salary>12000;

--案例2:查询部门编号不等于90号的员工名和部门编号
SELECT last_name,department_id FROM employees WHERE department_id<>90;

安全等于

--查询没有奖金的员工名和奖金率(安全等于 <=>)
SELECT last_name,commission_pct FROM employees WHERE commission_pct <=>NULL;

--查询工资为12000的员工信息
SELECT last_name,salary FROM employees WHERE salary <=> 12000;

is null 对比<=>

IS NULL:仅仅可以判断NULL值,可读性较高,建议使用

<=> :既可以判断NULL值,又可以判断普通的数值,可读性较低

按逻辑表达式筛选

逻辑运算符:&& || ! and or not

--案例1:查询工资z在10000到20000之间的的员工名、工资以及奖金
SELECT last_name,salary,commission_pct
FROM employees
WHERE salary>=10000 AND salary<=20000;

#案例2:查询部门编号不是在90到100之间,或者工资高于15000的员工信息
SELECT * FROM employees WHERE department_id<90 or department_id>100 or salary>15000;
SELECT * FROM employees WHERE NOT(department_id>=90 AND department_id<=100) OR salary>15000;


模糊查询

like

  • 一般和通配符搭配使用
  • 通配符:
    • % 任意多个字符,包含0个字符
    • _ 任意单个字符
--案例1:查询员工名中包含字符a的员工信息
SELECT * FROM employees WHERE last_name LIKE '%a%';

--案例2:查询员工名中第三个字符为c,第5个字符为h的员工名和工资
SELECT last_name,salary FROM employees 
WHERE last_name LIKE '___c_h%';

--案例3:查询员工名中第二个字符为_的员工名
SELECT last_name FROM employees WHERE last_name LIKE '_%';
	--或者这样写
SELECT last_name FROM employees last_name LIKE '$_%' ESCAPE '$';--指定一个字符为转义字符

between and

1.使用between and可以提高语句的简洁度

2.包含临界值

3.两个临界值不要调换顺序

--案例1.:查询员工编号在100到200之间的员工信息
SELECT * FROM employees WHERE employee_id >=100 AND employee_id <=120;
SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 200;

in

含义:判断某字段的值是否属于in列表中的某一项

特点:

①使用in提高语句简洁度

②in列表的值类型必须一致或兼容

③in列表中不支持通配符

--询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号

SELECT last_name,job_id FROM employees
WHERE job_id = 'IT_PROT' OR job_id = 'AD_VP' OR JOB_ID ='AD_PRES';

SELECT last_name,job_id FROM employees
WHERE job_id IN( 'IT_PROT' ,'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;

例:查询员工号为176的员工的姓名和部门号和年薪


SELECT
last_name,
department_id,
salary*12*(1+ IFNULL(commission_pct,0)) AS 年薪
FROM employee;

排序查询

语法

select 查询列表 from 表
【where 筛选条件】
order by 排序列表 【asc|desc

1.asc代表升序,desc代表的是降序,如果不写,默认是升序

2.order by子句中可以支持单个字段、多个字段、表达式、函数、别名

3**.order by子句一般是放在查询语句的最后面,limit子句除外**

--查询员工信息,工资从高到底排序
SELECT * FROM employees ORDER BY DESC;
SELECT * FROM employees ORDER BY ASC;

按筛选条件排序

--查询部门编号>=90的员工信息,按入职时间的先后进行排序【添加筛选条件】
SELECT * FROM employees WHERE department_id>=90 ORDER BY hiredate ASC;

按表达式排序

--案例3:按年薪的高低显示员工的信息和年薪【按表达式排序】
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;

按别名排序

--案例4:按年薪的高低显示员工的信息和年薪【按别名排序】
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY 年薪 DESC;

按函数排序

--案例5:按姓名的长度显示员工的姓名和工资【按函数排序】
SELECT LENGTH(last_name) 字节长度,last_name,salary
FROM employees
ORDER BY LENGTH(last_name) DESC;

按多个字段排序

--案例6:查询员工信息,要求先按工资排序,再按员工编号排序【按多个字段排序】
SELECT * FROM employees;
ORDER BY salary ASC,employee_id DESC;

本文地址:https://blog.csdn.net/potato20522/article/details/109004819

相关标签: MySQL