数据库语言-SQL

article/2025/8/27 21:39:38

数据库语言-SQL

      • 一、概述
      • 二、利用SQL建立数据库
        • 1、创建Database
        • 2、创建Table
        • 3、追加元组
      • 三、利用SQL进行简单查询
        • 1、单表查询
        • 2、检索条件之去重复记录
        • 3、检索结果之排序
        • 4、模糊查询
      • 四、利用SQL语言进行多表联合查询
        • 1、θ-连接之等值连接
        • 2、表更名与表别名
        • 3、θ-连接之不等值连接
      • 五、利用SQL语言进行增、删、改
        • 1、新增操作
        • 2、删除操作
        • 3、更新操作
      • 六、利用SQL语言修正与撤销数据库
        • 1、修正数据库
        • 2、撤销基本表
      • 七、备注

一、概述

SQL语言是集DDL、DML、DCL于一体的数据库语言。

  1. DDL语句引导词:Create(建立)、Alter(修改)、Drop(撤销)。
    模式的定义和删除,包括定义Database, Table,View,Index,完整性约束条件等,也包括定义对象(RowType行对象,Type列对象)

  2. DML语句引导词:Insert,Delete,Update,Select
    各种方式的更新与检索操作,如直接输入记录,从其他Table(由SubQuery建立)输入。
    各种复杂条件的检索,如连接查找,模糊查找,分组查找,嵌套查找等。
    各种聚集操作,求平均、求和、…等,分组聚集,分组过滤等。

  3. DCL语句引导词: Grant,Revoke
    安全性控制:授权和撤消授权

二、利用SQL建立数据库

定义数据库和表(使用DDL),向表中追加元组(使用DML)。

1、创建Database

简单语法形式:create database 数据库名;

2、创建Table

简单语法形式create table 表名(列名 数据类型[Primary key|Unique] [Not null][,列名数据类型[Not null] ,...]);

“[]”表示其括起的内容可以省略,“|”表示其隔开的两项可取其一。

  1. Primary key:主键约束。每个表只能创建一个主键约束
  2. Unique:唯一性约束(即候选键)。可以有多个唯一性约束。
  3. Not null:非空约束。是指该列允许不允许有空值出现,如选择了Not null表明该列不允许有空值出现。

语法中的数据类型在SQL标准中有定义

3、追加元组

简单语法形式insert into 表名[(列名[列名]...] values(值[,值],.….);

values后面值的排列,须与into子句后面的列名排列一致.
若表名后的所有列名省略,则values后的值的排列,须与该表存储中的列名排列一致.

三、利用SQL进行简单查询

1、单表查询

简单语法形式Select 列名 [,列名].….] From 表名 [ Where 检索条件];
语义:从表名所给出的表中,查询出满足检索条件的元组,并按给定的列名及顺序进行投影显示。
Select语句中的select … , from… , where…,等被称为子句,在以上基本形式基础上会增加许多构成要素,也会增加许多新的子句,满足不同的需求。
在这里插入图片描述

2、检索条件之去重复记录

结果唯一性问题:关系模型不允许出现重复元组。但现实DBMS,却允许出现重复元组,但也允许无重复元组。

在Table中要求无重复元组是通过定义Primary key或Unique来保证的;而在检索结果中要求无重复元组,是通过DISTINCT保留字的使用来实现的。

示例∶在选课表中,检索成绩大于80分的所有学号
select S# From sc Where Score > 80;
// 有重复元组出现,比如一个同学两门以上课程大于80

Select DISTINCT S# From sc Where score > 80;
// 重复元组被DISTINCT过滤掉,只保留一份

3、检索结果之排序

Select语句中结果排序是通过增加order by子句实现的:order by 列名 [asc | desc]

意义为检索结果按指定列名进行排序,若后跟asc或省略,则为升序;若后跟desc,则为降序。

示例:按学号由小到大的顺序显示出所有学生的学号及姓名:
Select S#, Sname From Student Order By S# ASC ;
示例:检索002号课大于80分的所有同学学号并按成绩由高到低顺序显示:
Select S# From sc Where C# =‘002’and Score > 80 Order By Score DESC ;

4、模糊查询

含有like运算符的表达式:列名 [not] like “字符串”

找出匹配给定字符串的字符串。其中给定字符串中可以出现%, _等匹配符.

匹配规则:

  1. “%”:匹配零个或多个字符
  2. “_”:匹配任意单个字符
  3. “l”:转义字符,用于去掉一些特殊字符的特定含义,使其被作为普通字符看待,如用“1%”去匹配字符%,用_去匹配字符_

示例:检索所有姓张的学生学号及姓名
Select S#, Sname From Student Where Sname Like ‘张%’;
示例:检索名字为张某某的所有同学姓名
Select Sname From Student Where Sname Like ‘张_ _’;
示例:检索名字不姓张的所有同学姓名
Select Sname From Student Where Sname Not Like ‘张%’;

四、利用SQL语言进行多表联合查询

多表联合检索可以通过连接运算来完成,而连接运算又可以通过广义笛卡尔积后再进行选择运算来实现。
Select的多表联合检索语句Select 列名 [[列名].….] From 表名1, 表名2,…. Where 检索条件;
在这里插入图片描述
检索条件中要包含连接条件,通过不同的连接条件可以实现等值连接、不等值连接及各种θ-连接

1、θ-连接之等值连接

示例:按“001”号课成绩由高到低顺序显示所有学生的姓名(二表连接)
Select Sname From Student, sc Where Student.S# = sc.s# and sC.C# =‘001’ Order By Score DESC;

多表连接时,如两个表的属性名相同,则需采用 表名.属性名 方式来限定该属性是属于哪一个表

示例:按‘数据库’课成绩由高到低顺序显示所有同学姓名(三表连接)
Select Sname From Student, sC, Course Where Student.S# = sc.s# and sC.c# = Course.C# and Cname =‘数据库’ Order By Score DESC;

2、表更名与表别名

连接运算涉及到重名的问题,如两个表中的属性重名,连接的两个表重名(同一表的连接)等,因此需要使用别名以便区分。
select中采用别名的方式Select 列名 as 列别名 [[列名 as 列别名]...] From 表名1 as 表别名1, 表名2 as 表别名2, … Where 检索条件;

上述定义中的as可以省略
当定义了别名后,在检索条件中可以使用别名来限定属性

3、θ-连接之不等值连接

示例:求有薪水差额的任意两位教师
Select T1.Tname as Teacher1,T2.Tname as Teacher2 From Teacher T1,Teacher T2 Where T1.Salary > T2.Salary;
示例:求年龄有差异的任意两位同学的姓名
Select S1.Sname as Stu1, S2.Sname as Stu2 From Student S1, Student s2 Where S1.Sage > s2.Sage ;

五、利用SQL语言进行增、删、改

1、新增操作

元组新增 Insert 命令有两种形式

  1. 单一元组新增命令形式:插入一条指定元组值的元组:insert into 表名 列名 [,列名].….)] values (值 [,值].….);
  2. 批数据新增命令形式:插入子查询结果中的若干条元组。待插入的元组由子查询给出:insert into 表名 [列名[,列名].….)] 子查询;

示例:单一元组新增
Insert Into Teacher (T#,Tname, D#, Salary) Values ("005", “阮小七”, "03", “1250");

Insert Into Teacher Values ("006”,“李小虎”,“03", “950");

示例:批元组新增
新建立Table: St(S#, Sname),将检索到的满足条件的同学新增到该表中:
Insert Into st (S#, Sname) Select S#, Sname From Student Where Sname like ‘%伟’;

lnsert Into St (s#, Sname) Select S#, Sname From Student Order By Sname;

2、删除操作

元组删除Delete命令:删除满足指定条件的元组:Delete From 表名 [ Where 条件表达式 ];

如果Where条件省略,则删除所有的元组。

示例:删除SC表中所有元组
Delete From sc ;

示例:删除98030101号同学所选的所有课程
Delete From sC Where s# =‘98030101’;

示例:删除自动控制系的所有同学
Delete From Student Where D# in (Select D# From Dept Where Dname = ‘自动控制);

3、更新操作

元组更新Update命令:用指定要求的值更新指定表中满足指定条件的元组的指定列的值
Update 表名 Set 列名 = 表达式 | (子查询) [ [,列名=表达式|(子查询)]….] Where 条件表达式];

如果Where条件省略,则更新所有的元组。

示例:将所有教师工资上调5%
Update Teacher Set Salary = Salary * 1.05 ;

示例:将所有计算机系的教师工资上调10%
Update Teacher Set Salary = Salary * 1.1 Where D# in (Select D# From Dept Where Dname=‘计算机);

六、利用SQL语言修正与撤销数据库

1、修正数据库

修正数据库的定义,主要是修正表的定义

修正基本表的定义
alter table tablename [add {colname datatype,…}] [drop {完整性约束名) [modify {colname datatype,.…]]
// 增加新列 删除完整性约束 修改列定义

示例:在学生表Student(S#,Sname,Ssex,Sage,D# ,Sclass)基础上增加二列Saddr, PID
Alter Table Student AddSaddr char[40],PID char[18];

示例:将上例表中Sname列的数据类型增加两个字符
Alter Table student Modify Sname char(10) ;

示例:删除学生姓名必须取唯一值的约束
Alter Table student Drop Unique( Sname );

2、撤销基本表

撤消基本表drop table 表名

示例:撤消学生表Student
Drop Table Student;

注意,SQL-delete语句只是删除表中的元组,而撤消基本表drop table的操作是撤消包含表格式、表中所有元组、由该表导出的视图等相关的所有内容。

撤消数据库drop database 数据库名;

示例:撤消SCT数据库
Drop database SCT;

指定当前数据库use 数据库名;

关闭当前数据库close 数据库名;

七、备注

  1. FROM子句对应的是关系代数的笛卡尔积操作。
  2. SELECT子句对应关系代数的投影操作。
  3. GROUP BY子句是分组操作。
  4. WHERE子句对应关系代数的选择操作。

http://chatgpt.dhexx.cn/article/iTSVrQo4.shtml

相关文章

数据库SQL语言

SQL语言基础 大家好,我是大黄。这次我来简单带你们了解一下数据库技术中必不可少的一项——SQL语言。 SQL,英文是Structured Query Language,直面翻译就是结构化疑问语言。所以说明这个语言是有一定的结构的,所以基础阶段不会太困…

数据库语言

DDL语言 其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREATE TABLE 或 DROP TABLE)为表加入索引等。 mysql是一个关系型数据库,库里面包含若干个表,而每一张表都是由行和列组成。 1.关于数据库操作的命…

数据库基础语言

目录 数据库与表的概念 如何操作数据库 数据库连接方式 SQL分类 DDL数据定义语言 DML 数据操作语言 数据库常用数据类型 约束条件 主键约束(PRIMARY KEY) 具有主键约束的字段同时可以使用自增来让DBMS自行对其值进行维护 非空约束(NOT NULL) 唯一性约束(UNIQUE) D…

MySQL-SQL语言

文章目录 SQL语法要求:1、DDL1.1、数据库操作(1) 查询当前数据库(2) 查询当前数据库(3) 创建数据库(4) 创建一个itheima数据库,并且指定字符集(5) 删除数据库(6) 切换数据库 1.2、表操作1.2.1、表的基本操作(1) 查询当前数据库所有表(2) 查看指定表结构(…

只知道SQL数据库?又一国产数据库语言诞生了

一、为什么学习数据库? 学习数据库,你肯定需要先了解它,这样你才知道你为什么要学习它,数据库除了SQL还有一些别的数据库,了解它们的作用,可以在不同的场景选择最符合的一个数据库。 1.1 什么是数据库&am…

比SQL还好用,又一门国产数据库语言诞生了

目录 一、数据库语言的目标1、要说清这个目标,先要理解数据库是做什么的。2、什么样的计算体系才算好呢? 二、SQL为什么不行1、先看写着简单的问题2、为什么 SQL 不行呢?3、再看跑不快的原因4、我们再做个类比: 三、SPL为什么能行…

MySQL数据库——SQL语言

文章目录 MySQL数据库——SQL语言前言一、数据定义语言(DDL)二、数据操纵语言(DML)三、事务控制语言(TCL)四、数据查询语言(DQL)1.select/for 基本查询语句2.给列起别名(…

写着简单跑得又快的数据库语言 SPL

数据库语言的目标 要说清这个目标,先要理解数据库是做什么的。 数据库这个软件,名字中有个“库”字,会让人觉得它主要是为了存储的。其实不然,数据库实现的重要功能有两条:计算、事务!也就是我们常说的 OLA…

大数据和云计算有什么关系?

前言 本文隶属于专栏《大数据从0到1》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和文献引用请见《大数据从0到1》 解答 云计算关注资源的分配和利用,侧重…

【云原生|云计算系列】云计算基础概念

欢迎来到云原生专题的云计算系列第一篇博客,我们将探索云计算的基础知识,以帮助您深入了解这个迅速发展的领域。在前一篇博客中,我们介绍了云原生的概念和重要性,强调了它作为云计算的核心理念和实践的关键角色。本篇博客将进一步…

云计算之概念——IaaS、SaaS、PaaS、Daas

云计算通俗来说就是输入/输出和计算不在一个主机上。计算要用到计算设备,计算设备一般是指CPU、内存和硬盘,输入/输出设备一般是指键盘、鼠标、显示器、耳机、音响、话筒等外设。而我们的个人计算机是使用主板将这些东西连接到一起来协调工作。 一个软件…

盘点云计算的概念,分类和特点

云计算主要分为 4 种类型:私有云、公共云、混合云和多云。同时,云计算服务主要有 3 种:基础架构即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。 怎么选择云类型或云…

云计算(详细解释)

云计算 云计算实现了通过网络提供可伸缩的,廉价的分布式计算能力,用户只需要在具备网络接入条件的地方,就可以随时随地获得所需的各种IT资源.云计算代表了以虚拟化技术为核心,以低成本为目标的,动态可拓展的网络应用基础设施.云计算包括3种典型的服务模式:laas(基础设施即服务…

云计算的概念、原理和关键技术

1 云计算的定义 NIST(美国国家标准及技术研究所)对云计算的定义: “ 云计算是一种模型,实现无处不在的、方便、通过网络按需访问的可配置的共享计算资源池(例如,网络、服务器、存储、应用程序、服务&…

云计算的概念与原理

接下来这几篇将给大家介绍KVM的相关知识,讲到KVM之前我们先了解一下云计算,这也是自己在网上找的一些知识总结。给大家参考一下。 一、云计算的概念 1.1、云是什么 我们可能使用过百度云是吧,就是将自己的文件放到那里去保存,要用…

什么叫云计算?云计算通俗解释

云计算通俗点讲就是把以前需要本地处理器计算的任务交到了远程服务器上去做。仔细给您解释云计算的概念可能比较抽象,我给您举几个云计算的应用实例吧。 第一是webQQ,你访问webqq的时候就会发现这里面有很多像是图片处理,网页浏览&#xff0…

云计算的概念及关键技术

1、云计算的概念 1.1概念 云计算是一种通过互联网访问、可定制的IT资源共享池,并按照使用量付费的模式,这些资源包括网络,服务器,存储、应用、服务等。广泛意义上 来说, 云计算是指服务的交付和使用模式,即通过网络以…

云计算 概念与技术

如果我倡导的计算机在未来得到使用,那么有一天,计算也可能像电话一样成为共用设施。计算机应用将成为一全新的、重要的产业的基础。 ——John McCarthy 云计算的概念 定义 Garther公司的定义 一种计算方式,能通过Internet技术将可扩展的和…

云计算的概念和价值

云计算的概念: 云计算(cloud computing)是一种按是使用量付费的模式,这种模式是可用的、便捷的、按需的网络访问,进入可配置的计算机资源共享池(资源包括网络,服务器,存储,应用软件&#xff0c…

什么是云计算?云计算概念集合

云计算的3种服务模式 IaaS(基础设施服务):提供给客户的服务是运营商运行在云计算基础设施上的应用程序,用户可以在各种设备上通过客户端界面访问,如浏览器。消费者不需要管理或控制任何云计算基础设施,包括…