第三章 关系数据库标准语言SQL

3.1 SQL概述

3.1.1 SQL的产生与发展

1)SQL的概念

SQL语言是结构化查询语言,介于关系代数和关系演算之间的语言,是关系数据库的标准语言。

2)SQL的标准

3)SQL的应用、SQL的命令

⑴数据定义语言(DDL)

创建、修改或删除数据库中各种对象,包括 SQL数据库、模式、基本表、视图、索引等。

⑵查询语言(QL)

按照指定的组合、条件表达式或排序检索 已存在的数据库中数据,不改变数据库中数据。

命令:SELECT    FROM    WHERE

(3)数据操纵语言(DML)

对已经存在的数据库进行元组的插入、删除、 修改等操作。

命令:INSERT、UPDATE、DELETE

⑷数据控制语言(DCL)

用来授予或收回访问数据库的某种特权,控制事务的提交和回滚。

命令:GRANT、REVOKE、COMMIT、ROLLBACK

3.1.2 SQL的特点

1)SQL的特点

(1)   功能强大

(2)   语言简洁、易学易用

(3)同一语法结构提供两种使用方式

(4) 高度非过程化

(5)面向集合的操作方式

2)SQL对三级模式的支持

 

 

3.2 学生课程数据库

学生表:S(sno,sname,age,sex)

课程表:C(cno,cname,tname)

学生选课表:SC(sno, cno,grade)

三表之间联系:

3.3 数据定义

3.3.1 数据库和模式的定义

1)数据库的创建和删除

(1)   创建数据库:

CREATE DATABASE database_name [      ………]

例:  CREATE DATABASE  student;

(2)   修改数据库:

ALTER DATABASE database_name

(3)   删除数据库:

DROP DATABASE database_name

例:  DROP DATABASE student;

2)模式的创建和删除

创建SQL模式即定义一个DB下的命名空间, 在这个空间中可进一步定义该模式包含的各个数据库对象。

(1)创建模式

CREATE SCHEMA <模式名> AUTHORIZATION <用户名>

(2)删除模式

DROP SCHEMA〈模式名〉[CASCADE|RESTRICT]

备注:CASCADE (连锁)方式;RESTRICT (约束,默认)方式

首先要建立用户自己的数据库。一个数据库中可以建立多个模式,用户不指定,系统会自动建立与用户名相同的模式名,并将其后建立的基本表、索引等数据库对象建立在默认模式中。

一个模式下可以包括多个表、视图和索引等数据库对象,可以用数据库模式表(DATABASE.SCHEMA.TABLE) 来引用这些数据库对象。

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

1)基本表的创建

CREATE TABLE〈基本表名〉(<列名><数据类型>[列级完整性约束条件],[<列名 ><数据类型>[列级完整性约束条件]]……[,表级完整性约束条件]);

常用完整性约束

-主码约束:  PRIMARY KEY

-唯一性约束:UNIQUE

-非空值约束:NULL/NOTNULL

-参照完整性约束:FOREIGN KEY REFERENCES

-检查子句:CHECK

★这些保留字不能用作表名、列名等。

例题:

建立学生关系模式S(sno,sname,age,sex)

CREATE TABLE S

(sno char(4) PRIMARY KEY sname char(8) NOT NULL, age smallint, sex char(2),

PRIMARY KEY(sno));

建立课程关系模式C(cno,cname,tname)

CREATE TABLE C

(cno char(4) NOT NULL, cname char(8) NOT NULL, tname char(10), PRIMARY KEY(cno));

建立选课关系模式SC(sno,cno,grade)

CREATE TABLE SC

(sno char(4) NOT NULL, cno char(4) NOT NULL, grade smallint, PRIMARY KEY (sno,cno), FOREIGN KEY(sno)REFERENCES S(sno), FOREIGN KEY(cno)REFERENCES C(cno), CHECK( (grade IS NULL) OR

(grade BETWEEN 0 AND 100))

);

2)基本表的修改

(1)   对表增加列

ALTER TABLE <表名>ADD〈列名〉<数据类型>[NULL|NOTNULL],...;

ALTER TABLE S ADD addr CHAR(20);

★如果原表中已存在数据,则新定义的列必须设置为NULL,表中原有元组在新增加的列上 的值均被定义为空值。

(2)撤销原有的列

ALTER TABLE〈表名〉DROP COLUMN〈列名〉;

 ALTER TABLE S DROP COLUMN addr;

(3)修改原有的类型

ALTER TABLE〈表名〉ALTER COLUMN〈列名〉;

ALTER TABLE S ALTER addr CHAR(10);

3)基本表的删除

DROP TABLE <表名>[CASCADE|RESTRICT]

★ CASCADE(连锁,即与表相关的均删除);RESTRICT(约束)

例如:DROP TABLE SC CASCADE;

当删除表时,表的数据、表上建立的索引和视 图都自动被删除。

3.3.3 索引的定义

1)索引的使用

建立索引是加快查询速度的有效手段。

(1)建立索引

-DBA或表的属主(即建立表的人)根据需要建立。

-有些DBMS自动建立以下列上的索引。

•      PRIMARY KEY

•      UNIQUE

(2 )维护索引

-索引建立后由DBMS自动维护,不需用户干预。

(3)使用索引

-DBMS自动选择是否使用索引以及使用哪些索引。

2)索引的创建

CREATE [UNIQUE] [CLUSTER] INDEX<索引名> ON〈基本表名〉(<列名1>[ASC|DESC]

[,<列名 2 >[ASC|DESC]]…)

备注:

UNIQUE表示每一个索引值只对应唯一的数据记录。

CLUSTER表示建立的索引是聚簇索引,索引值相同或相邻的数据记录存放在连续的物理块中。 

例1:CREATE UNIQUE INDEX SI ON S(sno)// UNIQUE:唯一性索引,SI:索引名

例2:

CREATE UNIQUE INDEX SC_INDDEX1 ON SC(sno ASC, cno DESC)

缺省时,表示升序:ASC不写表示升序

例3:

CREATE CLUSTER INDEX SC_INDDEX2 ON SC(grade)

CLUSTER聚簇索引,相邻成绩存放在同一数据块中

3)索引的删除

语法:DROP INDEX〈表名.索引名〉

例: DROP INDEX SC.SC_INDDEX1 或

DROP INDEX SC_INDDEX1 on SC

删除索引时,系统会同时从数据字典中删除 有关该索引的描述。

3.4数据查询

3.4.1 单表查询

只涉及一个 表的查询称为单表查询

1)简单的单表查询

(1)查询语句的基本结构

SQL的查询语句基本语法结构: SELECT- FROM-WHERE

SELECT Al,A2,...,An   //列名

FROM Rl,R2,...,Rn    //来源的表

WHERE〈查询条件表达式〉;  

//三条语句顺序不可改变

 (2)选择表中的列 SELECT

1.查询指定列(或全部列)

例1:查看学生全部信息

SELECT sno,sname,age,sex FROM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值