主外键,子查询

use lianxi0720
go
create table bumen
(
bcode int primary key,--部门编号
bname varchar(20), --部门名称
bceo varchar(20), --部门负责人
btel varchar(20) --部门电话
)
go
create table renyuan
(
code int primary key identity(10001,1),
name varchar(20),
sex varchar(10),
age int,
bc int
)
go

--设置好外间关系之后来插入数据
--先插入部门的数据
insert into bumen values(1001,'财务部','张三','1234567')
insert into bumen values(1002,'销售部','李四','2345678')
insert into bumen values(1003,'人事部','王五','3456789')
insert into bumen values(1004,'技术部','赵六','4567890')
go

select * from bumen
--插入人员表的信息
insert into renyuan values('张三','男',33,1001)
insert into renyuan values('李四','女',27,1002)
insert into renyuan values('王五','男',25,1003)
insert into renyuan values('赵六','女',24,1004)

insert into renyuan values('王祖蓝','男',38,1001)
insert into renyuan values('马蓉','女',33,1002)
insert into renyuan values('王宝强','男',36,1003)
insert into renyuan values('杨颖','女',28,1004)

insert into renyuan values('郑恺','男',29,1001)
insert into renyuan values('范冰冰','女',40,1002)
insert into renyuan values('张伟','男',30,1003)
insert into renyuan values('蔡依林','女',37,1004)

select * from renyuan

--查询年纪最大的人的部门名称
select MAX(age) from renyuan
select bc from renyuan where age=40
select bname from bumen where bcode=1002
--子查询
select bname from bumen where bcode=
(select bc from renyuan where code=
(select code from renyuan where age =
(select max(age) from renyuan ))
)

--按照年龄排序后的前三个人的所有信息
select top 3 * from renyuan order by age
--按照年龄排序后的6/7/8名人员的所有信息
select top 3 * from renyuan where code not in
(select top 5 code from renyuan order by age)
order by age
--分页查询,要求 一页给显示5条数据
--第一页
select top 5 * from renyuan
--第二页
select top 5 * from renyuan where code not in(select top 5 code from renyuan)
--第三页
select top 5 * from renyuan where code not in(select top 10 code from renyuan)

--总共有几页????
select CEILING( COUNT(*)/5.0) from renyuan
--查询销售部里的年龄大于35岁的人的所有信息
select * from renyuan where code in
(select code from renyuan where age>35 and bc=
(select bcode from bumen where bname='销售部')
)

--查看所有人员信息,将部门编号替代为部门名称
select code , name, sex , age , (select bname from bumen where bumen.bcode= renyuan.bc)as 部门 from renyuan
--将每个人的主管添加上
select code , name, sex , age , (select bname from bumen where bumen.bcode= renyuan.bc)as 部门,
(select bceo from bumen where bumen.bcode= renyuan.bc) from renyuan

 

转载于:https://www.cnblogs.com/lulichao/p/5833027.html

### 主外键的定义、作用及使用方法 #### 主(Primary Key) 主是指在一个表中唯一标识每一行记录的一个字段或一组字段组合[^1]。它的主要特性如下: - 不允许存在重复值。 - 不允许为空(NULL)。 主的设计对于确保每一条数据的独特性和可追溯性至关重要,在数据库查询优化等方面也有着不可替代的地位。 #### (Foreign Key) 是用来建立和加强两个表数据之间链接的一列或多列,通常是另一个表中的主所在位置[^1]。通过设置约束条件,可以维护参照完整性(referential integrity),从而防止非法操作影响关联表的数据一致性。 ##### 创建语法实例 ```sql CREATE TABLE Orders ( OrderID int NOT NULL, CustomerID int, OrderDate datetime, PRIMARY KEY (OrderID), FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ); ``` 此SQL语句创建了一个名为`Orders`的新表格,并设置了`CustomerID`作为指向`Customers`表里`CustomerID`这一主关系。 #### 的作用 的主要功能在于维持不同表之间的参照完整性,具体表现形式多样: - **级联删除(CASCADE DELETE)**:当父表(即拥有被引用为主的那个表)里的某条记录遭到移除时,所有子表(含有相应的那些表)内的匹配项也会随之消失[^2]。 - **设为空(NULL ON DELETE)**:一旦父表中有任何一行被消除,则相对应地把子表中字段更新成null状态[^2]。 - **限制删除(NO ACTION/RESTRICT)**:假使尝试去销毁某个存在于子表所对应的部分,那么整个过程将会失败并抛出错误提示消息[^2]。 同样适用于以上三种情况下的更新动作(update actions)亦遵循相似逻辑处理机制。 #### 使用场景举例说明 假设我们正在构建一家电子商务网站后台管理系统,其中涉及到顾客信息(`Customers`)以及订单详情(`Orders`)两张相互依赖的核心业务实体模型。为了保障这两部分资料同步修改或者清理时不发生冲突矛盾现象,我们可以采用如下策略进行绑定配置: 1. 定义好各自独立存在的基础型态结构; 2. 明确指出哪边充当主导角色另一端服从跟随原则; 3. 根据实际需求挑选合适的触发行为选项完成最终部署工作流程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值