SQL-Server 零基础入门教程[下]

目录

一 、分组查询

二、 连接查询

三、 DDL


一 、分组查询

分组查询是对原始数据进行分组之后在对分组后的数据进行统计。

关键词: group by

举个栗子 

查询每类图书的数量

select tid 订单编号, count(*)数量  from book

group by tid;

group by 后面接的tid 与 select 后面的tid一样,这句话的意思就是在book这个列表中 我们要对tid进行分组,并起别名 订单编号 然后再去查 每一类图书的数量。

查询每类图书中价格在20以上的图书编号和数量

select  tid 订单编号,count(*)数量  from  book

where bprice>20

group by tid;

查询图书数量超过2本的图书编号和数量

select tid 图书编号,count(*)数量 from book

group by tid

having count(*)>3;

我们来比较一下 where和having 区别

其中 where子句 是用来筛选 from 子句中指定操作所产生的行

group by 子句用来分组  where子句的输出

having 是从分组的结果进行筛选行

因此看一下书写顺序

(1)select (2)from(3)where(4)group by (5)having (6)order by

看一下语句执行顺序

(1)from(2)where(3)group by(4)having(5)select0(6)order by

二、连接查询

通过表之间连接条件(主外键关系),从表中获取数据。

连接查询分为内连接和外连接

(1)内连接 语法 inner join  on

通过两个表的连接的区域,也就是所谓的交集。

语法:select 列名(来自多张表)from  表1  inner join  表2   on  连接条件   where 查询条件

例如 :查询图书表和图书分类的所有信息 

select type.*,book.*   from  type  inner  join  book  on  type.id=book.tid

这是两个表的

那我们再看看三个表连接(多表查询:查询学生姓名,科目及考试成绩)

select  studentname ,subjectname  ,studentresult   from   student   inner join    result  r   on s.studentno= r.studentno    inner join     subject sub    on    r.subjectid=sub.subjectid;

翻译 从student result subject 三个表中去查询 studnetname subjectname  studentresult 通过

s.studentno= r.studentno,r.subjectid=sub.subjectid;相等去连接。

(2)外连接 

上图是左外连接

左外连接a left join b ......on =  b right join a .........on后加两表连接条件

右外连接a right join  b .....on =b left join a  ........ on后加两表连接条件

下图是右外连接

(3)子查询

子查询 是一个嵌套在select,insert ,update ,delete 语句或其他子查询的查询。挺重要的

语法:select....from 表1 where 字段1 比较运算符(子查询)

先执行小括号的子查询,在执行外面的父查询,返回查询的结果。

注意:将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个。

举个栗子

查询和张三是同一个地址的学员信息

select * from student  where address=(select address from student where studentname='张三')

先找到张三的地址,将张三的地址传入 就能找到和张三是同一个地址的学员信息。

三、DDL

(1)数据库操作

创建数据库:                                 删除数据库

create database  数据库名;         drop database  数据库名;

创建表                                            删除表

create table 表名                            drop table 表名

(2)创建数据表

约束:

主键约束: primary key

唯一约束:unique

默认值约束:default

检查约束:check

外键约束:foregin key

非空约束:not  null

标识列:identity

在表建好之后,想要添加约束,这是我们可以用代码了。

语法: alter table  表名 add  constraint 约束名()具体的约束条件

具体来看看栗子吧 

外键约束( foreign key constraint );用于两张表之间的联系,应该指定主键是那个
alter   table   表名   add   constraint   (fk_字段名字)  foreign key  外键的字段  reference(来自)  主键的表名  主键的列名 我们老师就主要讲这个了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值