zoukankan      html  css  js  c++  java
  • 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的  学生信息
     1 create table student
     2 (
     3     scode int primary key identity(1001,1),
     4     sname varchar(10),
     5     xuanke int
     6 )
     7 create table www
     8 (
     9     tcode int primary key identity(1,1),
    10     kemu varchar(18),
    11     tname varchar(10),
    12     age int
    13 )
    14 insert into www values('数学','张三',31)
    15 insert into student values('AA',1)
    16 select * from student
    17 select * from www
    18 select kemu from www where tname='张三'
    19 select top 1 kemu from www order by age
    20 select kemu,tname,age from www where tcode=(select xuanke from student where scode=1002)
    21 select sname from student where xuanke=(select tcode from www where tname='张三')
    22 alter table student
    23 add sage int
    24 select top 1 sname from student where xuanke=(select tcode from www where tname='张三') order by sage
    25 select * from www where age<(select sage from student where scode=1003)
    26 select * from student where xuanke in (select tcode from www where kemu='数学')
    27 select * from student where xuanke in (select tcode from www where age>20)
  • 相关阅读:
    使用Wireshark捕捉USB通信数据
    simtrace之探秘SIM卡中的世界
    极客DIY:RFID飞贼打造一款远距离渗透利器
    C118+Osmocom-bb+Openbts搭建小型基站
    天猫标的就是虚价,果然败家节啊
    为什么项目的jar包会和tomcat的jar包冲突?
    Spring-JDBC实现Contact的CRUD
    使用maven下载jar包的source和javadoc
    Spring-Context的注解实现依赖注入功能
    [html]三列居中自动伸缩的结构
  • 原文地址:https://www.cnblogs.com/1030351096zzz/p/6078853.html
Copyright © 2011-2022 走看看