Oracle SQL 语法大全


关系数据库标准语言SQL / 1 SQL语言初步 数据查询语句 数据库更新语句 数据定义语句 数据控制语句 什麽是SQL? z SQL:Structured query language z 功能:查询、操纵、定义、控制 z 特点:1、一体化; 2、两种使用方式,统一的语法结构; 方式一、联机交互使用方式; 方式二、嵌入式。 3、高度非过程化; 4、语言简洁,易学易用。 SQL支持关系数据库三级模式 基本表:独立存在的表。每个基表对应一个存 储文件,一个表可带若干索引。 存储文件+索引=内模式 视图:是一个虚表。数据库中仅存视图定义, 不存对应的数据 。 SQL的三级模式 外 模 式 模 式 内 模 式 Storefile1 Storefile2 Storefile3 Storefile4 Basetable1 Basetable2 Basetable3 Basetable4 View1 View2 SQL 用户 SQL命令的种类 z DDL,数据定义语言 z DML,数据操纵语言 z DQL,数据查询语言 z DCL,数据控制语言 z 数据管理命令 z 事务性控制命令 DDL,数据定义语言 z 用户创建或重新构建数据库的语言 CREATE INDEX ALTER INDEX DROP INDEX CREATE TABLE ALTER TABLE DROP TABLE DML,数据操纵语言 z 用于在关系数据库对象中操纵数据 INSERT UPDATE DELETE DQL,数据查询语言 z 对数据库中的信息寻找和定位 SELECT DCL,数据控制语言 z 用于创建与用户访问相关的对象,也控制 着用户的权限分配 ALTER PASSWORD改变口令 GRANT为用户授予特权 REVOKE从用户处收回特权 数据管理命令 z 审计和分析对数据库的操作,并可分析系统的 执行过程 START AUDIT STOP AUDIT 事务性控制命令 z 用户管理数据库的事务命令 COMMIT用于保护数据库的事务 ROLLBACK用于撤消数据库的事务 SAVEPOINT创建一组事务中的撤消点 SET TRANSACTION给事务命名 数据库中的表结构 z 数据库中的表 z 数据和基本数据类型 • 数据库中的表 表:字段、记录、列、主键 customer_tbl Order_tbl Products_tbl Prod_id Prod_desc cost 112 candy 1.35 113 plastic 1.04 Products_tbl 记录 列(字段) 主 键 数据和基本数据类型 z 数据是存储在数据库中的信息集合。数据 类型用于给特定的数据提供规则。 z 基本数据类型包括: 字符串 数字 日期和时间值 字符串 z 定长字符串: CHARACTER(n) z 变长字符串: CHARACTER VARYING(n) 数字值 z BIT(n) z BIT VERYING(n) z DECIMAL(n,n) z INTEGER z SMALLINT z FLOAT(p) z REAL(s) z DOUBLE PRECISION(p) 日期和时间值 z DATE(YEAR,MONTH,DAY) z TIME(HOUR,MINUTE,SECOND) z INTERVAL z TIMESTAMP NULL值:为空。 数据查询语句数据查询语句 z 语法: z SELECT [ * | all | column1,column2 ] FROM table1 [ ,table2 ] [ WHERE condition ] [ GROUP BY column1 ] [ ORDER BY column2(asc,desc) ] 按列取值相等的 原则进行分组 按列值进行排序 z 例1:SELECT * FROM products_tbl WHERE cost < 5 z 例2:SELECT prod_desc,cost FROM products_tbl WHERE prod_id = ‘119’ z 例3:多表查询 SELECT employee_tbl.emp_name, employee_pay_tbl.position FROM employee_tbl, employee_pay_tbl WHERE employee_tbl.emp_id = employee_pay_tbl.emp_id SQL中操作符的使用 定义:操作符是保留的字或字符,主要用于比 较和算术运算。 分类:比较操作符,逻辑操作符和算术运算符。 1、比较操作符 包括:=,<>, >, <, <=, >=。 注意比较双方的数据类型。 2、算术运算符 包括:+,-,*,/等。 与数学运算规则一致。 2、逻辑操作符 z IS NULL(是否为空) z BETWEEN(在某两个值之间) z IN(一系列值中) z LIKE(相似值的比较) z EXITS(是否存在符合条件的数据) z UNIQUE(是否唯一) z ALL/ANY(一组数据的所有/其中的任何一个) z AND/OR(逻辑与/或) IS NULL / IS NOT NULL z WHERE salary IS NULL 工资为空值。 z WHERE salary = NULL 工资中含有NULL字符。 z 例: z SELECT emp_id, emp_name FROM employee_tbl WHERE emp_phone IS NULL BETWEEN z WHERE salary BETWEEN 200 and 300 工资在200到300之间,包括200和300。 IN z WHERE salary IN (200,300,400) 工资必须是200,300,400之中的值。 LIKE z 使用匹配符将一个值同其相似的值比较。 z 匹配符包括:- 代表一个字符。 % 代表多个字符。 z 如: WHERE salary LIKE ‘-00’ 查找‘00’作为后两位数的值。 WHERE salary LIKE ‘200%’ 查找‘200’作为前三位数的值。 EXISTS z 查询在指定表中是否存在一行符合某种条件的 数据。 z WHERE EXISTS (SELECT employee_id FROM employee_tbl WHERE employee_id = ‘3333’) UNIQUE z 在特定的表中搜索每一行是否唯一。 z WHERE UNIQUE (SELECT salary FROM employee_tbl WHERE employee_id = ‘3333’) z 测试满足条件的工资是否有重复数据。 ALL/ANY z 与某个数据集中所有数据 / 任何一个进行比较。 z WHERE salary > all (SELECT salary FROM employee_tbl WHERE city = ‘INDIAN’) AND/OR z AND连接的条件必须都满足。 z OR连接的条件至少满足一个。 z 如:SELECT * FROM products_tbl WHERE cost > 10 and cost < 30 z 如:SELECT * FROM products_tbl WHERE prod_id = ‘7725’ or prod_id = ‘2345’ 库函数 函数通常是列名或表达式相连系的命 令。 1、统计函数 2、字符函数 3、算术函数 1、统计函数 z 统计函数:用于提供统计信息,如:累加、总和、 平均值。 z 主要的统计函数: z COUNT:统计行数或不为NULL的列数。 z SUM:求和。 z MAX:求最大值。 z MIN:求最小值。 z AVG:求平均值。 COUNT 语法: COUNT[(*)|(DISTINCT|ALL|]COLUMN NAME) 注意:DISTINCT统计唯一的行; DISTINCT不能用于COUNT(*),只能用 于COUNT(column_name) 举例: SELECT COUNT(*) FROM EMPLOYEE_TBL 统计雇员表中所有行数 SELECT COUNT(EMP_ID) FROM EMPLOYEE_TBL 统计所有雇员身份证号 SELECT COUNT(DISTINCT SALARY) FROM EMPLOYEE_PAY_TBL 统计唯一行数 SUM:仅用于数字类型。 语法: SUM( [DISTINCT] COLUMN NAME) 举例: SELECT SUM (SALARY) FROM EMPLOYEE_PAY_TBL 计算工资总和 SELECT SUM (DISTINCT SALARY) FROM EMPLOYEE_PAY_TBL 计算没有重复工资总和 AVG:确定一组数据的平均值 语法: AVG([DISTINCT] COLUMN NAME) 举例: SELECT AVG(SALARY) FROM EMPLOYEE_PAY_TBL 计算工资的平均值 SELECT AVG(DISTINCT SALARY) FROM EMPLOYEE_PAY_TBL 计算唯一的工资平均值 MAX和MIN 语法: MAX( [DISTINCT] COLUMN NAME ) MIN ( [DISTINCT] COLUMN NAME ) 举例: SELECT MAX(SALARY) FROM EMPLOYEE_PAY_TBL 计算最高的工资 SELECT MAX(DISTINCT SALARY) FROM EMPLOYEE_PAY_TBL 计算最高的工资 例:表DTUDENT_TBL z 数学平均值 z 总成绩最高值 z 语文成绩最低值 z 数学成绩总和 z 表中的数据行数 s_id name maths comp total 9810021 王明 67 80 147 9820201 李春 56 72 128 9810089 赵芳 78 90 168 9820067 顾青 53 58 111 9810125 雷蕾 80 69 149 1. SELECT AVG(maths) FROM STUDENT_TBL 2. SELECT MAX(total) FROM STUDENT_TBL 3. SELECT MIN(comp) FROM STUDENT_TBL 4. SELECT SUM(maths) FROM STUDENT_TBL 5. SELECT COUNT(*) FROM STUDENT_TBL 2、字符函数 z UPPER(character string):将指定字符串 中的小写字母换成大写字母。 z LOWER (character string): 将指定字符 串中的大写字母换成小写字母。 z SUBSTRING (colunm name,startposition,length) 从指定字符串中取字符。 例: SELECT UPPER(CITY) FROM EMPLOYEE_TBL SELECT LOWER (CITY) FROM EMPLOYEE_TBL SELECT SUBSTRING(EMP_ID,1,3) FROM EMPLOYEE_TBL SELECT SUBSTRING(EMP_ID,5,3) FROM EMPLOYEE_TBL 3、算术函数 z ABS(绝对值)、SIN、COS、TAN、 EXP(指数)、SQRT(开方)、 POWER(幂) z 语法:函数名(表达式) z 例:SELECT SQRT(MATHS) * 10 FROM STUDENT_TBL 数据库更新语句数据库更新语句 z INSERT 给表填充数据 z UPDATE 更新已存在的数据 z DELETE 删除表中的数据 INSERT 给表填充数据 z 语法: z INSERT INTO table_name VALUES(value1,value2,…...) z 例: products_tbl:prod_id varchar(10) prod_desc varchar(25) cost number(6,2) 输入数据: INSERT INTO products_tbl VALUES(‘7725’,’LEATHER’,26.99) UPDATE 更新已存在的数据 z 语法: z UPDATE table_name SET column_name = ‘value’ [WHERE condition] z 例:UPDATE products_tbl SET prod_id = ‘1001’ WHERE prod_desc = ‘coat’ DELETE 删除表中的数据 z 语法: z DELETE FROM table_name [WHERE condition] z 例:DELETE FROM products_tbl WHERE prod_ID = ‘1001’ SQL数据定义语句SQL数据定义语句 z 数据定义功能包括:基表、视图和索引的定义。 一、创建与删除基表 二、创建与删除视图 三、索引的建立与删除 一、创建与删除基表 z 创建基表语法: z CREATE TABLE table_name (col_name col_properties constraint …… ) table_name 表名 col_name 列名 z 创建临时表: z CREATE TABLE # table_name (col_name col_properties constraint …… ) z 删除一张表就是删除一张表定义及其所有与 之相关连的数据、索引、触发器、约束和许 可。 z 语法: z DROP TABLE databasename.table_name z 例: z DROP TABLE pubs.dbo.authors2 z 修改表结构语法: z ALTER TABLE table_name [modify][col_name col_properties] [add][col_name col_properties] [drop][col_name col_properties] z 例:ALTER TABLE employee_tbl modify(emp_id varchar(10)) 例:创建一雇员表(编号/C,姓名/C,住所/C,电 话/N)。 z CREATE TABLE employee_tbl (emp_id char(9) not null, emp_name varchar(40) not null, emp_city varchar(15) not null, emp_phone number(10) null) 二、视 图 z 视图的定义 z 视图的查询 z 视图的更新 z 删除视图 视图的定义 z 什么是视图? 视图是存储在数据库中的预先定义好的查 询,具有表的外观,可以象表一样对其进 行存取,但不占据物理存储空间。 z 视图的特点: 视图的存在依赖于生成视图的表; 视图能用作数据库安全的一种形式; 利用视图维护综合数据。 创建视图 z 基本语法: CREATE VIEW view_name AS SELECT STATEMENT [WITH CHECK OPTION] 1、从单独的表中创建视图 2、从多表中创建视图 3、从视图中创建视图 1、从单独的表中创建视图 语法: CREATE VIEW view_name AS SELECT * |COL1[,COL2,…] FROM table_name WHERE expression 例: CREATE VIEW emp _ view AS SELECT emp_id,emp_name,phone FROM employee_tbl 2、从多表中创建视图 语法: CREATE VIEW VIEW_NAME AS SELECT * |COL1[,COL2,….] FROM TABLE_NAME1,TABLE_NAME2,… WHERE EXPRESSION 例: CREATE VIEW employee_summary AS SELECT e.emp_id,e.name,p.position,p.pay_rate FROM employee_tbl e,employee_pay_tbl p WHERE e.emp_id = p.emp_id 3、从视图中创建视图 z 语法:CREATE VIEW2 AS SELECT * FROM VIEW1 z 注意:不要创建层次太深的视图; z 例:由上例视图employee_summary CREAT subsummary AS SELECT * FROM employee_summary 视图的查询 z 对视图的查询与对基本表查询一样; z 系统执行视图查询时是把它转换成等价的对基 本表的查询。 z 例: SELECT emp_id, position FROM employee_summary WHERE pay_rate > 15 视图的更新 z 对视图的更新最终要转换成对基本表的更新。 z 视图更新条件: 1 、视图必须未涉及连接; 2 、视图必须不包含 GROUP BY 子句; 3 、视图不能包含任何组合函数; 4 、不能使用 DISTINCT 子句; 5 、 WHERE子句不能包含表的嵌套引用。 z 例: UPDATE employee summary SET pay_rate = 18 WHERE emp_id = 52431875 转换成: UPDATE employee _pay_tbl SET pay_rate = 18 WHERE emp_id = 52431875 删除视图 z 语法: DROP VIEW view_name z 例: DROP VIEW employee summary z 删除了视图,由此视图导出的其他视图也将自 动被删除 z 若导出此视图的基本表被删除了,则此视图也 将自动删除 视图的优点 z 视图对于数据库的重构造提供了一定程度的 逻辑独立性。 z 简化了用户观点。 z 视图使不同的用户能以不同的方式看待同一 数据。 z 视图对机密数据提供了自动的安全保护功能。 三、索引的建立与删除 z 语法: CREATE [UNIQUE] [CLUSTER] INDEX index_name ON table_name(clo_name 升/降序,…...) ASC:升序,DESC:降序 UNIQUE 每一个索引只对应唯一的数据记录; CLUSTER 聚簇索引,是指索引项的顺序与表中记录的物理顺序 一致的索引组织。 例:为学生-课程数据库中的student, couse, sc 3个表建立索引。其中student表按学号升序建立 唯一索引; couse表按课程号升序建立唯一索 引; sc 表按学号升序和课程号降序建唯一索引。 „CREATE UNIQUE INDEX stusno ON student(sno) „CREATE UNIQUE INDEX coucno ON couse(cno) „CREATE UNIQUE INDEX scno ON sc(sno ASC,cno DESC) 删除索引 语法: DROP INDEX 例:删除student表的stusname索引 DROP INDEX stusname 四、数据控制语句 z 授权 z 收回权限 数据控制包括:数据的安全性控制 完整性控制 并发控制和恢复 授权: 将对指定操作对象的指定操作权限授予指定的用户。 GRANT <权限>[,<权限>]… [ON<对象类型> <对象名>] TO <用户>[, <用户>]… [WITH GRANT OPTION]; 权限: SELECT,INSERT,UPDATE,DELETE;ALTER,INDEX;CREATE 对象类型:TABLE,DATABASE 对象:属性列,视图,基本表,数据库 例1:把查询student表权限授给用户U1. GRANT SELECT ON TABLE student TO U1; 例2:把查询sc表权限授给所有用户. GRANT SELECT ON TABLE SC TO PUBLIC; 例3:把对表SC的INSERT权限授给用户U2,并允许 他转授. GRANT INSERT ON TABLE SC TO U2 WITH GRANT OPTION; GRANT INSERT ON TABLE SC TO U3 REVOKE <权限>[,<权限>]… [ON<对象类型> <对象名>] FROM <用户>[, <用户>]…; 例4:把所有用户查询SC表权限收回. REVOKE SELECT ON TABLE SC FROM PUBLIC; 收回权限 例5:把用户U1修改student表的sno字段的权限收回. REVOKE UPDATE(sno) ON TABLE student FROM U1;
还剩66页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

laoma431

贡献于2013-09-18

下载需要 6 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf