DQL语言(2)与DML语言

一、多表查询(2)
1.join连接
语法select 查询列表 from 表名1 jion 表名2 on 连接条件
后面可接分组、筛选、排序
分为内连接和外连接 、自连接 内连接和等值连接一样,自连接顾名思义就是一张表的连接
自连接案例:查询员工的名字、上级的名字
DQL语言(2)与DML语言
差选同一张表的两个字段 然后建立连接条件就行了

外连接 语法select 查询列表 from 表名1 left/right/full outer join 表名2 on 连接条件
应用场景:用于查询一个表中有,另一个表没有的记录
比如:查询哪个部门没有员工
DQL语言(2)与DML语言
如上 查询那个部门没有员工,那要查询的是部门,所以先查询部门,因为要显示将没有员工的部门也要显示出来,所以用left 即以部门的那张表为基准,然后再添加WHERE条件即可。

二、常见函数
我的理解是,把它们当作JAVA里的方法,里面放入你想放入的参数
1字符函数:
LOWER() 转小写;UPPER() 转大写;CONCAT() 拼接;SUBSTR(里面传入你想截图的字符,从第几个开始到第几个结束,前后都包含) 截取;LENGTH() 显示字符长度;INSTR(里面传入两个参数,字符串,字符)表示字符在字符串的索引值;TRIM(‘a’ FROM ‘bacd’) 表示从a的位置往后截取,不包含a;REPLACE(‘abcd’,‘b’,‘m’)将被替换的字符写在前面,替换的字符写在后面。
2.数字函数
ROUND() 四舍五入 后面的参数表示要保留的小数
TRUNC(45.926, 2);截断,表示从2的位置截断,不包含2。
MOD()求两个参数的余数;
3、日期函数
now() 获取当前日期
STR_TO_DATE(‘9-13-1999’,’%m-%d-%Y’) 将日期格式的字符转换成指定格式的日期
DATE_FORMAT(‘2018/6/6’,‘%Y年%m月%d日’)将日期转换成字符。

三、子查询
理解:类似与嵌套FOR循环 查询里面嵌套查询。可将查询出来的东西看错是返回值,比如在1-10里面找比五小的,找到后然后在找比3小的,这个比五小的就相当于一个返回值给外层查询使用。
直接看案例比较通俗易懂:返回job_id与141号员工相同,salary比143号员工多的员工 姓名,job_id 和工资
DQL语言(2)与DML语言
先找到与141号员工相同的jobid,再找到工资比143号员工多的员工。两个条件都满足就是我们要查的人

分页查询:就是分多次显示,在查询完后加上LIMIT,后面再接上两个参数,一个是行索引,一个是行数,如limit 0,10;则表示为从索引为0的行数往后数10行为一页。没有10行则有多少显示多少。
一般用在数据量过大一页显示不完的情况下。

DML语言

DML(Data Manipulation Language)数据操纵语言,顾名思义就是增删改查没有查,能够添加,修改,删除数据的语言。
添加
insert into [字段名,字段名。。。。] values [值,值。。。]一次只能向表里插入一条数据
如:INSERT INTO t_mysql_departments(department_id, department_name, manager_id, location_id)
VALUES (70, ‘Public Relations’, 100, 1700);表示向t_mysql_departments这个表里添加四个字段的数据,值一一对应,如果不写字段名,则会按顺序将值添加进去。字符型和日期型用单引号包起来。
拷贝数据:先创建一个表,然后字段名与需要拷贝的一样。然后用 insert into 【新表名】 select * from 【需要拷贝的表名】;这样就能完成了复制。其实CREATE TABLE 【新表名】
as SELECT * FROM 【需要拷贝的表名】,这样在创建表的时候也能直接复制。
修改
update 【表名】 set 【字段名】=XXXXX;
可以一次性修稿多条数据,后面可接WHERE条件,指定需要更新的数据。
案例:修改没有男朋友的女神的男朋友编号都为2号
DQL语言(2)与DML语言
删除
跟修改一样,将update改成delete就行了。

相关文章: