数据库系统概论—标准语言SQL

这篇具有很好参考价值的文章主要介绍了数据库系统概论—标准语言SQL。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据库系统概论—基础篇(2)

三、关系数据库标准语言SQL

1、数据定义

1.1基本表的定义、删除与修改

  • 定义基本表
#建立学生表
CREATE TABLE Student(
    Sno CHAR(9) PRIMARY KEY,
    Sname CHAR(20) UNIQUE,
    Ssex CHAR(2),
    Sage SMALLINT,
    Sdept CHAR(20)
);
  • 修改基本表
ALTER TABLE 表名
ADD 列名 数据;#增
或
DROP 列名 CASCADE/RESTRICT;#删
或
ALTER 列名 类型 #改
  • 删除基本表
DROP TABLE 表名 CASCADE/RESTRICT;

CASCADE:与其相关的全部删除,比如视图,索引等

RESTRICT:如果有依赖关系或是建立索引等,就不删除

但是不同的数据管理系统的执行不同

1.2索引的建立与删除

  • 建立索引
CREATE UNIQUE/CLUSTER INDEX 索引名
ON 表名 (列名1 顺序1(ASC/DESC),列名2 顺序2...);
  • 删除索引
DROP INDEX 索引名;

2、数据查询

  • 基本结构
SELECT ALL/DISTINCT 列名/目标表达式
FROM 表名/视图名
WHERE 条件#选择的条件
GROUP BY 列名 HAVING 条件#分组后根据条件选择,分组:可以理解成大表分为好几个小表
ORDER BY 列名 顺序(ASC/DESC);#查询结构排序

2.1单表查询

利用上述的基本结构进行查.

注意:

  • 字符型要加' '号
  • Distinct可以消除重复的列
  • 如果要显示一列字符,在SELECT后+’ ‘号
  • 模糊查询中%表示任意长度,_表示一个字符
  • ESCAPE后+'转义字符'
  • 与空值有关要用IS NULL或是IS NOT NULL
  • ORDER BY子查询不能使用
  • WHERE中不能用聚集函数
  • CROUP BY和HAVING同时出现

2.2连接查询

  • 等值连接和非等值连接

运算符为 = 称为等值连接(列名不同),其余为非等值连接

取消重复列则为自然连接

eg:查询选修2号课程且成绩在90及分以上的所有学生的学号和姓名

Select S1.Sno,S1.Sname
From STUDENT S1,SC S2
Where S1.Sno = S2.Sno and S2.Cno = '2'and S2.Grade >= 90;
  • 自身连接

两个相同的表自己连接,注意起别名

  • 外连接
#外连接
From STUDENT OUTER SC join on(STUDENT.Sno = SC.Sno);
#左外连接
From STUDENT left OUTER SC join on(STUDENT.Sno = SC.Sno);
#右外连接
From STUDENT right OUTER SC join on(STUDENT.Sno = SC.Sno); 

2.3嵌套查询

分为不相关查询(父查询和子查询无关)和相关查询(父查询和子查询有关)

  • 带IN的子查询(不相关子查询)

子查询结果是一个属性的集合


eg:查询与"刘晨"所在同一个系的的学生的学号

Select Sno
Fron STUDENT
Where Sdept in(
    Select Sdept
    Fron STUDENT
    Where Sname = '刘晨');


  • 有比较运算符的子查询

查询顺序:先在父查询中选择第一个个元组的信息,将其传入子查询中计算结果,再进行比较

子查询的结果和父查询传入的数据有关


eg:查询每个学生超过自己选修课平均成绩的学号和课程号

Select Sno,Cno
From SC X
Where Grade >= (Select AVG(Grade)
                From SC Y
                Where Y.Sno = X.Sno);

也可以先建立一个新的表:学号、成绩,再查询这里就是基于派生表的查询

Select Sno,Cno
From SC,(Select Sno AVG_Sno,AVG(Crade) AVG_Grade
         From SC
         GROUP BY Sno) AS AVG_SG
Where SC.Sno = AVG_SG.AVG_Sno AND SC.Crade >=AVG_SG.AVG_Grade;

2.4带有EXISTS的查询

EXISTS代表存在量词,其子查询只返回“true”或是“false”

将父查询中的每一条记录代入到子查询中去试,要有一个连接的条件像,STUDENT.Sno = SC.Sno

  • EXISTS

将父查询中的每一条记录代入到子查询中去试,满足则输出,不满足则查询下一条

使用EXISTS时子查询的Select后面的目标列使用*


eg:查询选择1号课程的学生

Select Sno
From STUDENT
Where EXISTE
    (Select *
     From SC
     Where STUDENT.Sno = SC.Sno AND Cno = '1');


  • NOT EXISTS

将父查询中的每一条记录代入到子查询中去试,满足则查询下一条;不满足则输出


eg:查询没用选择1号课程的学生

Select Sno
From STUDENT
Where NOT EXISTE
    (Select *
     From SC
     Where STUDENT.Sno = SC.Sno AND Cno = '1');


  • 不同形式查询的替换

并不是所有带有EXISTS的子查询都可以替换;带有IN,比较运算符,ANY和ALL的子查询可以被带有EXISTS的子查询替换

  • 代替全称量词

eg:查询选修了全部课程的学生姓名

#等价于没有一门课程是他不选的
Select	Name From STUDENT1
Where NOT EXISTS
    (Select * From COURSE
     Where NOT EXISTS
         (Select * From SC
           Where STUDENT1.Sno = SC.Sno and COURSE.Cno = SC.Cno));

相当于两个for循环,从学生表中取出第一个数据,然后遍历课程表并于SC表进行比较,若都可以对应上则经过两次取反后输出,否则从学生表中选取下一条记录


  • 实现逻辑蕴含

数据库系统概论—标准语言SQL

Select DISTINCT Sno
From SC S1
Where NOT EXISTS
    (Select * From SC S2
     Where S2.Sno = '201215122' AND NOT EXISTS
     (Select * From SC S3
      Where S3.Sno = S1.Sno and S2.Cno = S3.Cno));

2.5集合查询

  • 交:INTERSECT

  • 并:UN1ON

  • 差:EXCEPT

3.数据更新

3.1插入数据

  • 插入元组
INSERT INTO 表名 (列名1,列名2...)
VALUES (值1,值2...);
  • 插入子查询结果

将子查询结果插入指定表中

INSERT INTO 表名 (列名1,列名2...)
子查询;

3.2修改数据

修改满足Where条件的元组

UPDATE 表名
SET (列名1 = 值1/表达式1,列名2 = 值2/表达式2...)
Where...;

  • 带有子查询的修改语句
UPDATE 表名
SET (列名1 = 值1/表达式1,列名2 = 值2/表达式2...)
Where 条件 关系 子查询;

3.3删除数据

删除满足Where条件的元组,若无筛选条件,则删除全部数据,表还在

DELETE FROM 表名
Where 条件;

4.空值的处理

NULL:当前不知具体值;不该有值;不便填写。不清楚,不知道

注:

  • 有NOT NULL / 加了UNIQUE / 码属性不能为空值
  • NULL的算术运算结果为NULL
  • NULL的比较运算结果为UNKNOWN

5.视图

  • 是一个虚表
  • 数据库中只存放视图的定义,而不存放视图对应的数据
  • 基本表中数据变化,视图中数据也随之变化

5.1定义视图

CREAT VIEW 视图名(列名1,列名二...)
AS 子查询
WITH CHECK OPTION;#对于视图的操作都有上述子查询的Where约束

注:视图后的列名要不不写,要不全写

​ 创建的结果是把视图的定义存在数据字典,不执行SELECT语句

​ 基于一个表的视图叫做行列子集视图

5.2删除视图

DROP VIEW 视图名;
#CASCADE:强制删除,可选

5.3查询视图

和上面的数据查询差不多,将表名换成视图名即可

5.4更新视图

和上述的数据更新差不多...

不是所有的视图都可以更新,行列子集视图可以更新,其他视情况而定

5.5视图作用

  • 视图能简化用户操作

  • 视图使用户能以多种角度看待同同一数据

  • 视图对重构数据库提供了一定程度的逻辑独立性

  • 视图能够对机密数据提供安全保护

  • 适当利用视图可以更清晰地表达查询文章来源地址https://www.toymoban.com/news/detail-423544.html

到了这里,关于数据库系统概论—标准语言SQL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (五)关系数据库标准语言SQL

    5.1.1 create Database  5.1.2 create schema...authorization... 创建数据库和创建模式的区别 : 数据库是架构的集合,架构是表的集合。但在MySQL中,他们使用的方式是相同的。 如果没有指定模式名,那么模式名隐含为用户名。 用户可以在创建模式的同时在这个模式定义中进一步创建基本

    2024年03月11日
    浏览(43)
  • 关系数据库标准语言SQL难题整理

    文章目录 1、查询选修三门以上课程的学生学号 2、查询选修课程中至多一门70分的学生学号 3、查询平均成绩=90分的学生学号和平均成绩 4、查询成绩都大于70分学生的成绩 5、找出每个学生超过他自己选修课程平均成绩的课程号 6、查询非计算机科学系某一个学生年龄小的学生

    2024年04月17日
    浏览(34)
  • 【MySQL】——关系数据库标准语言SQL(大纲)

    🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL:数据结构_IT闫的博客-CSDN博客 🐠数据结构:​​​​​​数据结构_IT闫的博客-CSDN博客 💎C++:C++_IT闫的博客-CSDN博

    2024年01月20日
    浏览(60)
  • 【数据库·关系数据库标准语言SQL·学习笔记】Microsoft SQL Server数据库的建立和删除

    开发环境:SQL Server Management Studio(SSMS) 利用数据库对象资源管理器创建数据库 (1)右击对象资源管理器中的数据库,选择新建数据库 (2)在新建数据库界面输入数据库名称 ,并选择确定 利用CREAT DATABASE命令在SSM工具的新建查询中创建数据库 1.语法格式 CREATE DATABASE dat

    2024年02月08日
    浏览(56)
  • 实验一 关系数据库标准语言SQL 课后习题/头歌

    任务要求 建立demo数据库 并显示所有数据库 第2关:创建表 任务要求 设有一个demo数据库,包括S,P,J,SPJ四个关系模式: S(SNO,SNAME,STATUS,CITY) P(PNO,PNAME,COLOR,WEIGHT) J(JNO,JNAME,CITY) SPJ(SNO,PNO,JNO,QTY) 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CI

    2024年02月05日
    浏览(52)
  • 【数据库概论】第三章 SQL简述、数据定义和索引

    最早在IBM的关系数据库管理系统原型SystemR上实现,后来美国国家标准局(ANSI)批准SQL作为关系数据库语言的美国标准,同年公布了SQL标准文本。近些年来SQL标准的内容越来越丰富和复杂。目前没有任何一个数据库系统能够支持SQL标准的所有概念和特性,同时不少软件厂商对

    2024年02月05日
    浏览(66)
  • 数据库系统概论—关系理论、数据库设计

    主要是关系中 属性和属性之间的依赖关系 第一范式 :表中无表(属性不可再分) 数据依赖:是在一个关系内部属性间的约束,分为函数和多值依赖。 eg:学号决定姓名 2.1函数依赖 与数学中函数概念相似,一个X只能对应一个Y。记作X-Y 非平凡函数依赖:X-Y,但Y不属于X 平凡函数

    2024年02月08日
    浏览(61)
  • 数据库系统概论(一)

    一、数据库系统四个基本概念:数据、数据库、数据库管理系统、数据库系统。 数据(data) :数据是数据库中存储的基本对象,即描述事物的符号记录 数据库(Database,DB):存放数据的仓库,即长期存储在计算机内、有组织的、可共享的大量数据的集合,数据库数据具有永久存

    2024年02月13日
    浏览(41)
  • 数据库系统概论-00引言

    -数据库系统的发展经历了三代演变 层次/网状数据库系统,关系数据库系统,新一代数据库系统。 -造就了四位图灵奖得主 C.W.Bachman,E.F.Codd,James Gray,M.R.Stoebraker.。 -发展了一门计算机基础学科· 数据建模和DBMS核心技术为主,内容丰富,领域宽广。 -带动了一个巨大软件产业 D

    2024年01月22日
    浏览(53)
  • 【数据库系统概论】期末复习4

    期末复习1 期末复习2 期末复习3 数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。 数据库的完整性是指数据的正确性和相容性。 数据的完整性和安全性是两个不同的概念,但是有一定的联系。前者是为了防止数据库中存在不符合语义的数

    2024年02月02日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包