主外键 子查询

主键、外键和子查询

1 主键和外键的区别

1.1定义
主键--唯一标识一条记录,不能有重复的,不允许为空

外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空

1.2作用

主键--用来保证数据完整性

外键--用来和其他表建立联系用的

1.3个数:

主键--主键只能有一个

外键--一个表可以有多个外键

2 主键语句
code int PRIMARY KEY IDENTITY(1,1), 
--PRIMARY KEY 标识主键
--IDENTITY(1,1) 从一开始,每增加一行加一;
插入数据不用再写。

3 外键
3.1 外键取值规则:空值或参照的主键值。

(1)插入非空值时,如果主键表中没有这个值,则不能插入。

(2)更新时,不能改为主键表中没有的值。

(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。

(4)更新主键记录时,同样有级联更新和拒绝执行的选择。
3.2设置
选中表->右键:设计->选中需要设置外键的字段->选择“关系”->选择"添加"
->在表和列规范处选择右边省略号->再选择相应关系

3 子查询
在SQL语言中,当一个查询语句嵌套在另一个查询的查询条件之中时,称为子查询
3.1(1)子查询要用括号括起来; 
(2)将子查询放在比较运算符的右边; 
(3)不要在子查询中使用order by子句,
select语句中只能有一个order by子句,并且它只能是主select语句的最后一个子句。
但是如果有top n 的话, 可以有order by.
3.2分页查询中:select top 5 * from emp where empno in 
(select TOP 5 empno from emp order by empno desc) order by empno )

3.3单行子查询 :单行子查询是指子查询的返回结果只有一行数据。
(1)select code,name,sex,age,(select bname from bumen where bumen.bcode=renyuan.bc),
(select bceo from bumen where bumen.bcode=renyuan.bc)from renyuan
(2)select code from renyuan where age=(select max(age) from renyuan where sex=‘男‘)
3.4多行子查询:多行子查询即是子查询的返回结果是多行数据。当
主查询语句的条件语句中引用子查询结果时必须用多行比较符号(IN,ALL,ANY)来进行比较。
select top 5 *from renyuan where code not in(select top 5 code from renyuan)

时间: 2024-10-13 16:44:46

主外键 子查询的相关文章

数据库 SQLserver 主外键 子查询

use lianxigo--创建部门表create table bumen ( bmcode int primary key,  --部门编号  bmname varchar(20),  --部门名字 bmceo varchar(20),  --部门主管 bmtel varchar(20),  --部门电话)go--创建人员表create table renyuan( code int primary key identity(1001,1),  --员工编号 name varchar (20)

主键 外键 子查询 练习 学生选修课

create database xuankebiao--创建一个选课表的数据库 go use xuankebiao--使用这个数据库 go create table kechengbiao--添加一个课程表的表 ( kcode int primary key not null,--课程编号,主键 kname varchar(20), klaoshi varchar(20), kdh varchar(20), ) create table xiyuanbiao--添加一个院系的表 ( xicode

主外键多表查询demo

https://www.cnblogs.com/DragonFire/p/6949767.html mySQL练习-主外键多表查询 MySQL练习-主外键多表查询 练习: 1.建立表关系: 请创建如下表,并创建相关约束 创建表并建立表关系 表数据 补充联合唯一 2.操作练习: 1.自行创建测试数据 测试失败数据 2.查询"生物"课程比"物理"课程成绩高的所有学生的学号: 多表嵌套查询 3.查询平均成绩大于60分的同学的学号和平均成绩: HAVING用法 4.查询所有

通过SQL脚本来查询SQLServer 中主外键关系

在SQLServer中主外键是什么,以及主外键如何创建,在这里就不说了,不懂的可以点击这里,这篇文章也是博客园的博友写的,我觉得总结的很好: 此篇文章主要介绍通过SQL脚本来查看Sqlserver中主外键关系: SELECT f.name AS '关系名称', OBJECT_NAME(f.parent_object_id) AS '表名称', COL_NAME(fc.parent_object_id,fc.parent_column_id) AS '字段名称', OBJECT_NAME (f.r

oracle 主外键管理

使用主外键约束使得数据具有完整性. 1.查询表上所有的约束 select * from user_constraints t where t.table_name='FATHER'; 2.查询具有主外键关系的表 select c.owner,c.constraint_name,c.constraint_type,c.table_name,f.owner,f.constraint_name,f.constraint_type,f.table_name from dba_constraints c,

关于表的主外键关系练习 师生 分数表

--创建三个表 --表一:学生表 student--学号:code int (主键)从1开始--姓名:name varchar(50)--性别:sex char(10)--班级:banji char(10)--语文教师编号:yujiao int --数学教师编号:yujiao int --英语教师编号:yujiao int --表二:教师表 teacher--教师名字:name --教师编号:code int (主键) 从1001开始--负责课程:lesson char(10)(语文.数学.英语

清除oracl中有主外键关联的表中的部分数据。

1.禁用主外键BEGINfor c in (select 'ALTER TABLE '||TABLE_NAME||' DISABLE CONSTRAINT '||constraint_name||' ' as v_sql from user_constraints where CONSTRAINT_TYPE='R') loop EXECUTE IMMEDIATE c.v_sql;end loop;end;2.清空数据源.清空所有数据.一般情况是对表进行条件删除.begin for ec in (

SQLserver中的视图与主外键的创建

一.背景 原来学过数据库的相关内容,只是形式上的,从来也没有实践过,徐徐飘过而已,如今在做机房时,很多知识需要用到视图,才开始去慢慢的实践. 视图:我理解的就是一张表,它把我们所需要的某个表或某几个表中的部分信息提取出来,形成了一张临时的表. 它主要有两个优点:1.简单,它呈现给我们的数据就是我们想要的数据,没有多余的. 2.安全,提供给用户它们权限范围内的数据 我为什么会用到视图?举一个简单的例子,在查询用户信息时,我们可能会用到两张表中的内容.那么这个时候我就需要将两张表中我需要的数据提取出

oracle主从表主外键对应关系

一.首先让我们来了解下什么是主外键? 1.主键:唯一标识数据表中的某一行 1) 一个表中只能有一个主键.如果在其他字段上建立主键,则原来的主键就会取消.在ACCESS中,虽然主键不是必需的,但最好为每个表都设置一个主键. 2)主键的值不可重复,也不可为空(NULL).主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义. 3)主键的创建:在建置新表格时设定主键的方式 MySQL:  CREATE TABLE Customer (SID integer,La