学习目标
了解SQL语言的特点
掌握SQL的数据定义
掌握SQL的单表查询
SQL概述
SQL的特点
综合统一:SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体。
高度非过程化:非关系数据模型的数据操纵语言是面向过程的语言,操作必须指明存取路径;而用SQL语言进行数据操作,只要提出“做什么”,无须指明“怎么做”,因此无需了解存取路径。
面向集合的操作方式:非关系数据模型采用的是面向记录的操作方式,操作对象是一条记录;而SQL语言采用的集合操作方式,不仅操作对象、查询结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
以同一种语法结构提供两种使用方法:SQL语言既是自含式语言,能独立地用于联机交互;又是嵌入式语言,能嵌入到高级语言中进行混合编程。
语言简洁,易学易用:完成核心功能只用9个动词:
数据定义
定义、修改与删除基本表
定义基本表
CREATE TABLE <表名>
(<列名> <数据类型>[ <列级完整性约束条件> ]
[,<列名> <数据类型>[ <列级完整性约束条件>] ] …
[,<表级完整性约束条件> ] );
其中:表名为所要定义的基本表的名字,列名为组成该表的各个属性(列),列级完整性约束条件为涉及相应属性列的完整性约束条件,表级完整性约束条件为涉及一个或多个属性列的完整性约束条件。常用的完整性约束有:主码约束PRIMARY KEY、唯一性约束UNIQUE、非空值约束NOT NULL、参照完整性约束FOREIGN KEY REFERENCES。
[例1]建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、系别Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。
CREATE TABLE Student
(Sno CHAR(5) NOT NULL UNIQUE,
Sname CHAR(20) UNIQUE, Ssex CHAR(1) ,
Sage INT,Sdept CHAR(15));
Sno
Sname
Ssex
Sage
Sdept
字符型,
长度为5,
不能为空
字符型,
长度为20
字符型
长度为1
整数
字符型
长度为15
例:
CREATE st_example
(id INT NOT NULL,
name VARCHAR(10) NOT NULL,
salary MONEY NOT NULL
CONSTRAINT salary_cap CHECK (salary < 100000)
)
CREATE TABLE jobs (
job_id smallint,
job_desc varchar(50) NOT NULL DEFAULT 'New Position - title not formalized yet',
min_lvl int NOT NULL CHECK (min_lvl >= 10),
max_lvl tinyint NOT NULL CHECK (max_lvl <= 250
) )
CONSTRAINT FK_sales_backorder FOREIGN KEY (stor_id, ord_num, title_id) REFERENCES sales (stor_id, ord_num, title_id)
修改基本表
ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束] ]
[ DROP <完整性约束名> ] [ DROP column <列名> ]
[ MODIFY <列名> <数据类型> ];
其中:表名为要修改的基本表,ADD子句为增加新列和新的完整性约束条件,DROP子句为删除指定的完整性约束条件,MODIFY子句为用于修改列名和数据类型。
[例2]向Student表增加“入学时间”列,其数据类型为日期型。
ALTER TABLE Student ADD Scome DATE;
不论基本表中原来是否已有数据,新增加的列一律为空值。
[例3]将年龄的数据类型改为半字长整数。
ALTER TABLE Student MODIFY Sage SMALLINT;
修改原有的列定义有可能会破坏已有数据。
[例4]删除学生姓名必须取唯一值的约束。
ALTER TABLE Student DROP UNIQUE(Sname);
SQL没有提供删除属性列的语句,用户只能间接实现这一功能:先把表中要保留的列及其内容复制到一个新表中,然后删除原表,再将新表重命名为原表名。但有的DBMS提供直接删除属性列的语句,
数据库 第3章关系数据库标准语言SQL(1) 来自淘豆网m.daumloan.com转载请标明出处.