SQL主、外键,子查询
主键
数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 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语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询。
子查询有两种类型:
一种是只返回一个单值的子查询,这时它可以用在一个单值可以使用的地方,这时子查询可以看作是一个拥有返回值的函数;
另外一种是返回一列值的子查询,这时子查询可以看作是一个在内存中临时存在的数据表。
练习
建立两个表: 1.选课ID 科目名称 老师姓名 老师年龄 2.学号 姓名 选课ID 我就要选 A老师 教的课 我就要选 老师年龄最小的 课 某个学生选的 哪门课 哪个老师 多少岁 有几个人选了 老师A 都叫什么 用代码 给 学生表加一个年龄列 我就要比我小的老师教 老师A的学生里 年龄最小的 所有选择 数学的学生 信息 所有学生选择的老师年龄大于20的 学生信息
create table student
(
scode int primary key identity(1001,1),
sname varchar(10),
xuanke int
)
create table www
(
tcode int primary key identity(1,1),
kemu varchar(18),
tname varchar(10),
age int
)
insert into www values('数学','张三',31)
insert into student values('AA',1)
select * from student
select * from www
select kemu from www where tname='张三'
select top 1 kemu from www order by age
select kemu,tname,age from www where tcode=(select xuanke from student where scode=1002)
select sname from student where xuanke=(select tcode from www where tname='张三')
alter table student
add sage int
select top 1 sname from student where xuanke=(select tcode from www where tname='张三') order by sage
select * from www where age<(select sage from student where scode=1003)
select * from student where xuanke in (select tcode from www where kemu='数学')
select * from student where xuanke in (select tcode from www where age>20)
SQL主、外键,子查询的更多相关文章
- SQL主外键和子查询
主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键.一个 ...
- sql 主外键
alter table Orders add CONSTRAINT fk_PerOrders FOREIGN KEY(id) REFERENCES Persons(Id) 以上SQL中,Persons ...
- Android Ormlite 学习笔记2 -- 主外键关系
以上一篇为例子,进行主外键的查询 定义Users.java 和 Role.java Users -- Role 关系为:1对1 即父表关系 Role -- Users 关系为:1对多 即子表关系 下面 ...
- 通过SQL脚本来查询SQLServer 中主外键关系
在SQLServer中主外键是什么,以及主外键如何创建,在这里就不说了,不懂的可以点击这里,这篇文章也是博客园的博友写的,我觉得总结的很好: 此篇文章主要介绍通过SQL脚本来查看Sqlserver中主 ...
- 经典SQL语句大全_主外键_约束
一.基础(建表.建约束.关系) 约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整 ...
- MySQL 主外键约束与标准SQL不同的地方
[标准SQL的外键约束条件] 1): 子表引用父表的主键 drop table if exists child,parent; create table if not exists parent( i ...
- 主外键多表查询demo
https://www.cnblogs.com/DragonFire/p/6949767.html mySQL练习-主外键多表查询 MySQL练习-主外键多表查询 练习: 1.建立表关系: 请创建如下 ...
- 数据库的SQL语句创建和主外键删除操作
create table UserType ( Id ,), Name nvarchar() not null ) go create table UserInfo ( Id ,), LoginPwd ...
- SQL SERVER中获取表间主外键关系
sql server 2008中的主外键关系获取方式: 转自:http://www.cnblogs.com/ke10/archive/2012/06/11/2544655.html SELECT OB ...
- SQL Server语句创建数据库和表——并设置主外键关系
简单的创建数据库的 SQL 语句: use master go if exists(select * from sysdatabases where name='Test') begin select ...
随机推荐
- Appium移动自动化测试(一)--安装Appium(转)
Appium移动自动化测试(一)--安装Appium 2015-05-30 17:48 by 虫师, 70668 阅读, 13 评论, 收藏, 编辑 Appium 自动化测试是很早之前就想学习和研究的 ...
- uva12118
一开始以为直接算联通块个数就行了 后来发现还得分联通块里的奇点... 还要注意m = 0的情况... #include<iostream> #include<algorithm> ...
- Ubuntu12.04安装hadoop
1. 创建hadoop用户组和用户 a. 创建hadoop用户组 sudo addgroup hadoop b. 创建hadoop用户 sudo adduser –ingroup had ...
- HDU--杭电--1241--Oil Deposits--广搜
Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...
- 第一篇:Power BI数据可视化概述
前言 "可视化之工具,可爱者甚蕃.统计学家独爱R,自Python来,世人盛爱matplotlib.余独爱Power BI之出微软而不染(免费),濯Office而不妖(够精简).......& ...
- SPOJ 4053 - Card Sorting 最长不下降子序列
我们的男主现在手中有n*c张牌,其中有c(<=4)种颜色,每种颜色有n(<=100)张,现在他要排序,首先把相同的颜色的牌放在一起,颜色相同的按照序号从小到大排序.现在他想要让牌的移动次数 ...
- <html:form>、 <html:text>、<html:password>、<html:submit> 标签
用Struts标签来写表单元件, 引用: <%@ taglib uri="/tags/struts-html" prefix="html" %> 例 ...
- PHP 实现无限极栏目分类
首先,创建一个DB CREATE TABLE IF NOT EXISTS `class` ( `id` mediumint(6) NOT NULL AUTO_INCREMENT, `title` va ...
- css 圆角效果
http://intacto10years.com/index_start.php<div style="width:800px; height:1300px;">&l ...
- 此方法显式使用的 CAS 策略已被 .NET Framework 弃用
用vs2008开发的应用程序在vs2012中打开时提示如下: 此方法显式使用的 CAS 策略已被 .NET Framework 弃用.若要出于兼容性原因而启用 CAS 策略,请使用 NetFx40_L ...