SQL合并查询、连接查询、SQL数据类型

关联查询例题

select count(*)
from t_activity a 
join t_user u1 on a.activity_owner = u1.user_id
join t_user u2 on a.activity_create_by = u2.user_id
left join t_user u3 on a.activity_edit_by = u3.user_id
where
a.activity_name like "%Lex%"
and 
u1.u_login_act like "%xx%"

上面的查询代码,查的是某个市场活动,查t_activity表(并设置别名为a,简写),关联查询t_user表(设置别名为u1),没有on后面的条件,a表中每一行数据都对应user表中的全部数据【联系实际就是一个市场活动表,我想要查这个活动负责人的信息,给a表一个owner列,值与其负责人的user_id相等,方便查询】,on后面是过滤这些数据,留下u1表中user_id列与a表中activity_owner(市场活动所有者)列相等的数据,【联系实际,也就是不是每一个用户都会去负责市场活动,所以a表要的数据是当前负责人的个人信息】,再次过滤,查的是市场活动创建者的个人信息,再次过滤,查的是市场活动编辑者的个人信息,查的是市场活动名字有Lex且这个市场活动负责人的u_login_act包含xx的

合并查询

使用合并查询必须保证合并的两张表个的列数相同,列的数据类型可以不同 比如合并的两张表是两个班级的学生信息表,列名都为id和name 则可以合并这两种表

SELECT * FROM t1 UNION SELECT * FROM t2;

保留重复记录

SELECT * FROM t1 UNION ALL SELECT * FROM t2;

一、内连接查询(INNER JOIN | ON)

SELECT * FROM t_employees
INNER JOIN t_jobs
ON t_employees.`job_id` = t_jobs.`job_id`;

二、三表连接

SELECT * FROM t_employees
INNER JOIN t_departments
ON t_employees.`department_id` = t_departments.`dpID`
INNER JOIN t_jobs
ON t_jobs.`job_address` = t_departments.`dpID`;

三、左外连接(LEFT JOIN ON)

左外连接,是以左表为主表,依次向右匹配,匹配到,返回结果,匹配不到,则返回NULL值填充

SELECT employee_id,first_name,salary,department_id 
FROM t_employees
LEFT JOIN t_departments
ON t_departments.`dpID` = t_employees.`department_id`;

上诉代码查询t_employees表和t_departments表,连接的过程当中用的是左连接,也就是LEFT JOIN,左连接就是以左表为主表去向右表去匹配,匹配到就显示这个完整的结果,如果左表t_employees对应的t_departments表没有结果则显示NULL

四、右外连接(RIGHT JOIN ON)

SELECT employee_id,first_name,salary,department_id 
FROM t_employees
RIGHT JOIN t_departments
ON t_departments.`dpID` = t_employees.`department_id`;

五、数据类型

类型 大小 范围 格式 用途 int 4字节 -2147483648~2147483647 整数 double 8字节 -1.797E+308~-2.22E-308 双精度浮点数 double(M,D) M表示整数位和小数位的总和,D表示小数位 双精度浮点数 decimal(M,D) M最大值为65 小数值 DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值 TIME 3 HH:MM:SS 时间值 YEAR 1 1901/2155 YYYY 年份值 DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 日期和时间 char 0~255字符 定长字符串char(10)个字符 VARCHAR 0~65535字节 变长字符串varchar(10)10个字符 BLOB 0~65535字节 二进制形式的长文本数据 TEXT 0~65535字节 长文本
经验分享 程序员 微信小程序 职场和发展