搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 三分稚气 > MySQL基础(一)

MySQL基础(一)

三分稚气 2020-05-24


主要内容:基础查询,条件查询,排序查询 


1.基础查询

/*语法:select 查询列表 from 表名
特点:1-查询的结果集是一个虚拟表2-select类似于System.out.printIn(打印内容) select后面跟的查询列表,可以有很多个部分组成,中间用逗号隔开 例如:select 字段1,字段2,字段3 from 表 System.out.printIn()的打印内容只有一个3-执行顺序select first_name from employees222; a. from子句 b. select子句4-查询列表:
*/
# 一、查询常量SELECT 100;
# 二、查询表达式SELECT 100%3;
# 三、查询单个字段SELECT `last_name` FROM `employees` ;
# 四、查询多个字段,Fn+F12快速对齐格式SELECT `last_name`, `email`, `employee_id` FROM `employees` ;
# 五、查询所有字段SELECT * FROM `employees`;
# 六、调用函数、获取返回值# 查询当前数据库SELECT DATABASE();# 查询版本SELECT VERSION();SELECT USER();
# 七、起别名# 方式一:使用as关键字SELECT USER() AS 用户名;SELECT USER() AS '用户名';SELECT USER() AS "用户名";
#方式二:使用空格SELECT USER() 用户名;SELECT USER() '用户名';SELECT USER() "用户名";
# 八、# 需求:查询first_name 和last_name 拼接的全名,最终起别名为:姓 名
# 方案一SELECT first_name+last_name AS "姓 名"FROM `employees`;
/*Java中+的作用:1.加法运算2.拼接符 至少有一方为字符串
MySQL中+的作用: 加法运算*/
# 方案二:使用concat拼接函数SELECT CONCAT (first_name,last_name) AS "姓 名"FROM `employees`;

# 九、distinct的使用# 需求:查询员工涉及到的部门SELECT DISTINCT `department_id` FROM `employees`;
# 十、查看表的结构DESC employees;SHOW COLUMNS FROM employees;
基础查询案例
# 1.下面的语句是否可以执行成功?SELECT last_name , job_id , salary AS salFROM employees;# 可以,换行没问题
# 2.下面的语句是否可以执行成功?SELECT * FROM employees;# 可以,意思是查询所有字段
# 3.找出下面语句的错误SELECT employee_id , last_name,salsry * 12 "ANNUAL SALARY"FROM employees;# 题中所有符号都应该用英文
# 4.显示表departments的结构,并查询全部数据DESC departments;SHOW COLUMNS FROM departments;SELECT * FROM departments;
# 5.显示出表employees中全部的job_id(不能重复)SELECT DISTINCT job_id FROM employees;# distinct 表示不能重复
# 6.显示出表employees的全部列,各个列之间用逗号连接,列头显示为OUT_PUTSELECT CONCAT(employee_id , ',' ,first_name , ',' , last_name , ',' ,salary , ',' , IFNULL(commission_pct , '')) AS "OUT_PUT" FROM employees;# concat表示拼接,但需要注意的是,拼接值中有NULL时,整体为NULL# 可以借用 ifnull:如果不是null,则返回参数1,如果是null,则返回参数2
SELECT commission_pct , IFNULL(commission_pct , '空') FROM employees;

2.条件查询

/*语法:select 查询列表from 表名where 筛选条件;
执行顺序:1.from 子句2.where 子句3.select 子句
举例:select last_name , first_name from employees where salary>20000;
特点:1.按关系表达式筛选 关系运算符:< > >= <= <>2.按逻辑表达式筛选 逻辑运算符:and(&&) , or(||) , not(!)3.模糊查询 like , in , between and , is null
*/
# 一、按关系表达式筛选# 案例1:查询部门编号不是100的员工信息SELECT * FROM employeesWHERE department_id <> 100;
#案例2:工资小于15000的姓名还有工资SELECT last_name , salary FROM employeesWHERE salary < 15000;
# 二、按逻辑表达式筛选# 案例1:查询部门编号不是 50-100 之间的员工的姓名、部门编号、邮箱# 方式1SELECT last_name , department_id , emailFROM employeesWHERE department_id<50 OR department_id>100;# 方式2SELECT last_name , department_id , emailFROM employeesWHERE NOT(department_id>=50 AND department_id<=100);
# 案例2:查询奖金率>0.03 或者 员工编号在66-110之间的员工信息SELECT * FROM employeesWHERE commission_pct>0.03 OR (employee_id>=60 AND employee_id<=110);
# 三、模糊查询# 1. like/*功能:一般和通配符搭配使用,对字符型数据进行部分匹配查询常见通配符:_ 任意单个字符% 任意多个字符*/
# 案例1:查询姓名中包含字符a的员工信息SELECT *FROM employeesWHERE last_name LIKE '%a%';
# 案例2:查询姓名中最后一个字符为e的员工信息SELECT *FROM employeesWHERE last_name LIKE '%e';
# 案例3:查询姓名中第一个字符为e的员工信息SELECT *FROM employeesWHERE last_name LIKE 'e%';
# 案例4:查询姓名中第3个字符为x的员工信息SELECT *FROM employeesWHERE last_name LIKE '__x%';
# 案例5:查询姓名中第二个字符为_的员工信息SELECT *FROM employeesWHERE last_name LIKE '_\_%';# \ :转义字符# 也可以自己设置转义字符SELECT *FROM employeesWHERE last_name LIKE '_$_%' ESCAPE '$';
# 2. in /*功能:查询某字段的值是否属于指定的列表之内a in(常量0,常量1,常量2,常量3,...)a not in(常量0,常量1,常量2,常量3,...)*/
# 案例1 :查询部门编号是30,50,90的员工姓名,部门编号SELECT last_name , department_idFROM employeesWHERE department_id IN(30,50,90);
# 案例2:查询工种编号不是SH_CLERK或IT_PROG的员工信息SELECT *FROM employeesWHERE job_id NOT IN ('SH_CLERK','IT_PROG');
# 3. between and /*功能:判断某个字段的值是否介于xx之间*/
# 案例1:查询部门编号是30-90之间的部门编号、员工姓名SELECT department_id ,last_nameFROM employeesWHERE department_id BETWEEN 30 AND 90 ;
# 案例2:查询年薪不是100000-200000之间的员工姓名、工资、年薪SELECT last_name , salary , salary*12*(1+IFNULL(commission_pct, 0)) 年薪FROM employeesWHERE salary*12*(1+IFNULL(commission_pct, 0)) <100000 OR salary*12*(1+IFNULL(commission_pct, 0)) > 200000;
SELECT last_name , salary , salary*12*(1+IFNULL(commission_pct, 0)) 年薪FROM employeesWHERE salary*12*(1+IFNULL(commission_pct, 0)) NOT BETWEEN 100000 AND 200000;
# 4. is null / is not null# 案例1 :查询没有奖金的员工信息SELECT *FROM employeesWHERE commission_pct IS NULL;
#案例2 :查询有奖金的员工信息SELECT*FROM employeesWHERE commission_pct IS NOT NULL ;
# <=> : 安全等于,既能判断普通内容,又能判断null值
# 课堂测试
# 1.查询工资大于12000的员工姓名和工资SELECT last_name , salaryFROM employeesWHERE salary > 12000;
# 2.查询员工工号为176的员工的姓名和部门号和年薪SELECT employee_id , last_name , department_id,salary*12*(1+IFNULL(commission_pct,0))年薪FROM employeesWHERE employee_id=176;
# 3.选择工资不在5000到12000的员工的姓名和工资SELECT last_name , salaryFROM employeesWHERE salary NOT BETWEEN 5000 AND 12000;
# 4.选择在20 或50 号部门工作的员工姓名和部门号SELECT last_name , department_idFROM employeesWHERE department_id IN(20 , 50);
# 5.选择公司中没有管理者的员工姓名及job_idSELECT last_name , job_id FROM employeesWHERE manager_id IS NULL ;
# 6.选择公司中有奖金的员工姓名,工资和奖金级别SELECT last_name , salary , commission_pctFROM employeesWHERE commission_pct IS NOT NULL ;
# 7.选择员工姓名的第三个字母是a的员工姓名SELECT last_nameFROM employeesWHERE last_name LIKE '__a%';
# 8.选择姓名中有a和e的员工姓名SELECT last_nameFROM employeesWHERE last_name LIKE '%a%' AND last_name LIKE '%e%';
# 9.显示出表employees中first name 以 e 结尾的员工信息SELECT *FROM employeesWHERE first_name LIKE '%e';
# 10.显示出表中部门编号在80-100之间的姓名、职位SELECT last_name,job_idFROM employeesWHERE department_id BETWEEN 80 AND 100;
# 11.显示表中manager_id 是100,101,110的员工的姓名职位SELECT last_name , job_idFROM employeesWHERE manager_id IN (100 , 101 , 110);

3.排序查询

/*语法:select 查询列表from 表明where 筛选条件order by 排序列表
执行顺序:1.from 子句2.where 子句3.select 子句4.order by 子句
举例:select last_name , salaryfrom employeeswhere salary>10000order by salary ;
特点:1.排序列表可以是单个字段、多个字段、表达式、函数、列数、以及以上的组合2.升序,通过asc,默认 降序,通过deac*/
# 一、按单个字段排序# 案例1:员工编号大于120的工资降序SELECT * FROM employees WHERE employee_id>120 ORDER BY salary DESC;
# 二、按表达式排序# 案例1:对有奖金的员工,按年薪降序SELECT * , salary*12*(1+IFNULL(commission_pct,0))年薪FROM employeesWHERE commission_pct IS NOT NULLORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
# 三、按别名排序# 案例1:对有奖金的员工,按年薪降序SELECT * , salary*12*(1+IFNULL(commission_pct,0))年薪FROM employeesWHERE commission_pct IS NOT NULLORDER BY 年薪 DESC;
# 四、按函数的结果排序# 案例1:根据姓名的字数长度进行升序SELECT LENGTH(last_name),last_nameFROM employeesORDER BY LENGTH(last_name);
# 五、按多个字段进行排序# 案例1:查询员工的姓名、工资、部门编号、先按工资升序、再按部门编号降序SELECT last_name , salary , department_idFROM employeesORDER BY salary ASC , department_id DESC ;
# 六、按列数排序SELECT * FROM employees ORDER BY 2;
# 作业:USE myemployees# 1.查询员工的姓名和部门号和年薪,按年薪降序SELECT last_name , department_id , salary*12*(1+IFNULL(commission_pct , 0))年薪FROM employeesORDER BY 年薪 DESC;
# 2.选择工资不在8000到17000的员工姓名和工资,按工资降序SELECT last_name , salary FROM employees WHERE salary NOT BETWEEN 8000 AND 17000ORDER BY salary DESC;
# 3.查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,在按部门编号升序SELECT *FROM employeesWHERE email LIKE '%e%'ORDER BY LENGTH(email) DESC , department_id;


先写这么多,仅供参考,欢迎指点。

如果你有希望实现的内容,或者在过程中遇到了某些困难,欢迎交流探讨!

/如有纰漏 请联系我 十分感谢/

长按图片,点击关注



版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《MySQL基础(一)》的版权归原作者「三分稚气」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注三分稚气微信公众号

三分稚气微信公众号:SFZQ59428

三分稚气

手机扫描上方二维码即可关注三分稚气微信公众号

三分稚气最新文章

精品公众号随机推荐