常用SQL语言语法格式
更新时间:2024-01-05 12:00:01 阅读量: 教育文库 文档下载
软件技术课程设计实验指导书
第四篇 附录
目 录
附录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,SPJ
WHERE 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 分组字段 HAVING分组条件 ORDER BY字段[ASC|DESC]
其中:字段表部分包含了查询结果要显示的字段清单,字段之间用逗号分开。要选择表中所有字段,可用星号“?”代替。如果所选定的字段要更名,可在该字段后用AS[新名]实现。 FROM子句用于指定一个或多个表。如果所选的字段来自不同的表,则字段名前应加表名前缀。
WHERE子句用于限制记录的选择。构造查询条件可使用大多数的Visual Basic内部函数和运算符,以及SQL特有的运算符构成表达式。
GROUP BY和HAVING子句用于分组和分组过滤处理。它能把在指定字段列表中有相同值的记录合并成一条记录。如果在SELECT语句中含有SQL合计函数,例如SUM或COUNT,那么就为每条记录创建摘要值。在GROUP BY字段中的NULL值会被分组,并不省略。但是,在任何SQL合计函数中都计算NULL值。可用WHERE子句来排除不想分组的行,将记录分组后,也可用HAVING子句来筛选它们。一旦GROUP BY完成了记录分组,HAVING就显示由GROUP BY子句分组的、且满足HAVING子句条件的所有记录。HAVING子句与已确定要选中哪些记录的WHERE子句类似。
ORDER BY子句决定了查找出来的记录的排列顺序。在ORDER BY子句中,可以指定一个或多个字段作为排序键,ASC选项代表升序,DESC代表降序。 在SELECT语句中,SELECT和FROM子句是必须的。 可在SELECT子句内使用合计函数对记录进行操作,它返回一组记录的单—值。例如,AVG函数可以返回记录集的特定字段中所有值的平均数。
用到了字符串匹配操作符LIKE。LIKE谓词的一般形式是: 列名 LIKE 字符串常数
这里,列名的类型必须是字符串或可变字符串。在字符串常数中字符的含义如下: %(百分号):表示可以与任意长度(可以为零)的字符串匹配。 _(下划线):表示可以与任意单个字符匹配。 所有其他的字符只代表自己。 (3)多表查询
实现来自多个关系的查询时,如果要引用不同关系中的同名属性,则在属性名前加关系名,即用“关系名.属性名”的形式表示,以便区分。
在多个关系上的查询可以用联接查询表示也可以用嵌套查询来表示。
(4)合计函数
SQL 提供了下列合计函数(表7.15)
表7.15 合计函数 合计函数 COUNT(*) COUNT(列名) SUM(列名) AVG(列名) MAX(列名) MIN(列名) 求某一列值的总和(此列必须是数值型) 求某一列值的平均值(此列必须是数值型) 求某一列值的最大值 求某一列值的最小值 描述 计算元组的个数 对一列中的值计算个数
2.SQL的数据更新
SQL的数据更新包括数据插入、数据修改和数据删除等操作。 (1)数据插入
SQL的数据插入语句INSERT有两种形式。 ① 输入单个元组
句法:INSERT INTO 基本表名 (列名表) VALUES (元组值)
VALUES后的元组值中列的顺序必须同基本表的列名表一一对应。如基本表后不跟列
名表,表示在VALUES后的元组值中提供插入元组的每个分量的值,分量的顺序和关系模式中列名的顺序一致。如基本表后有列名表,则表示在VALUES后的元组值中只提供插入元组对应于列名中的分量的值,元组的输入顺序和列名表的顺序一致。基本表后如有列名表,必须包括关系的所有非空的属性,也自然应包括关键码属性。
例7.13 往基本表J中插入一个元组('J8', '地铁二号线', '上海')
INSERT INTO J(JNO,JNAME,CITY) VALUES('J8', '地铁二号线', '上海');
例7.14 假设供应商关系S的STATUS,ADDR属性允许空,插入一个新的供应商编号'S10',供应商名'光明零件厂'。
INSERT INTO S(SNO,SNAME) VALUES ('S10', '光明零件厂'); ② 输入多个元组
句法:INSERT INTO 基本表名(列名表)VALUES(元组值),(元组值),… 例7.15 往SPJ中连续插入三个元组
INSERT INTO SPJ VALUES(('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)
现在的数据库系统大都提供了非常完善的安全机制,一般采用基于角色的(就是根据用户的特性,把用户分为不同的类别。如管理员、数据库备份管理员、数据库用户管理员、普通用户等。不同数据库系统的用户角色不完全相同)多级授权安全机制,所有对数据库的操作都需要更高一级的授权,任何级别的用户在使用数据库系统时,除了必须拥有的授权外,还必须提供正确的用户名和用户口令。在数据库系统中,数据库系统管理员DBA负责完成整个系统的管理工作,获得DBA授权的用户可以创建数据库、表等而成为这些数据库对象的拥有者。拥有者对自己所拥有的对象有完全控制权,同时拥有者也可以授权其他用户使用其所拥有的对象,当然,也可以收回授权。
SQL的数据控制功能是指控制用户对数据的存取权力,语句有两条:授权语句(GRANT)和收权语句(REVOKE)。顾名思义,授权语句是使某个用户具有某些权限,收权语句是收回已授给用户的权限。用户对数据的存取操作包括:增(INSERT)、删(DELETE)、改(UPDATE)、查(SELECT)。只有被授以了某项操作的权限的用户才能进行某项操作。
例7.18 假设把对表LTemp的所有操作权限授权给用户LUSER GRANT ALL ON LTemp TO LUSER;
例7.19假设只把查看(即SELECT)的权限授权给用户LUSER GRANT SELECT ON Ltemp TO LUSER;
例7.20 赋予用户LUSER的对表LTemp的更新权(包括INSERT、UPDATE、DELETE)收回
REVOKE INSERT,UPDATE,DELETE ON Ltemp FROM LUSER;
正在阅读:
常用SQL语言语法格式01-05
白果经林泉至马回岭公路(德安段)改造工程 施工组织设计04-09
山东省德州市夏津县七年级英语下册Module12WesternmusicUnit2Vie04-14
研究生求职自荐信05-12
食品营养学练习题09-15
江苏省南京师大附中2018届高三考前模拟考试英语卷(word版有答案)11-24
施工组织设计及方案01-02
如何让高年级作文活起来09-09
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 语法
- 常用
- 语言
- 格式
- SQL
- 2018年中国网红经济行业深度评估报告目录
- 开放英语3译文
- 财务管理练习题
- 森林公园一期景观及建筑初步设计说明书
- 《典型零件数控加工工艺的实施》课程大纲 - 图文
- 黄金分割线的画法和使用方法
- 2019年李煜《虞美人》原文及赏析-实用word文档(3页)
- 中国银行甘肃省分行春季招聘考试笔试卷试题内容历年真题
- 莆田市水利局车辆使用管理制度
- 节约型校园建筑节能监管平台
- “古诗词鉴赏”提优练习(答案版)
- 尿电解质 - 图文
- 算法分析与复杂性理论 实验报告 基本排序
- 高二语文模拟题(含答案)
- 四季饮食调理养生
- “十三五”重点项目-粉末冶金摩擦材料项目可行性研究报告 - 图文
- 五年级上册英语Unit 2 My days of the Week
- 副主任护师以下内科护理练习题
- 学生翻译练习材料
- 我国金融混业经营分析