今天阿猪带领大家正式进入第四步的学习
往期精选
SQL Server从入门到精通(一)
SQL Server从入门到精通(二)
SQL Server从入门到精通(二)精讲
SQL Server从入门到精通(三)
目录
查询处理和表数据编辑
一、查询数据
  1.简单查询
  2.统计
  3.连接查询
  4.子查询
  5.联合查询
二、表数据编辑
  1.插入数据
  2.修改数据
  3.删除数据

查询处理和表数据编辑

一、查询数据

1.简单查询

语法

    SELECT 目标表达式 FROM 表名

(1)查询指定列

      SELECT  姓名FROM 项目表

(2)查询所有列
注意:用*表示所有列,把表中所有列按照表中的顺序全部输出

      SELECT *FROM 项目表

(3)查询计算列
可以将查询出来的属性经过一定计算后列出结果

      SELECT 姓名,累计学分,累计学分-累计学分*0.1FROM 学生表

(4)为列起别名
    1.用AS关键字
    2.用=来连接

       SELECT   姓名 AS name,累计学分 AS Ogpa,Ngpa=累计学分-累计学分*0.1FROM 学生表

注意:当列的别名有空格时要用单引号括起来

       SELECT  姓名 AS '学生表  NAME'FROM 学生表

(5)使用DISTINCT关键字消除重复元组

       SELECT DISTINCT 所在院系,专业FROM 学生表

注意:这样就删除重复的
DISTINCT关键字的作用范围他是整个查询列表

2.查询满足条件的元组
用WHERE查询
查询条件返回TRUE(真),FALSE(假),UNKNOWN(未知)
NOT ,AND,OR三表逻辑运算

NOT 结果
T F
F T
U U
AND T F U
T T F U
F F F F
U U F U
OR T F U
T T T T
F T F U
U T U U

常见查询条件

查询条件 运算符(0) 条件(逻辑表达式)格式 备注
比较大小 =,>,<,>=,<=,!=,,!>,!< op1op 2 双目运算
确定范围 [NOT] BETWEEN AND 0p1 [NOT] BETWEEN op2 AND op 3 三目运算
确定集合 [NOT]IN op 1[NOT] IN op 2 双目运算
字符串匹配 [NOT] LIKE op 1[NOT] LIKE op 2 双目运算
空值 IS[NOT] NULL op IS[NOT]NULL 单目运算
多重条件 NOT, AND, OR, () NO op, op1 AND op 2, opi1OR op 2 NOT是单目运算, 其余是双目运算,括号用于改变运算优先级

比较大小
(1)查询所有来自杭州的学生

  SELECT *FROM 学生表WHERE 籍贯='杭州'

(2)查询累计学分在160以下的学生姓名和累计学分

    SELECT 姓名,累计学分FROM 学生表WHERE 累计学分<160

确定范围
定义

   op1 [NOT] BETWEEN op2 AND op3

含义:若op1不在op2和op3之间则条件为真否则为假
查询累计学分在150和159之间的学生姓名和累计学分

   SELECT 学号,姓名FROM 学生表WHERE 累计学分  BETWEEN 150 AND 159

确定集合
语法 IN
查询(不是 )来自杭州,大同,太原的学生学号和姓名

SELECT 学号,姓名
FROM 学生表
WHERE 籍贯 (NOT) IN (‘杭州’,‘大同’,‘太原’)

查询学号后两位是09,或者等于学号前两位或者中间两位得学生学号和姓名

SELECT 学号,姓名
FROM 学生表
WHERE SUMBSTRING (学号,6,2)IN (‘09’,SUMBSTRING(学号,2,2),SUMBSTRING(学号,4,2))

注意:SUMBSTRING(s,p,c)的含义是返回字符串s中从第p个字符串开始,长度为c的子串
字符串匹配
语法LIKE
特殊字符:

% 匹配任意长度的字符串(长度可以为0)
_ 匹配任意一个字符
[c1c2…cn] 匹配字符c1,c2…cn,中的一个。当c1,c2,… cn,连续时可简化为[c1-cn]
[ ^ c1c2….cn ] 匹配除c1,c2…cn,外的一个字符。当c1,c2,…cn,连续时可简化为[ ^ c1-cn]

例题
查询姓名中第二个字为“鹏”的学生学号和姓名

 SELECT 学号,姓名FROM 学生表WHERE 姓名LIKE ‘_鹏%’

查询学号长度不等于7,或者学号后六位含有非数字字符的学生学号和姓名

  SELECT 学号,姓名FROM 学生表WHERE 学号NOT LINK'S[0-9][0-9][0-9][0-9][0-9][0-9]'

查询学号最后一位既不是1也不是3也不是9的学生学号和姓名

  SELECT 学号,姓名FROM 学生表WHERE 学号 LINK '%[^139]'

要查询课程名以“DB_”开头的课程信息注意其中的_只是普通的,此刻要用ESCAPE

select*
from 课程表
where课名 LINK'DB\_%' ESCAPE '\'

ESCAPE ''短语表示‘'为换码字符,这样模式串中紧跟在‘\’后面的字符‘’不在具有通配符的含义,而被转义成普通的‘’字符

涉及空值的查询
语法IS NOT NULL

查询有成绩的学号和开课号

 SELECT 学号,开课号FROM 选课表WHERE  成绩 IS NOT NULL

注意:IS 不能用=代替,IS NOT 不能用!=和<>代替

多重条件查询
OR AND NOT优先级从大到小OR AND NOT
查询这样的男生,他的电话号码前三位是‘130’他来自杭州或宁碧他既不主修电子商务,也不主修信息管理专业

    SELECT*FROM 学生表WHERE 性别=‘男’AND SUBSTRING(移动电话,1,3)=‘130’AND(籍贯=‘杭州’ OR 籍贯=‘宁波’)AND NOT 专业 IN (‘电子商务’,‘信息管理’)

3.对查询结果排序
语法:OEDER BY

    SELECT 学号FROM 选课表WHERE 开课号=‘000100’ORDER BY 成绩 DESE,成绩+10

查询选修了开课编号为‘000100’的课程的学生学号、成绩,以及成绩+10分后的新成绩,查询结果按原来成绩降序,按新成绩升序
注意:DESE为降序,不写莫仍为升序

2.统计

1.常用的统计函数

函数格式 函数功能
COUNT([DISTINCT]*) 统计元组个数
COUNT([DISTINCT]<列表达式>) 统计列值个数
SUM 计算数值型列表达式的总和
AVG 计算数值型列表达式的平均值
MAX 求列表达式的最大值
MIN 求列表达式的最小值

查询所有课本的总价格和平均价格,以及打七折后的总价格和平均价格

SELECT SUM(定价) AS 原总价,AVG(定价),SUM(定价*0.7)折扣总价,折扣均价=AVG(定价*0.7)
FROM (课程表)

COUNT(*)用来统计满足条件的元组个数
查询课程编号前两位数字是“02”的课程总数

SELECT COUNT (*)
FROM 课程表
WHERE 课号 LINK 'C02%'

2.分组查询
(1)GROUP BY子句进行分组

 SELECT 开课号,COUNT (学号)FROM 选课表GROUP BY 开课号

具有相同开课号的元组被分为一组
(2)HAVING短语来帅选

3.连接查询

在列名前+<.表名>作为限定
查询学生表的基本信息及选课信息

 SELECT 学生表.*,开课号,成绩FROM 学生表 AS A,选课表AS BWHERE 学生表.学号=选课表.学号

使用JOIN ON 关键字
JOIN 用于连接两张表,ON给出两张表的连接条件
查询至少选修了学号为‘S060110’的学生所选一门课程的学生学号和姓名

  SELECT DISTINCT Z.学号, 姓名FROM  选课表 X  JOIN  选课表 Y  ON  Y.学号!=X.学号  AND  Y.开课号=x.开课号  JOIN  学生表Z  ON  Y.学号=Z.学号WHEREx.学号='S060110'

外连接
左外连接:将左边关系中未用到的列加到结果集把=改为"*=”,或者JOIN 改为LEFT OUTER JOIN
右外连接:将右边关系中未用到的列加到结果集把=改为"=*”,或者JOIN 改为RIGHT OUTER JOIN
全外连接:将左右关系全部连接,将JOIN改为FULL OUTER JOIN

查询学生的学号、姓名、籍贯信息及选课信息
(1)左外连接

SELECT学生表.学号, 姓名,籍贯,开课号,成绩
FROM学生表, 选课表
WHERE 学生表.学号*=选课表.学号

(2)右外连接

  SELECT学生表.学号, 姓名, 籍贯, 开课号, 成绩FROM  学生表  RIGHT OUTER JOIN  选课表  ON  学生表.学号=选课表.学号

(3)全外连接

SELECT 学生表.学号, 姓名, 籍贯, 开课号, 成绩
FROM 学生表 FULL  OUTER  JOIN  选课表  ON  学生表.学号=选课表.学号

4.子查询

嵌套SELECT语句叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值。
子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在select list中,作为一个字段值来返回。

1、单行子查询 :单行子查询是指子查询的返回结果只有一行数据。当主查询语句的条件语句中引用子查询结果时可用单行比较符号(=, >, <, >=, <=, <>)来进行比较。

例:

 select ename,deptno,sal from emp where deptno=(select deptno from dept where loc='NEW YORK');

2、多行子查询:多行子查询即是子查询的返回结果是多行数据。当主查询语句的条件语句中引用子查询结果时必须用多行比较符号(IN,ALL,ANY)来进行比较。
IN的含义是匹配子查询结果中的任一个值即可(“IN” 操作符,能够测试某个值是否在一个列表中),ALL则必须要符合子查询的所有值才可,ANY要符合子查询结果的任何一个值即可

注意ALL 和ANY 操作符不能单独使用,而只能与单行比较符(=、>、< 、>= 、<= 、<>)结合使用。

例:1、单行子查询

select ename,deptno,sal
from emp
where deptno=(select deptnofrom dept where loc='NEW YORK');

2、多行子查询

SELECT ename,job,sal
FROM EMP
WHERE deptno in ( SELECT deptnoFROM dept WHERE dname LIKE 'A%');

3、多列子查询

 SELECT deptno,ename,job,salFROM EMPWHERE (deptno,sal) IN (SELECT deptno,MAX(sal) FROM EMP GROUP BY deptno);

5.联合查询

UNION将多个查询结果合并起来,个结果表的列数相同
查询计算机专业和信息管理专业的学生信息。

  SELECT*FROM 学生表WHERE 专业='计算机'UNIONSELECTFROM  学生表WHERE 专业='信息管理'

二、表数据编辑

插入数据
1.插入单个元组
2.插入子查询结果
3.使用SELECT …INTO语句进行数据插入
修改数据
语法

UPDATE <表名>
SET<列名>=<表达式>[,....n]

UPDATE语句用来修改指定表中满足WHERE条件的元组,用SET子句中的值取代响应的值

修改表中所有行
将学生的累计学分增加3分

 UPDATE 学生表SET 累计学分=累计学分+3

修改某些行
将计算机专业所有女上的籍贯改为“杭州”,累计学分+3

 UPDATE 学生表SET 累计学分=累计学分+3,籍贯='杭州'WHERE 专业='计算机'AND 性别=‘女;’

删除数据
语法

  DELETE [FROM] <目标表名>[FROM <表名>[,...n]][WHERE <条件>]

DELETE用来删除满足WHERE条件的元组

从学生表中删除计算机专业所有女生信息

  DELETE FROM 学生表WHERE 专业=‘计算机’AND性别=‘女’

将学生表清空

    DELECT FROM 学生表TRUNCATE TABLE <目标表名>比较快不记录日志的操作,删除的数据无法恢复

SQL Server从入门到精通(四)相关推荐

  1. SQL Server从入门到精通(七)

    哈喽好久不见呐 最近太忙了都没时间写博客,呜呜呜,排名一直没上升,落后了,今天抽空更新一篇博客吧,顺带涨涨粉,哈哈哈,涨不涨粉不重要,重要的是我想写博客 往期精选 SQL Server从入门到精通(一 ...

  2. 《SQL Server从入门到精通》

    书名 <SQL Server从入门到精通> 图片 时间 2017-6月 学习 书还可以看完不痛不痒 光盘里面是c的视频有趣这是要我学c的节奏啊,可以写一些基础sql语句也是一门语言叫T-s ...

  3. SQL Server从入门到精通(转)

    SQL Server数据库结构和管理 今天阿猪和大家正式进入SQL Server的第二次学习,所有的学习笔记阿猪都是跟着<大型数据库管理系统 技术.应用于实例分析>和结合(百度文库)总结归 ...

  4. SQL Server2008从入门到精通pdf

    下载地址:网盘下载 内容介绍 编辑 <SQL Server 从入门到精通>从初学者的角度出发,通过通俗易懂的语言.丰富多彩的实例,详细地介绍了SQLServer2008开发应该掌握的各方面 ...

  5. 视频教程-SQL语句从入门到精通迅速提升篇视频课程(Oracle零基础版)-Oracle

    SQL语句从入门到精通迅速提升篇视频课程(Oracle零基础版) 某公司区域交付运营总监,丰富的项目管理经验,带过1个亿级项目,千万级项目10余个. 陈志文 ¥118.00 立即订阅 扫码下载「CSD ...

  6. 找到一本适合自己的SQL Server 2008入门书

    <SQL Server 2008基础教程> 本书面向广大开发人员,从喜欢使用图形界面的程序员,到希望成为SQL Server 2008编程语言Transact SQL(T-SQL)高手的程 ...

  7. 最佳SQL Server 2008入门教程

    媒体评论 "本书是SQL Server数据库初学者的明智选择.它不仅很好地介绍了SQL Server的主要特性,还深入浅出地阐述了数据库开发和设计的一般性概念." --Amazon ...

  8. SQL Server 2008空间数据应用系列四:基础空间对象与函数应用

    SQL Server 2008空间数据应用系列四:基础空间对象与函数应用 原文:SQL Server 2008空间数据应用系列四:基础空间对象与函数应用 友情提示,您阅读本篇博文的先决条件如下: 1. ...

  9. oracle入门语,Oracle SQL 语言从入门到精通

    Oracle SQL 语言从入门到精通 作者:网络 佚名 2005-10-27 00:00 评论 分享 [IT168 服务器学院]数据库对象包括表.视图.索引.同义词.簇.触发器.函数.过程.包.数据 ...

最新文章

  1. vue-cli3 第三版安装搭建项目
  2. linux shell中清理僵尸进程
  3. 在计算机检索系统中常用的检索技术有,计算机检索技术有哪些
  4. input file 上传文件格式限制
  5. python从2.6升到2.7后 桌面输入法图标不见
  6. 聊一聊对外API接口的存活检查可以怎么做
  7. asp.net ViewState详解
  8. 20 FI配置-财务会计-定义税务科目
  9. java epub 删除一页_java如何实现批量删除pdf指定的页数
  10. 《程序员自我修养》阅读笔记-可执行文件装载与进程
  11. 3.1 Zend_Db_Adapter
  12. 普渡斩获双奖——“2020年度科创人物”、“2020杰出科技抗疫奖”!
  13. 《黑客与画家:硅谷创业之父Paul Graham文集》----读书笔记
  14. 什么情况下你会毫不犹豫地辞职?
  15. CentOS的下载与安装
  16. 微信认证300元发票获取
  17. Python飞机大战(完整版)
  18. 回归算法-线性回归分析-过拟合欠拟合岭回归
  19. 阿伟教学--VMWare装Mac
  20. Alamps学习设计模式之备忘录模式(笑话:劫个色OR抢个鸡蛋版)

热门文章

  1. QQ群关系库数据库查询解决方案,sql引索语句。
  2. 江苏海洋大学计算机考试系统,江苏海洋大学教务管理系统入口https://jwc.hhit.edu.cn/...
  3. 太阳高度角计算题_太阳高度角的计算与应用答题.ppt
  4. CF 111B Petya and Divisors
  5. 给定两点确定一条直线
  6. HAWQ技术解析(十) —— 过程语言
  7. 有多少域名被漏掉了?
  8. 自然数拆分(完全背包问题求方案数)
  9. 远程红外热成像app
  10. 13. 杳立: 忽悠VC的10大招术