【数据库系统】第六讲 SQL语言概述

6.1 SQL语言概述

1、SQL语言提出和发展


2、SQL语言的功能概述

SQL语言是集DDL、DML和DCL于一体的数据库语言
SQL语言主要由以下9个单词引导的操作语句来构成,但每一种语句都能表达复杂的操作请求

  • DDL语句引导词:Create,Alter,Drop:模式的定义和删除,包括Database,Table,View,Index,完整性约束条件等,也包括定义对象(RowType行对象,Type列对象)
  • DML语句引导词:Insert,Delete, Update, Select:各种方式的更新与检索操作,如直接输入记录,从其他Table(由SubQuery建立)输入;各种复杂的检索,如连接查找,模糊查找,分组查找,嵌套查找等;各种聚集操作,求平均、求和等,分组聚集,分组过滤等
  • DCL语句引导词:Grand,Revoke:安全性控制,授权和撤销授权

交互式SQL→嵌入式SQL→动态SQL等

6.2 建立数据库

1、课堂讲义使用的数据库


2、SQL-DDL

建立数据库:定义数据库和表(使用DDL),向表中追加元组(使用DML)
DDL:Data Definition Language

  • 创建数据库(DB)——Create Database
  • 创建DB中的Table(定义关系模式)——Create Table
  • 定义Table及其各个属性的约束条件(定义完整性约束)
  • 定义View(定义外模式及E-C映像)
  • 定义Index、Tablescapegoat等(定义物理存储参数)
  • 上述各种定义的撤销与修正

DDL通常由DBA来使用,也有经DBA授权后由应用程序员来使用

(1)创建数据库语句——Create Database

数据库是若干具有相互关联关系的Table/Realtion的集合
数据库可以看做是一个集中存放若干Table的大型文件
create database的简单语法形式:create database 数据库名;

(2)创建关系/表的语句——Create Table

create table 表名(列名 数据类型[Primary key Primary key |Unique |Unique][Not Notnull null] [, 列名数据类型[Not Notnull null] , …]) ;
“[ ] ”表示其括起的内容可以省略,“| ”表示其隔开的两项可取其一
Primary key:主键约束。每个表只能创建一个主键约束。
Unique:唯一性约束(即候选键)。可以有多个唯一性约束。
Not null: 非空约束。是指该列允许不允许有空值出现,如选择了Notnull表明该列不允许有空值出现。
语法中的数据类型在SQL标准中有定义

3、SQL-DML

建立数据库:定义数据库和表(DDL),向表中追加元组(DML)
DML:Data Manipulation Language

  • 向Table中追加新的元组:Insert
  • 修改Table中某些元组中的某些属性的值:Update
  • 删除Table中的某些元组:Delete
  • 对Table中的数据进行各种 条件的检索:Select

DML通常由用户或应用程序员使用,访问经授权的数据库

(1)向表中追击元组的值——INSERT INTO

insert into表名[ (列名[, 列名]…] values (值[, 值] , …) ;
values后面值的排序,须与into子句后面的列名排列一致
如果表明后的所有列名省略,则values后的值的排序,须与该表存储中的列名排列一致

6.3 简单查询

1、单表查询——SELECT-FROM-WHERE

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

2、检索条件——SELECT-FROM-WHERE

检索条件的书写与选择运算的条件con书写一样,只是其逻辑运算符用and , or, not 来表示, 同时也要注意运算符的优先次序及括弧的使用。书写要点是注意对自然语言检索条件的正确理解。

3、去重复记录——SELECT DISTINCT FROM-WHERE

结果唯一性问题:关系模型不允许出现重复元组。但显示DBMS,却允许出现重复元组,但也允许无重复元组。
在Table中要求无重复元组是通过定义Primary key或Unique来保证的;而在检索结果中要求无重复元组, 是通过DISTINCT保留字的使用来实现的。

4、排序——SELECT-FROM-WHERE-ORDER BY

结果排序问题:DBMS可以对检索结果进行排序,也可以升序排序,也可以降序排序
order by 列名 [asc|desc]

5、模糊查询——SELECT-FROM-WHERE * LIKE *

列名 [not] like “字符串”
找出匹配给定字符串的字符串。其中给定字符串中可以出现%,_等匹配符
匹配规则:

6.4 多表联合查询

1、多表联合查询

多表联合检索可以通过连接运算来完成,而连接运算又可以通过广义笛卡尔积后再进行选择运算来实现。
Select 列名 [ [, 列名] …] From 表名1, 表名2, … Where 检索条件;
相当于

检索条件中要包含连接条件,通过不同的连接条件可以实现等值连接、不等值连接及各种θ-连接

2、连接条件

3、表更名与表别名

连接运算涉及到重名的问题,如两个表中的属性重名,连接的两个表重名(同一表的连接)等,因此需要使用别用以便区分

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

4、不等值连接

5、多表联合查询训练


6.5 增删改

1、更新操作

Insert、Update、Delete
SQL-DML既能单一记录操作,也能对记录集合进行批更新操作
SQL-DML的更新操作需要利用前面介绍的子查询(Subquery)的概念,以便处理“一些”、“某些”等

2、INSERT

(1)单一元组新增命令形式:插入一条指定元组值的元组

insert into表名[(列名[,列名]…)] values (值[,值]…);

(2)批数据新增命令形式:插入子查询结果中的若干条元组。待插入的元组由子查询给出

insertinto表名[(列名[,列名]…)] 子查询;


还可以有更复杂的“查询后插入到新表中”的语句,例如可以将中间结果存储成表
Insert Into St(S#, Sname, avgScore)
Select S#, Sname, Avg(Score) From Student, SC
Where Student.S# = SC.S#
Group by Student.S# ;

3、DELETE

Delete From表名[ Where条件表达式] ;
如果Where条件省略,则删除所有的元组


当删除元组时,DBMS会坚持用户定义的完整性约束条件等,如不符合完整性约束条件,则不会执行删除操作

4、UPDATE


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


6.7 修正与撤销数据库

SQL-DDL

1、撤销与修改

(1)修正数据库:修正数据库的定义,主要是修正表的定义

修正基本表的定义:

(2)撤销基本表:drop table表名

(3)撤销数据库

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

2、数据库指定与关闭命令

有些DBMS提供了操作多个数据库的能力,此时在进行数据库操作时需要指定待操作数据与关闭数据库的功能
指定当前数据库:use 数据库名;
关闭当前数据库:close 数据库名;

小结

6.9 典型DBMS交互环境简介-SQL Server

1、SQL Server简介


2、数据库的创建-删除与维护









3、数据表的创建-与增/删/改/查








发布了75 篇原创文章 · 获赞 28 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Swocky/article/details/104667436