主键

数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。

主键的作用

主键的主要作用如下:

(1)保证实体的完整性;

(2)加快数据库的操作速度;

(3) 在表中添加新记录时,数据库会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;

(4) 数据库自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

主键具有的特点:唯一性、非空性。

设置主键语句示例:

code int primary key,   主键不能为空,不能重复,确保唯一性

设置自增长主键语句示例:

code int primary key identity(1,1)从1开始,每次增长1,添加values时不用添加此列

设置外键:

在要设置外键的表上右键,选择设计,在需要设置外键的列名前右键,如下图:

选择关系单击,出现对话框,单击添加,单击表和列规范后面的省略号,如下图:

在出现的界面做出如下操作:

点击确定,再点击确定,操作成功。

子查询,又叫做嵌套查询。

将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询。

子查询有两种类型:

一种是只返回一个单值的子查询,这时它可以用在一个单值可以使用的地方,这时子查询可以看作是一个拥有返回值的函数;

另外一种是返回一列值的子查询,这时子查询可以看作是一个在内存中临时存在的数据表。

新建一个部门表,一个员工表,员工表中每个人员的部门列用部门的编号。

子查询示例:

create database lianxi117
go
use lianxi117
go
create table Student
(
bcode int primary key identity(101,1),
bname varchar(10),
bxueke int,
)
go
create table Teacher
(
tcode int primary key identity(1,1),
tkemu varchar(10),
tname varchar(10),
tage int,
)
go insert into Teacher values('语文','岳飞',68)
insert into Teacher values('数学','岳云',35)
insert into Teacher values('英语','岳雷',75)
insert into Teacher values('历史','叶挺',34)
insert into Teacher values('政治','张国荣',57)
insert into Teacher values('地理','华国生',46)
insert into Teacher values('生物','张桂芳',73)
insert into Teacher values('物理','李云龙',23)
insert into Teacher values('化学','索超',48)
go select *from Teacher insert into Student values('李世民',1)
insert into Student values('李元霸',3)
insert into Student values('李建成',9)
insert into Student values('李元吉',7)
insert into Student values('李渊',5)
insert into Student values('李广',6)
insert into Student values('刘备',4)
insert into Student values('关羽',2)
insert into Student values('张飞',8)
insert into Student values('赵云',2)
insert into Student values('马超',6)
insert into Student values('黄忠',3)
go
select *from Student
--我就要选 A老师 教的课
select *from Teacher where tname ='岳飞'
--我就要选年龄最小的老师的课
select *from Teacher where tage =(select MIN(tage) from Teacher)
--某个学生选的哪门课哪个老师多少岁
select *from Teacher where tcode=(select bxueke from Student where bxueke=1)
--有几个人选了 老师A 都叫什么
select bname from Student where bxueke=(select bxueke from Student where bxueke=1)
select bname from Student where bxueke=(select tcode from Teacher where tname='岳云')
--用代码 给 学生表加一个年龄列
alter table Student
add bage int
--我就要比我小的老师教
select tname from Teacher where tage < (select bage from Student where bcode=106)
--老师A里 年龄最小的
select MIN(bage) from Student where bxueke=(select tcode from Teacher where tname='岳飞')
--所有选择 数学的学生 信息
select bname from Student where bxueke=(select tcode from Teacher where tkemu='数学')
--所有学生选择的老师年龄大于20的 学神信息
select *from Student where bxueke in (select tcode from Teacher where tage>20)

SQL主外键和子查询的更多相关文章

  1. 主外键多表查询demo

    https://www.cnblogs.com/DragonFire/p/6949767.html mySQL练习-主外键多表查询 MySQL练习-主外键多表查询 练习: 1.建立表关系: 请创建如下 ...

  2. 数据库开发基础-SQl Server 主键、外键、子查询(嵌套查询)

    主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键.一个 ...

  3. 2016年11月17日--SQL主、外键,子查询

    主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键.一个 ...

  4. SQL主、外键,子查询

    主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键.一个 ...

  5. mysql 外键和子查询,视图

    1.mysql 外键约束 建表时生成外键   foreing key ('sid') references' student'('id'); 建表后添加外键  alter table' course ...

  6. sql 主外键

    alter table Orders add CONSTRAINT fk_PerOrders FOREIGN KEY(id) REFERENCES Persons(Id) 以上SQL中,Persons ...

  7. MySQL练习-主外键多表查询

    练习: 1.建立表关系: 请创建如下表,并创建相关约束 USE db1; CREATE TABLE class( cid INT AUTO_INCREMENT PRIMARY KEY, caption ...

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

    在SQLServer中主外键是什么,以及主外键如何创建,在这里就不说了,不懂的可以点击这里,这篇文章也是博客园的博友写的,我觉得总结的很好: 此篇文章主要介绍通过SQL脚本来查看Sqlserver中主 ...

  9. 经典SQL语句大全_主外键_约束

    一.基础(建表.建约束.关系) 约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整 ...

随机推荐

  1. javascript 对象初探 (四)--- 内建对象之旅之Array

     我们不要去纠结神马是内建对象,神马是內建构造器.到后来你们便会发现其实她们都是对象. Array()是一个构建数组的內建构造器函数: var arr = new Array(); 与下面的是等效的: ...

  2. JavaScript 开发者经常忽略或误用的七个基础知识点(转)

    JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...

  3. node.js Tools for Visual Studio 介绍

    node.js Tools for Visual Studio简称NTVS 项目 安装包地址:https://nodejstools.codeplex.com 目前支持2012和2013

  4. 【代码笔记】iOS-旋转的图片

    一,效果图. 二,工程图. 三,代码. AppDelegate.h #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder ...

  5. ios必须知道的事情

    一. 学前提醒 其实iOS开发就是开发iPhone\iPad上的软件,而要想开发一款软件,首先要学习程序设计语言 iOS开发需要学习的主要程序设计语言有:C语言.C++.Objective-C,其中C ...

  6. Base64与Bitmap转换

    Base64与Bitmap互转 /** * 将base64转为bitmap * * @param string * @return */ public Bitmap stringtoBitmap(St ...

  7. iOS 学习 - 10下载(2) NSURLSession 图片 篇

    使用NSURLSessionDownloadTask下载文件的过程与前面差不多,需要注意的是文件下载文件之后会自动保存到一个临时目录,需要开发人员自己将此文件重新放到其他指定的目录中. // // V ...

  8. Zend Studio 9.0.4 新建项目

    PHP IDE一直在用zendstudio5.5版 ,虽然写代码没啥问题,但官方版本已经到10了,尝试一下吧! 打开zend studio 10, FILE -> NEW -> PROJE ...

  9. .Net Attribute详解(下) - 使用Attribute武装枚举类型

    接上文.Net Attribute详解(上)-Attribute本质以及一个简单示例,这篇文章介绍一个非常实用的例子,相信你一定能够用到你正在开发的项目中.枚举类型被常常用到项目中,如果要使用枚举To ...

  10. JavaScript Patterns 6.7 Borrowing Methods

    Scenario You want to use just the methods you like, without inheriting all the other methods that yo ...