申请个人网站多少钱,洛阳网站制作建设,wordpress 百度蜘蛛,wordpress写入到磁盘上篇结束了java基础#xff0c;本篇主要对Mysql中的一些常用的方法进行了总结#xff0c;主要对查询方法进行了讲解#xff0c;包括重要的多表查询用到的内连接和外连接等#xff0c;以下代码可以直接复制到可视化软件中#xff0c;方便阅读以及练习#xff1b; SELECT *…上篇结束了java基础本篇主要对Mysql中的一些常用的方法进行了总结主要对查询方法进行了讲解包括重要的多表查询用到的内连接和外连接等以下代码可以直接复制到可视化软件中方便阅读以及练习 SELECT *FROM employees;
SELECT employee_id,salary*(1IFNULL(commission_pct,0))*12 年工资FROM employees;
#着重号表名和关键字重合了需要用
SELECT *FROM order;
#查询常数会自动在前面加一列
SELECT hello,123,employee_id FROM employees;
#显示表结构表的信息
DESCRIBE employees;
#去重复distinct:
SELECT job_id FROM employees;
SELECT DISTINCT job_id FROM employees;
#where条件查询一定要在from结构的后面
SELECT *FROM employees WHERE last_namekING;
SELECT *FROM employees WHERE department_id90;
#运算符此处判断是否等于不用两个一个即可
SELECT employee_id FROM employees WHERE employee_id %20;
SELECT 10,1!0;
#安全等于专门为null而使用以下是例子首先null参与比较的话结果全是null无论是1null还是1null结果都是null如果用安全等于就会结果正常值
SELECT 1NULL;
SELECT 1NULL;
SELECT employee_id,salary,commission_pct FROM employees WHERE commission_pctNULL;
SELECT employee_id,salary,commission_pct FROM employees WHERE commission_pctNULL;
#运算符isnull is not null isnull()这个是一个方法;
SELECT employee_id,salary,commission_pct FROM employees WHERE commission_pct IS NULL;
SELECT employee_id,salary,commission_pct FROM employees WHERE isnull(commission_pct);
SELECT employee_id,salary,commission_pct FROM employees WHERE commission_pct IS NOT NULL;
#between and:
SELECT employee_id,salary FROM employees WHERE salary BETWEEN 6000 AND 8000;
#in not in:例如查询部门号为102030的员工信息:
SELECT employee_id,salary,department_id FROM employees WHERE department_id10 OR department_id20 OR department_id30;
SELECT employee_id,salary,department_id FROM employees WHERE department_id IN(10,20,30);
#LIKE 模糊查询
#查询last_name中包含字符串‘a’的员工信息注意 % 代表前面后面有不确定个字符例如以a开头a%;以a结尾%a;下划线代表一个不确定的字符例如查询lastname第二个字符是a的员工信息可以用_a%;
SELECT employee_id,salary,last_name FROM employees WHERE last_name LIKE %a%;
#排序order by 默认是从低到高从高到低是用ASC
SELECT employee_id,last_name,salary FROM employees order BY salary DESC;
#此处计算出来了年薪然后起别名annual_salary;
#一定要注意列的别名只能在order by中使用不能在where中使用
SELECT employee_id,last_name,salary,salary*12 annual_salary FROM employees order BY annual_salary DESC;
#二级排序按照department_id升序排序此时可能有想同的那对于相同的按照salary降序排序一样的三级排序就是在后面在加上一部分
SELECT employee_id,last_name,salary FROM employees order BY employee_id ASC,salary DESC;
#limit实现分页显示在后面加上即可例如查询32、33这两条数据limit后面第一个参数是第几个的前一个然后第二个参数代表每几个为一页
SELECT *FROM employees LIMIT 31,2;
#多表查询分为等值连接和非等值连接自连接和非自连接内连接和外连接三种类型
#例如想查询一个数据需要先从一个表中找到对应信息然后根据这个对应信息再去查询另一个表中查询重要信息
#然后根据这个重要信息再去查找另一个表最终得到数据因此这种方法非常麻烦所以想将表进行连接多表查询#以下department_name在departments表中employee_id在employees表中然后共同的属性是departent_id,但是
#这样查询是错误的得到的是笛卡尔积缺少了多表的连接条件
SELECT employee_id,department_name FROM employees,departments;
#正确方式此处多查询一下department_id这两个表中都有这个属性查询的时候要指明是哪个表里的
SELECT employee_id,department_name,employees.department_id
FROM employees,departments
WHERE employees.department_iddepartments.department_id;
#三表连接查询employee_id,last_name,department_name,city;
SELECT employee_id,last_name,department_name,city
from employees,departments,locations
WHERE employees.department_iddepartments.department_id AND locations.location_iddepartments.location_id
#非等值连接上面例子是等值连接下面是非等值连接
SELECT last_name,salary,grade_level
FROM employees,job_grades
WHERE salary BETWEEN lowest_sal AND highest_sal;
#自连接和非自连接
#想查询员工id和姓名以及其管理者的id和姓名这两个都在一张表中要自己和自己连接这时必须要起别名;
#注意如果对表起别名后select和where语句必须要使用别名不能使用原来的表名
SELECT emp.employee_id,emp.last_name,manager.employee_id,manager.last_name
FROM employees emp,employees manager
WHERE emp.manager_idmanager.employee_id;
#内连接和外连接
#内连接合并具有同一列的两个以上的表的行结果集中不包含一个表与另一个表不匹配的行上面那种就是内连接
#外连接有的员工可能没有部门也有的部门建好了但是还没有员工此时想把这些数据也查出来
#上面的多表查询都是都是内连接并且用的都是SQL92语法的最好是要用SQL99语法:举例三表连接
SELECT employee_id,last_name,department_name,city
FROM employees JOIN departments
ON employees.department_iddepartments.department_id
JOIN locations
ON departments.location_idlocations.location_id;
#外连接分为左外连接右外连接满外连接
#左外连接两个表在连接过程中除了返回满足连接条件的行以外还返回左表中不满足条件的行右外连接就是返回了右表中不满足条件的行
#练习查询所有的员工的employee_id,last_name,department_name;!!!注意是所有的说明就是要用外连接
#Mysql不支持SQl92实现外连接只能用SQL99语法
#左外连接也就是练习答案
SELECT employee_id,department_name
FROM employees LEFT OUTER JOIN departments#此处要用左外连接可以看到就查询到了除了符合的也查询到了没有部门的那个员工
ON employees.department_iddepartments.department_id;
#右外连接
SELECT employee_id,department_name
FROM employees RIGHT OUTER JOIN departments#查询到了没有人员的部门
ON employees.department_iddepartments.department_id;
#满外连接sql不支持ful因此需要重新实现
#SELECT employee_id,department_name
#FROM employees FULL JOIN departments
#ON employees.department_iddepartments.department_id;
#引入UNION返回两个查询结果集的并集去除重复记录中间交集部分UNIONALL效率更高没有去重也就是中间交集部分加了两遍
下面按照本图进行外连接查询的练习 #左中图(左外连接去除交集部分)参考word文档,
SELECT employee_id,department_name
FROM employees LEFT JOIN departments
ON employees.department_iddepartments.department_id
WHERE departments.department_id IS NULL;#右边没有就用右表null
#右中图右外连接去除交集部分
SELECT employee_id,department_name
FROM employees RIGHT JOIN departments
ON employees.department_iddepartments.department_id
WHERE employees.department_id IS NULL;#左边没有就用左表null
#左下图满外连接左上图左外连接 UNION ALL 右中图去除交集的右外连接
SELECT employee_id,department_name
FROM employees LEFT OUTER JOIN departments
ON employees.department_iddepartments.department_id
UNION ALL
SELECT employee_id,department_name
FROM employees RIGHT JOIN departments
ON employees.department_iddepartments.department_id
WHERE employees.department_id IS NULL;
#右下图右中图UNION ALL左中图
SELECT employee_id,department_name
FROM employees LEFT JOIN departments
ON employees.department_iddepartments.department_id
WHERE departments.department_id IS NULL
UNION ALL
SELECT employee_id,department_name
FROM employees RIGHT JOIN departments
ON employees.department_iddepartments.department_id
WHERE employees.department_id IS NULL;