常用SQL语言语法格式
- 格式:doc
- 大小:53.00 KB
- 文档页数:5
软件技术课程设计实验指导书第四篇附录目录附录B 常用SQL语言语法格式一、SQL模式的创建和撤消CREATE SCHEMA <模式名> AUTHORIZATION <用户名>例如,CREATE SCHEMA ST_COURSE AUTHORIZATION 李斌DROP SCHEMA <模式名> [CASCADE|RESTRICT]DROP SCHEMA <模式名> [CASCADE|RESTRICT]撤消方式有两种:CASCADE(连锁式)方式,执行DROP语句时,把SQL模式及其下属的基本表、视图、索引等所有元素全部撤消;RESTRICT(约束式)方式,执行DROP语句时,只有当SQL模式中没有任何下属元素时,才能撤消SQL模式,否则拒绝执行DROP语句。
例如,要撤消SQL模式ST_COURSE及其下属所有的元素,可用下列语句实现:DROP SCHEMA ST_COURSE CASCADE二、基本表的创建、修改和撤消(1)基本表的创建句法:CREATE TABLE SQL模式名.基本表名(列名类型,… …完整性约束,……)主键子句(PRIMARY KEY)、检查子句(CHECK)和外键子句(FOREIGN KEY)。
例如:CREATE TABLE S (SNO CHAR(4) NOT NULL,SNAME CHAR(20) NOT NULL,STATUS CHAR(10),ADDR CHAR(20),PRIMARY KEY(SNO));(2)基本表结构的修改基本表建立后,可根据需要对基本表结构进行修改,即增加新的属性或删除原有的属性。
①增加新的属性句法:ALTER TABLE 基本表名ADD 新属性名新属性类型例7.2 在基本表S中增加一个电话号码(TELE)属性,可用下列语句:ALTER TABLE S ADD TELE CHAR(12);应注意,新增加的属性不能定义为“NOT NULL”。
基本表在增加一个属性后,原有元组在新增加的属性列上的值都被定义为空值(NULL)。
②删除原有的属性句法:ALTER TABLE 基本表名DROP 属性名[CASCADE|RESTRICT]此处CASCADE方式表示:在基本表中删除某属性时,所有引用到该属性的视图和约束也要一起自动地被删除。
而RESTRICT方式表示在没有视图或约束引用该属性时,才能在基本表中删除该属性,否则拒绝删除操作。
ALTER TABLE S DROP STATUS CASCADE;(3)基本表的撤消可用“DROP TABLE”语句撤消基本表,其所有数据也丢失了。
DROP语句的句法如下:DROP TABLE基本表名(CASCADE|RESTRICT)例如DROP TABLE S RESTRICT;三、视图的创建和撤消(1)视图的创建句法:CREATE VIEW 视图名(列名表) AS SELECT 查询语句CREATE VIEW JSP_NAME(JNO,JNAME,SNO,SNAME,PNO,PNAME,QTY)AS SELECT (J.JNO,JNAME,S.SNO,SNAME,P.PNO,PNAME,SPJ.QTY)FROM S,P,J,SPJWHERE S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO AND J.JNO=SPJ.JNO;此处,视图中列名顺序与SELECT子句中的列名顺序一致,视图名JSP_NAME后的列名可省。
(2)视图的撤消句法:DROP VIEW 视图名例7.6 撤消JSP_NAME视图,可用下列语句实现:DROP VIEW JSP_NAME;四、索引的创建和撤消(1)索引的创建句法:CREATE [UNIQUE] INDEX 索引名ON 基本表名(<列名> [<次序>] [,<列名> [<次序>]]…)其中,基本表名指定要建索引的基本表的名字。
索引可以建在该表的一列或多列上,各列名之间用逗号分隔。
每个<列名>后面还可以用<次序>指定索引值的排列次序,包括ASC(升序)和DESC(降序)两种,默认值为ASC。
UNIQUE表示此索引的每一个索引值只对应惟一的数据记录。
CREATE INDEX JNO_INDEX ON J(JNO);(2)索引的撤消句法:DROP INDEX <索引名>例7.8 撤消索引JNO_INDEX和SPJ_INDEX,用如下语句:DROP INDEX JNO_INDEX,SPJ_INDEX;五、SQL的数据操纵(DML)1. SQL的数据查询SQL中最经常使用的是从数据库中获取数据。
从数据库中获取数据称为查询数据库,查询数据库通过使用SELECT语句完成。
(1)SELECT语句格式常见的SELECT语句包含6部分,其语法形式为:SELECT 字段表FROM 表名WHERE 查询条件GROUP BY 分组字段HA VING 分组条件ORDER BY字段[ASC|DESC]其中:字段表部分包含了查询结果要显示的字段清单,字段之间用逗号分开。
要选择表中所有字段,可用星号“ ”代替。
如果所选定的字段要更名,可在该字段后用AS[新名]实现。
FROM子句用于指定一个或多个表。
如果所选的字段来自不同的表,则字段名前应加表名前缀。
WHERE子句用于限制记录的选择。
构造查询条件可使用大多数的Visual Basic内部函数和运算符,以及SQL特有的运算符构成表达式。
GROUP BY和HA VING子句用于分组和分组过滤处理。
它能把在指定字段列表中有相同值的记录合并成一条记录。
如果在SELECT语句中含有SQL合计函数,例如SUM或COUNT,那么就为每条记录创建摘要值。
在GROUP BY字段中的NULL值会被分组,并不省略。
但是,在任何SQL合计函数中都计算NULL值。
可用WHERE子句来排除不想分组的行,将记录分组后,也可用HA VING子句来筛选它们。
一旦GROUP BY完成了记录分组,HA VING就显示由GROUP BY子句分组的、且满足HA VING子句条件的所有记录。
HA VING子句与已确定要选中哪些记录的WHERE子句类似。
ORDER BY子句决定了查找出来的记录的排列顺序。
在ORDER BY子句中,可以指定一个或多个字段作为排序键,ASC选项代表升序,DESC代表降序。
在SELECT语句中,SELECT和FROM子句是必须的。
可在SELECT子句内使用合计函数对记录进行操作,它返回一组记录的单—值。
例如,A VG 函数可以返回记录集的特定字段中所有值的平均数。
用到了字符串匹配操作符LIKE。
LIKE谓词的一般形式是:列名LIKE 字符串常数这里,列名的类型必须是字符串或可变字符串。
在字符串常数中字符的含义如下:%(百分号):表示可以与任意长度(可以为零)的字符串匹配。
_(下划线):表示可以与任意单个字符匹配。
所有其他的字符只代表自己。
(3)多表查询实现来自多个关系的查询时,如果要引用不同关系中的同名属性,则在属性名前加关系名,即用“关系名.属性名”的形式表示,以便区分。
在多个关系上的查询可以用联接查询表示也可以用嵌套查询来表示。
(4)合计函数SQL 提供了下列合计函数(表7.15)2.SQL的数据更新SQL的数据更新包括数据插入、数据修改和数据删除等操作。
(1)数据插入SQL的数据插入语句INSERT有两种形式。
①输入单个元组句法:INSERT INTO 基本表名(列名表) V ALUES (元组值)V ALUES后的元组值中列的顺序必须同基本表的列名表一一对应。
如基本表后不跟列名表,表示在V ALUES后的元组值中提供插入元组的每个分量的值,分量的顺序和关系模式中列名的顺序一致。
如基本表后有列名表,则表示在V ALUES后的元组值中只提供插入元组对应于列名中的分量的值,元组的输入顺序和列名表的顺序一致。
基本表后如有列名表,必须包括关系的所有非空的属性,也自然应包括关键码属性。
例7.13 往基本表J中插入一个元组('J8', '地铁二号线', '上海')INSERT INTO J(JNO,JNAME,CITY) V ALUES('J8', '地铁二号线', '上海');例7.14 假设供应商关系S的STA TUS,ADDR属性允许空,插入一个新的供应商编号'S10',供应商名'光明零件厂'。
INSERT INTO S(SNO,SNAME)V ALUES ('S10', '光明零件厂');②输入多个元组句法:INSERT INTO 基本表名(列名表)V ALUES(元组值),(元组值),…例7.15 往SPJ中连续插入三个元组INSERT INTO SPJ V ALUES(('S3','P2','J8',23.3,1500),('S2','Pl','J8',33.4,50),('S3', 'P5', 'J8',34.5,80));(2)数据删除句法:DELETE FROM <表名> WHERE <条件表达式>例7.16 删除工程号为J4的所有零件供应记录。
DELETE FROM SPJ WHERE JNO='J4';注意,DELETE语句只能从一个关系中删除元组,而不能一次从多个关系中删除元组。
要删除多个元组,就要写多个DELETE语句。
(3)数据修改当需要修改指定关系中元组的某些值时,用如下语句:UPDATE 基本表名SET 列名=值表达式[,列名=值表达式…] [WHERE 条件表达式] 该语句的意义是:修改指定表中满足条件表达式的元组中的指定属性值,其中SET子句用于指定修改方法,即用(表达式)的值取代相应的属性列值。
如果省略WHERE子句,表示要修改表中的所有元组。
例7.17 将供应商S4提供的零件P2的价格提高6%UPDATE SPJ SET PRICE=PRICE*1.06 WHERE SNO='S4' AND PNO='P2';六、SQL的数据控制(DCL)现在的数据库系统大都提供了非常完善的安全机制,一般采用基于角色的(就是根据用户的特性,把用户分为不同的类别。
如管理员、数据库备份管理员、数据库用户管理员、普通用户等。