SQL连接查询

连接查询

等值与非等值连接查询

当连接运算符为“=”时,称为等值连接。使用其他运算符称为非等值连接

select cno, grade
from s, sc
where s.sno=sc.sno and sname='zhangsan';

自身连接

一个表与自己进行连接,需要给表起别名用于区别,由于所有属性名都是同名属性,因此必须使用表别名前缀

select a.*, b.* 
from sc a, sc b
where a.sno=b.sno;

复合条件连接

where子句中含多个连接条件

select s.sno, sname
from s, sc
where s.sno=sc.sno and cno=002and grade>90;

自然连接

自然连接(natural join)运算作用于两个关系,并产生一个关系作为结果,自然连接只考虑那些在两个关系模式中都出现的属性上取值相同的元组对。

例如:

select name,course_id
from instruct,teaches
where instructor.ID = teaches.ID

两关系表中仅有同名属性ID,该查询可以用SQL的自然连接运算更简洁地写作:

select name,course_id
from instructor natural join teaches;

在一个SQL查询的from子句中,可以用自然连接将多个关系结合在一起

select A1,A2,A3,...,An
from r1 natural join r2 natural join ... natural join rm
where P;

join … using

示例1:

select name,title
from instructor natural join teaches,course
where teaches.course_id = course.course_id;

示例1中该语句先计算instruct和teaches的自然连接,再计算该结果与course的笛卡尔积

示例2:

select name,title
from instructor natural join teaches natural join course;

示例2中,若instructor与teaches的自然连接包括属性(ID,name,dept_name,salary,course_id,sec_id),而course关系包含的属性为(course_id,title,dept_name,credits)这二者进行自然连接的结果要求dept_name与course_id在各自取值上相同,与上述查询语句不同,可能会查询出空的结果关系。

因此SQL提供了一种自然连接的构造形式,允许用户指定需要哪些列相等r1 join r2 using(A1,A2)

select name,title
from (instructor natural join teaches) join course using(course_id)

外连接

  • 悬浮元组:两个关系在做自然连接时被舍弃的元组
  • 外连接:把悬浮元组也保存在自然连接的结果关系中,而在其他属性上填空值
  • 左外连:只保留左边关系R中的悬浮元组
  • 右外连:只保留右边关系S中的悬浮元组

外连接:

select s.*, cno, grade
from s, sc
where s.sno=sc.sno

左外连:

select s.sno, sname, ssex, sbirth, college, cno, grade 
from s left outer join sc on (s.sno=sc.sno);

等值连接

  • inner join(等值连接) 只返回两个表中联结字段相等的元组
  • 等值连接中重复列不删除.
select * from a
inner join b 
on A.ID = B.ID
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Python中连接查询数据库,你可以使用pymssql模块。首先,你需要使用pymssql.connect()函数建立与数据库的连接,提供服务器名称、用户名、密码和数据库名称作为参数。如果连接成功,你可以创建一个游标对象来执行SQL语句。例如,你可以使用cursor.execute()方法执行查询语句,然后使用cursor.fetchone()方法逐行读取查询结果。最后,记得关闭游标和连接。 在使用pymssql连接数据库时,可能会遇到一些问题。例如,如果你之前使用的是Windows身份验证,而现在要改为SQL身份验证,可能会遇到错误223。你可以按照以下步骤解决这个问题: 1. 以Windows验证模式进入数据库管理器。 2. 右击sa,选择属性,在常规选项卡中重新填写密码和确认密码,并取消强制实施密码策略。 3. 点击状态选项卡,勾选授予和启用。 4. 右击实例名称,选择属性。 5. 点击安全性,确认选择了SQL SERVER和Windows身份验证模式。 6. 配置TCP/IP,然后重启Microsoft SQL Server服务。 另外,如果在连接数据库时出现报错,可能是因为数据库参数中的数据库名称错误。你可以使用SELECT Name FROM Master...SysDatabases ORDER BY Name语句查询当前所有数据库的名称,以解决这个问题。 要使用pymssql模块,你需要先下载并安装它。你可以使用pip install pymssql命令来安装pymssql模块。 希望这些信息对你有帮助! #### 引用[.reference_title] - *1* *2* *3* [Python - python如何连接sql server数据库](https://blog.csdn.net/Ainwa/article/details/122071738)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值