SQL_(AND,OR,NOT)与或非,内部连接(INNER JOIN),左连接(LEFT JOIN ),右连接(RIGHT JOIN)完整外部连接(FULL OUTER J

SQL_(AND,OR,NOT)与或非

  1. AND&OR运算符用于根据一个以上的条件过滤记录,即用于组合多个条件以缩小SQL语句中的数据。
  2. WHERE子句可以与AND,OR和NOT运算符结合使用

AND和OR运算符用于根据多个条件筛选记录:

  1. 如果由AND分隔的所有条件为TRUE,则AND运算符显示记录。
  2. 如果使用AND运算符组合N个条件。对于SQL语句执行的操作(无论是事务还是查询),所有由AND分隔的条件都必须为TRUE。
  3. 如果由OR分隔的任何条件为真,则OR运算符显示记录。
  4. 如果使用OR运算符组合N个条件。对于SQL语句执行的操作(无论是事务还是查询),OR分隔的任何一个条件都必须为TRUE。
  5. 如果条件不为TRUE,则NOT运算符显示记录。

AND语法:

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;

选择Java1_student中,年龄大于21并且成绩高于60的人

SELECT * FROM Java1_student 
where Java1_age>21
AND Java1_grade>60;

在这里插入图片描述

OR语法

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

选择Java1_student中,年龄小于21,或者成绩低于60的人

SELECT * FROM Java1_student 
where Java1_age<21
or Java1_grade<60;

在这里插入图片描述

NOT语法

SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;
SELECT * FROM Java1_student 
where not Java1_grade=35;

在这里插入图片描述

SQL_连接(Join)

  1. SQL join 用于把来自两个或多个表的行结合起来。就是先确定一个主表作为结果集,然后,把其他表的行有选择性地“连接”在主表结果集上。
  2. 连接是在WHERE子句中执行的。可以使用几个操作符连接表,例如=、<、>、<=、>=、!=、BETWEEN、LIKE、 和NOT。

SQL_内部连接(INNER JOIN)

  1. 内部链接INNER JOIN关键字选择两个表中具有匹配值的记录。

INNER JOIN 语法

SELECT column_name(s)
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;
  1. INNER JOIN 与 JOIN 是相同的,在这里插入图片描述
    Java1_student表
    在这里插入图片描述
    Java1_studentGrade表

在这里插入图片描述

使用 INNER JOIN连接两个表并按照成绩从高到低返回学生信息

SELECT Java1_student.id, Java1_student.name,Java1_studentGrade.id,Java1_studentGrade.Grade
FROM Java1_student
INNER JOIN Java1_studentGrade
ON Java1_student.id = Java1_studentGrade.id
ORDER BY Java1_studentGrade.Grade DESC;

在这里插入图片描述

注意:
如果表中至少有一个匹配项,INNER JOIN 关键字将返回一行。如果 “Student” 表中的行与"studentGrade" 不匹配,则不会列出行。

SQL_左连接

  1. SQL左链接LEFT JOIN关键字返回左表(表1)中的所有行,即使在右表(表2)中没有匹配。如果在正确的表中没有匹配,结果是NULL

LEFT JOIN 语法一:

SELECT column_name(s)                
FROM table1                
LEFT JOIN table2                
ON table1.column_name=table2.column_name;

LEFT JOIN 语法二:

SELECT column_name(s)                
FROM table1                
LEFT OUTER JOIN table2                
ON table1.column_name=table2.column_name;      

在这里插入图片描述
连接两个表并按照成绩从高到低返回学生信息

SELECT Java1_student.id, Java1_student.name,Java1_student.sex,Java1_studentGrade.id,Java1_studentGrade.Grade
FROM Java1_student
LEFT JOIN Java1_studentGrade
ON Java1_student.id = Java1_studentGrade.id
ORDER BY Java1_studentGrade.Grade DESC;

在这里插入图片描述

注意:

  1. LEFT JOIN 关键字返回左表(student)中的所有行,即使在右边表(studentGrade)中没有匹配。

SQL_右连接(RIGHT JOIN)

  1. RIGHT JOIN 关键字返回右表(table2)的所有行,即使在左表(table1)上没有匹配。如果左表没有匹配,则结果为 NULL

右连接语法:

SELECT column_name(s)
FROM table1
RIGHT JOIN table2 ON table1.column_name = table2.column_name;

注意:

  1. 在一些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN。

在这里插入图片描述
注意:RIGHT JOIN 关键字返回右表(studentGrade)的所有行,即使在左表(student)中没有匹配。

SELECT Java1_student.id, Java1_student.name,Java1_student.sex,Java1_studentGrade.id,Java1_studentGrade.Grade
FROM Java1_student
RIGHT JOIN Java1_studentGrade
ON Java1_student.id = Java1_studentGrade.id
ORDER BY Java1_studentGrade.Grade DESC;

在这里插入图片描述

SQL_完整外部连接(FULL OUTER JOIN)

  1. 当左(表1)或右(表2)表记录匹配时,FULL OUTER JOIN关键字将返回所有记录
  2. FULL OUTER JOIN可能会返回非常大的结果集!

完整外部连接语法:

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;

在这里插入图片描述

SELECT Java1_student.id, Java1_student.name,Java1_studentGrade.Grade
FROM Java1_student
FULL OUTER JOIN Java1_studentGrade
ON Java1_student.id = Java1_studentGrade.id
ORDER BY Java1_studentGrade.Grade DESC;

在这里插入图片描述
注意

  1. FULL OUTER JOIN关键字返回左表(StudentGrade)中的所有行,以及右表(student)中的所有行。
  2. 如果 "StudentGrade"中的行中没有"student"中的匹配项,或者"student"中的行中没有 "StudentGrade"中的匹配项,那么这些行也会列出。

SQL_自连接

  1. 自联接是一种常规联接,但表本身是连接的。

自连接语法

SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;
SELECT Java1_student.id, Java1_student.name,Java1_studentGrade.Grade
FROM Java1_student,Java1_studentGrade
WHERE Java1_student.id = Java1_studentGrade.id;

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值