




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 说明 复制表说明 复制表 只复制结构只复制结构 源表名 源表名 a a 新表名 新表名 b b SQL select into b from a where 11 说明 拷贝表说明 拷贝表 拷贝数据拷贝数据 源表名 源表名 a a 目标表名 目标表名 b b SQL insert into b a b c select d e f from b 说明 显示文章 提交人和最后回复时间说明 显示文章 提交人和最后回复时间 SQL select a title a username b adddate from table a select max adddate adddate from table where table title a title b 说明 外连接查询说明 外连接查询 表名表名 1 1 a a 表名表名 2 2 b b SQL select a a a b a c b c b d b f from a LEFT OUT JOIN b ON a a b c 说明 日程安排提前五分钟提醒说明 日程安排提前五分钟提醒 SQL select from 日程安排 where datediff minute f 开始时间 getdate 5 说明 两张关联表 删除主表中已经在副表中没有的信息说明 两张关联表 删除主表中已经在副表中没有的信息 SQL delete from info where not exists select from infobz where info infid infobz infid 说明 说明 SQL SELECT A NUM A NAME B UPD DATE B PREV UPD DATE FROM TABLE1 SELECT X NUM X UPD DATE Y UPD DATE PREV UPD DATE FROM SELECT NUM UPD DATE INBOUND QTY STOCK ONHAND FROM TABLE2 WHERE TO CHAR UPD DATE YYYY MM TO CHAR SYSDATE YYYY MM X SELECT NUM UPD DATE STOCK ONHAND FROM TABLE2 WHERE TO CHAR UPD DATE YYYY MM TO CHAR TO DATE TO CHAR SYSDATE YYYY MM 01 YYYY MM DD 1 YYYY MM Y WHERE X NUM Y NUM AND X INBOUND QTY NVL Y STOCK ONHAND 0 X STOCK ONHAND B WHERE A NUM B NUM 说明 说明 SQL select from studentinfo where not exists select from student where studentinfo id student id and 系名 称 统计某字段中所有不同的记录的个数统计某字段中所有不同的记录的个数 select nsrbm count nsrbm from t11 nsrjbqk where group by nsrbm having count nsrbm 1 SELECT FROM letters WHERE ID IN SELECT ID FROM letters As Tmp GROUP BY ID HAVING Count 1 ORDER BY ID 在 SQL Enterprise Manager 裡面查詢 Access 裡面的數據 SELECT FROM OPENROWSET msdasql dsn odbc 數據源名 trusted connection yes select from table SQL 中 isnull 函数的作用是将将两个参数字段中不为空的值取出 SELECT t1 a t1 b ISNULL t1 c t2 d FROM t1 t2 WHERE t1 a t2 a 为查询的结果编上序列号为查询的结果编上序列号 select IDENTITY int 1 1 as id a b c into 1 from table select from 1 或 SELECT rowno SELECT SUM row FROM SELECT 1 AS row FROM table AS a WHERE a autoid 1 and datepart dd logtime select deptno dname emps 2 from 3 select d deptno d dname rtrim e ename 4 lead e ename 1 over partition by d deptno 5 order by e ename 6 lead e ename 2 over partition by d deptno 7 order by e ename 8 lead e ename 3 over partition by d deptno 9 order by e ename 10 lead e ename 4 over partition by d deptno 11 order by e ename 12 lead e ename 5 over partition by d deptno 13 order by e ename emps 14 row number over partition by d deptno 15 order by e ename x 16 from emp e dept d 17 where d deptno e deptno 18 19 where x 1 20 DEPTNO DNAME EMPS 10 ACCOUNTING CLARK KING MILLER 20 RESEARCH ADAMS FORD JONES ROONEY SCOTT SMITH 30 SALES ALLEN BLAKE JAMES MARTIN TURNER WARD oracleoracle FAQFAQ Q1 Q1 怎样创建表 怎样创建表 A CREATE TABLE ROYAL MTABLE RM INT FIELD INTEGER RM STR FIELD VARCHAR2 64 CREATE TABLE ROYAL DTABLE RD INT FIELD INTEGER RD STR FIELD VARCHAR2 32 Q2 Q2 怎样删除表 怎样删除表 A DROP TABLE ROYAL DTABLE Q3 Q3 怎样创建视图 怎样创建视图 A CREATE OR REPLACE VIEW ROYAL MDVIEW AS SELECT T1 RM STR FIELD AS F1 T2 RD STR FIELD AS F2 FROM ROYAL MTABLE T1 ROYAL DTABLE T2 WHERE T1 RM INT FIELD T2 RM INT FIELD Q4 Q4 怎样删除视图 怎样删除视图 A DROP VIEW ROYAL MDVIEW Q5 Q5 怎样给表添加字段 怎样给表添加字段 A ALTER TABLE ROYAL DTABLE ADD RM INT FIELD INTEGER Q6 Q6 怎样删除表中某个字段 怎样删除表中某个字段 A ALTER TABLE ROYAL DTABLE DROP COLUMN RM INT FIELD 4 Q7 Q7 怎样给某个字段添加约束 怎样给某个字段添加约束 A ALTER TABLE ROYAL MTABLE MODIFY RM STR FIELD NOT NULL Q8 Q8 怎样去除某个字段上的约束 怎样去除某个字段上的约束 A ALTER TABLE ROYAL MTABLE MODIFY RM STR FIELD NULL Q9 Q9 怎样给表加上主键 怎样给表加上主键 A ALTER TABLE ROYAL MTABLE ADD CONSTRAINT PK ROYAL MTABLE PRIMARY KEY RM INT FIELD Q10 Q10 怎样删除表的主键 怎样删除表的主键 A ALTER TABLE ROYAL MTABLE DROP CONSTRAINT PK ROYAL MTABLE CASCADE Q11 Q11 怎样给表添加一个外键 怎样给表添加一个外键 A ALTER TABLE ROYAL DTABLE ADD CONSTRAINT FK ROYAL DTABLE FOREIGN KEY RM INT FIELD REFERENCES ROYAL MTABLE RM INT FIELD ON DELETE CASCADE Q12 Q12 怎样删除表的一个外键 怎样删除表的一个外键 A ALTER TABLE ROYAL DTABLE DROP CONSTRAINT FK ROYAL DTABLE Q13 Q13 怎样给字段加上怎样给字段加上 CHECKCHECK A ALTER TABLE ROYAL MTABLE ADD CONSTRAINT CHK RM STR FIELD CHECK RM STR FIELD IN Y N Q14 Q14 怎样去掉字段上的怎样去掉字段上的 CHECKCHECK A ALTER TABLE ROYAL MTABLE DROP CONSTRAINT CHK RM STR FIELD Q15 Q15 怎样给字段设置默认值 怎样给字段设置默认值 A ALTER TABLE ROYAL DTABLE MODIFY RD STR FIELD DEFAULT ROYAL Q16 Q16 怎样移去字段的默认值 怎样移去字段的默认值 A ALTER TABLE ROYAL DTABLE MODIFY RD STR FIELD DEFAULT NULL Q17 Q17 怎样创建索引 怎样创建索引 A CREATE UNIQUE INDEX IDX ROYAL DTABLE ON ROYAL DTABLE RM INT FIELD Q18 Q18 怎样删除索引 怎样删除索引 A DROP INDEX IDX ROYAL DTABLE Q19 Q19 怎样创建用户 怎样创建用户 A CREATE USER TESTUSER IDENTIFIED EXTERNALLY DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE DEFAULT Q20 Q20 怎样删除用户 怎样删除用户 A DROP USER TESTUSER CASCADE 21 21 怎样将对象权限 怎样将对象权限 objectobject privilegesprivileges 授予用户 授予用户 A GRANT SELECT INSERT UPDATE DELETE ALTER ON ROYAL MTABLE TO TESTUSER GRANT INSERT UPDATE DELETE ON ROYAL DTABLE TO TESTUSER GRANT SELECT ALTER ON ROYAL DTABLE TO TESTUSER WITH GRANT OPTION Q22 Q22 怎样从用户收回对象权限 怎样从用户收回对象权限 A REVOKE SELECT INSERT UPDATE DELETE ALTER ON ROYAL DTABLE FROM TESTUSER Q23 Q23 怎样将角色权限 怎样将角色权限 rolerole privilegesprivileges 授予用户 授予用户 A GRANT CONNECT TO TESTUSER WITH ADMIN OPTION GRANT DBA TO TESTUSER Q24 Q24 怎样从用户收回角色权限 怎样从用户收回角色权限 A REVOKE DBA FROM TESTUSER Q25 Q25 怎样将系统权限 怎样将系统权限 systemsystem privilegesprivileges 授予用户 授予用户 A GRANT ALTER ANY TABLE TO TESTUSER WITH ADMIN OPTION Q26 Q26 怎样从用户收回系统权限 怎样从用户收回系统权限 A REVOKE ALTER ANY TABLE FROM TESTUSER Q27 Q27 怎样创建序列 怎样创建序列 A CREATE SEQUENCE RM INT FIELD SEQ MINvalue 1 MAXvalue 999999999999999999999999999 START WITH 1 INCREMENT BY 1 CACHE 10 ORDER Q28 Q28 怎样删除序列 怎样删除序列 A DROP SEQUENCE RM INT FIELD SEQ 5 Q29 Q29 怎样获取序列值 怎样获取序列值 A SELECT RM INT FIELD SEQ NEXTVAL FROM DUAL Q30 Q30 怎样创建角色 怎样创建角色 A CREATE ROLE TESTROLE Q31 Q31 怎样删除角色 怎样删除角色 A DROP ROLE TESTROLE Q32 Q32 怎样将对象权限 怎样将对象权限 objectobject privilegesprivileges 授予角色 授予角色 A GRANT SELECT INSERT UPDATE DELETE ALTER ON ROYAL MTABLE TO TESTROLE Q33 Q33 怎样从角色收回对象权限 怎样从角色收回对象权限 A REVOKE SELECT INSERT UPDATE DELETE ALTER ON ROYAL MTABLE FROM TESTROLE Q34 Q34 怎样将角色权限 怎样将角色权限 rolerole privilegesprivileges 授予角色 授予角色 A GRANT DBA TO TESTROLE Q35 Q35 怎样从角色收回角色权限 怎样从角色收回角色权限 A REVOKE DBA FROM TESTROLE Q36 Q36 怎样将系统权限 怎样将系统权限 systemsystem privilegesprivileges 授予角色 授予角色 A GRANT CREATE TABLE TO TESTROLE Q37 Q37 怎样从角色收回系统权限 怎样从角色收回系统权限 A REVOKE CREATE TABLE FROM TESTROLE Q38 Q38 不等于条件有哪几种写法 茴香豆问题不等于条件有哪几种写法 茴香豆问题 A SELECT FROM ROYAL MTABLE WHERE RM STR FIELD Y SELECT FROM ROYAL MTABLE WHERE RM STR FIELD Y SELECT FROM ROYAL MTABLE WHERE RM STR FIELD Y Q39 likeQ39 like 子句的用法 子句的用法 A SELECT FROM ROYAL DTABLE WHERE RD STR FIELD LIKE Y SELECT FROM ROYAL DTABLE WHERE RD STR FIELD LIKE Y Q40 Q40 请举出一个请举出一个 wherewhere 子查询简单例子 子查询简单例子 A SELECT FROM ROYAL DTABLE WHERE RM INT FIELD IN SELECT RM INT FIELD FROM ROYAL MTABLE WHERE RM STR FIELD NOT IN Y B Q41 OracleQ41 Oracle 常用字符串处理函数有哪些 常用字符串处理函数有哪些 A 连接两个字符串 LENGTH 字符串长度 TRIM LTRIM RTRIM 截断串左 右 指定字符串 包括空串 LOWER UPPER 将字符串转换为小 大写 等等 例如 SELECT RM INT FIELD RM STR FIELD YES FROM ROYAL MTABLE Q42 OracleQ42 Oracle 支持哪些数字处理函数 支持哪些数字处理函数 A Oracle 支持所有常用数字函数 包括 但不限于 ABS COS EXP LN LOG MOD POWER ROUND SIN SINH SQRT TAN TRUNC AVG COUNT MAX MIN SUM GREATEST LEAST 等等 例如 SELECT GREATEST 3 4 5 4 FROM DUAL SELECT POWER 2 3 FROM DUAL Q43 Q43 怎样取得数据库服务器当前日期 时间 怎样取得数据库服务器当前日期 时间 A SELECT SYSDATE FROM DUAL SELECT TO CHAR SYSDATE YYYY MM DD HH MI SS FROM DUAL Q44 Q44 怎样将字符串转换为日期 时间格式 怎样将字符串转换为日期 时间格式 A SELECT TO DATE 2002 11 27 YYYY MM DD FROM DUAL SELECT TO DATE 2002 11 27 09 28 55 YYYY MM DD HH MI SS FROM DUAL Q45 Q45 常用日期函数有哪些 常用日期函数有哪些 A NEXT DAY LAST DAY ADD MONTHS MONTHS BETWEEN 等等 例如 SELECT LAST DAY SYSDATE FROM DUAL Q46 Q46 能给出一个能给出一个 DECODEDECODE 函数用法的例子吗 函数用法的例子吗 A DECODE 函数的格式为 DECODE value if1 then1 if2 then2 else 假设表 ROYAL DTABLE 中有如下数据 RD INT FIELD RD STR FIELD RM INT FIELD 1 royal 1 2 bill 2 3 joy 1 6 请观察如下 SQL 语句输出结果 SELECT DECODE RD STR FIELD royal royaltest bill billgates RD STR FIELD AS DC FROM ROYAL DTABLE DC royaltest billgates joy Q47 Q47 能给出一个能给出一个 groupgroup byby havinghaving 和和 orderorder byby 用法的例子吗 用法的例子吗 A SQL SELECT FROM ROYAL MTABLE RM INT FIELD RM STR FIELD 1 Y 2 N 3 Y SQL SELECT FROM ROYAL DTABLE RD INT FIELD RD STR FIELD RM INT FIELD 1 royal 1 2 bill 2 3 joy 1 SQL SELECT RM INT FIELD SUM RD INT FIELD FROM ROYAL DTABLE GROUP BY RM INT FIELD HAVING SUM RD INT FIELD 2 ORDER BY SUM RD INT FIELD ASC RM INT FIELD SUM RD INT FIELD 2 2 1 4 Q48 OracleQ48 Oracle 有哪些常用数据字典 有哪些常用数据字典 A USER TABLES TABS USER TAB COLUMNS COLS USER VIEWS USER SEQUENCES SEQ USER CONSTRAINTS USER CONS COLUMNS USER TAB COMMENTS USER COL COMMENTS USER INDEXES IND USER IND COLUMNS USER USERS DBA USERS ALL USERS USER TABLESPACES 等等 例如 SELECT FROM USER CONSTRAINTS WHERE CONSTRAINT NAME FK ROYAL DTABLE Q49 Q49 怎样将日期 时间插入怎样将日期 时间插入 datedate 型字段中 型字段中 A INSERT INTO ROYAL MTABLE RM INT FIELD RM STR FIELD RM DATE FIELD valueS 9 Y TO DATE 2002 05 23 YYYY MM DD INSERT INTO ROYAL MTABLE RM INT FIELD RM STR FIELD RM DATE FIELD valueS 10 Y TO DATE 2002 10 10 8 23 33 YYYY MM DD HH MI SS Q50 Q50 能介绍一下能介绍一下 connectconnect byby 的用法吗 的用法吗 A connect by 子句提供了遍历 树 的手段 假设有这样一个表 CREATE TABLE ROYAL TREETABLE ID INTEGER PARENT ID INTEGER NAME VARCHAR2 32 表中有如下数据 ID PARENT ID NAME 2 1 AAA 3 1 BBB 4 2 CCC 5 2 DDD 6 4 EEE 8 7 GGG 假如我们现在需要从 NAME EEE 的记录开始 向上查找所有有父子关系的记录 可执行如下 SQL 语句 SELECT FROM ROYAL TREETABLE START WITH NAME EEE CONNECT BY ID PRIOR PARENT ID ID PARENT ID NAME 7 6 4 EEE 4 2 CCC 2 1 AAA 还有好象 01cn 中的 函数函数 数学函数数学函数 函数 Microsoft SQLServer Oracle 绝对值 ABS ABS X 大于或等于 x 的最小正整数 CEILING CEIL x 小于或等于 x 的最大正整数 FLOOR FLOOR X X 除于 y 的余数 USE MODULO OPERATOR MOD X Y 四舍五入 ROUND ROUND x y Round 1 56 得到 2 Round 1 56 1 得到 1 6 符号函数 SIGN SIGN 如果为 NULL 则转换数字 ISNULL NVL n1 n2 如 n1 为空 得到 n2 否则得到 n1 字符函数字符函数 函数 SQlServer Oracle 字串连接 exp exp Exp1 Exp2 把字符转换为小写 LOWER LOWER 把字符转换为大写 UPPER UPPER 清除开始的空白 LTRIM LTRIM 清除尾部的空白 RTRIM RTRIM 多次重复字符串 REPLICATE RPAD RPAD a 10 10 个 a 重复空格的字串 SPACE RPAD 10 10 个空格 从数字数据转换为字符数据 STR TO CHAR num 左截字符串 Left str1 5 Substr str1 1 5 右截字符串 Right str1 5 Substr str1 5 5 子串 SUBSTRING SUBSTR Substr fdas 1 3 得到 fda 字符串中指定表达式的起始位置 CharIndex exp1 exp2 start location CHARINDEX wonderful on on 5 Instr exp1 exp2 start location Instr wonderful on on 5 替换字符 STUFF REPLACE Replace this and that th b 得到 bis and bat 字符串长度 LEN LENGTH 如果为 NULL 则转换字串 ISNULL NVL exp1 exp2 如果 exp1 为空 得到 exp2 否则得到 exp1 日期函数日期函数 函数 SQLServer Oracle 两个日期之间的天数 DATEDIFF day startdate enddate EndDate StartDate 两个日期之间的月数 DATEDIFF month startdate enddate MONTHS BETWEEN enddate startdate 两个日期之间的年数 DATEDIFF year startdate enddate MONTHS BETWEEN startdate enddate 12 两个日期之间的小时数 DATEDIFF hour startdate enddate EndDate StartDate 24 两个日期之间的分钟数 DATEDIFF minute startdate enddate EndDate StartDate 24 60 日期相加 DATEADD date column value or ADD MONTHS d x 得到日期 d 加上 x 个月的日期 日期加上 n 天 DATEADD day n date Date n 日期加上 n 月 DATEADD month n date ADD MONTHS d x 8 日期中的年 Year date To char date YYYY 日期中的月 Month date To char date MM 日期中的日 Day date To char date DD 当前日期和时间 GETDATE SYSDATE 转换日期成字符串 DATENAME TO CHAR d format 字符串转换为日期 CONVERT TO DATE str format 如果为 NULL 则转换日期 ISNULL NVL d1 d2 日期 d1 为空时得到 d2 否则得到 d1 其他函数其他函数 函数 Oracle SQLServer 数字转换为字符 TO CHAR num format CONVERT 字符转换为数字 TO NUMBER str format CONVERT 日期转换为字符 TO CHAR d format CONVERT 字符转换为日期 TO DATE str format CONVERT 得到某一位字符 Convert bit Column SubStr Column sPos 1 分支语句 Decode type popular comp 0 mod cook 1 business 2 3 CASE type WHEN popular comp THEN 0 WHEN mod cook THEN 1 WHEN business THEN 2 ELSE 3 END SQL 语言 一 一 SELECTSELECT statementsstatements 语句语句 Oracle 和 Microsoft SQL Server 用的 SELECT 语句的语法是类似的 Oracle Microsoft SQ SELECT optimizer hints ALL DISTINCT select list FROM table name view name select statement WHERE clause GROUP BY group by expression HAVING search condition START WITH CONNECT BY UNION UNION ALL INTERSECT MINUS SELECT ORDER BY clause FOR UPDATE SELECT select list INTO new table FROM table source WHERE search condition GROUP BY ALL group by expression n WITH CUBE ROLLUP HAVING search condition ORDER BY order expression ASC DESC In addition UNION Operator COMPUTE Clause FOR BROWSE Clause OPTION Clause SQL Server 不支持面向 Oracle 的基于开销的优化器暗示 必须把这些暗示清除掉 建议使用 SQL Server 的基于开销 的优化器 欲了解详细信息 请参阅本章后面的 调试 SQL 语句 部分 SQL Server 不支持 Oracle 的 START WITH CONNECT BY 子句 在 SQL Server 中 你可以用创建一个执行同样任务的 存储过程来代替 SQL Server 不支持 Oracle 的 INTERSECT 和 MINUS 集合 SQL Server 的 EXISTS 和 NOT EXISTS 子句可以完成同样的任 9 务 下面的例子使用 INTERSECT 操作符来为所有有学生的班级找到课程代码和课程名称 注意 EXISTS 操作符是怎样代替 INTERSECT 操作符的 两者返回的数据是一样的 Oracle Microsoft SQ SELECT CCODE CNAME FROM DEPT ADMIN CLASS INTERSECT SELECT C CCODE C CNAME FROM STUDENT ADMIN GRADE G DEPT ADMIN CLASS C WHERE C CCODE G CCODE SELECT CCODE CNAME FROM DEPT ADMIN CLASS C WHERE EXISTS SELECT X FROM STUDENT ADMIN GRADE G WHERE C CCODE G CCODE 下例使用 MINUS 操作符来找出那些没有学生的班级 Oracle Microsoft SQ SELECT CCODE CNAME FROM DEPT ADMIN CLASS MINUS SELECT C CCODE C CNAME FROM STUDENT ADMIN GRADE G DEPT ADMIN CLASS C WHERE C CCODE G CCODE SELECT CCODE CNAME FROM DEPT ADMIN CLASSC WHERE NOT EXISTS SELECT X FROM STUDENT ADMIN GRADE G WHERE C CCODE G CCODE INSERTINSERT 语句语句 Oracle 和 Microsoft SQL Server 用的 INSERT 语句的语法是类似的 Oracle Microsoft SQ INSERT INTO table name view name select statement column list values list select statement INSERT INTO table name AS table alias WITH n view name AS table alias rowset function limited column list VALUES DEFAULT NULL expression n derived table execute statement DEFAULT VALUES Transact SQL 语言支持插入表和视图 但是不支持 SELECT 语句中的 INSERT 操作 如果你的 Oracle 程序这么做了 则必须修改 Oracle Microsoft SQl INSERT INTO SELECT SSN CCODE GRADE FROM GRADE 10 VALUES 111111111 1111 NULL INSERT INTO GRADE SSN CCODE GRADE VALUES 111111111 1111 NULL Transact SQL 的 values list 参数提供了 SQL 92 标准的关键字 DEFAULT 但这个在 Oracle 中是不支持的 当执行插 入操作的时候 这个关键字给出了要用到的列的缺省值 如果给定的列没有缺省值 则插入一个 NULL 如果该列不允许 NULL 则返回一个错误消息 如果该列是作为一个时间片数据类型定义的 则插入下一个连续值 关键字 DEFAULT 不能用于标识列 要产生下一个连续值 则有 IDENTITY 属性的列一定不能列入 column list 或者 values clause 你不一定非要用 DEFAUL 关键字来获得一列的缺省值 在 Oracle 中 如果该列没有被 column list 引用并 且它有一个缺省值 则缺省值将放入列中 这是执行移植时最兼容的方法 一个有用的 Transact SQL 选项 EXECute procedure name 是执行一个过程并且用管道把它的输出值输出到一个目标 表或者视图 Oracle 不允许你这样做 UPDATEUPDATE 语句语句 因为 Transact SQL 支持 Oracle 的 UPDATE 绝大多数语法 所以只需要很小的修改 Oracle Microsoft SQ UPDATE table name view name select statement SET column name s constant value expression select statement column list variable list where statement UPDATE table name AS table alias WITH n view name AS table alias rowset function limited SET column name expression DEFAULT NULL variable expression variable column expression n FROM n WHERE WHERE CURRENT OF GLOBAL cursor name cursor variable name OPTION n Transact SQL 的 UPDATE 语句不支持依赖 SELECT 语句的更新操作 如果你的 Oracle 程序这样做了 你可以把 SELECT 语句变成一个视图 然后在 SQL Server 的 UPDATE 语句中使用这个视图名字 请参看前面 INSERT 语句中的例子 Oracle 的 UPDATE 命令只能使用一个 PL SQL 块中的程序变量 Transact SQL 语言不要求在使用变量时使用块 Oracle Microsoft SQ DECLARE VAR1 NUMBER 10 2 BEGIN VAR1 2500 UPDATE STUDENT ADMIN STUDENT SET TUITION TOTAL VAR1 END DECLARE VAR1 NUMERIC 10 2 SELECT VAR1 2500 UPDATE STUDENT ADMIN STUDENT SET TUITION TOTAL VAR1 在 SQL Server 中 关键字 DEFAULT 可以用来把一列设置为它的缺省值 你不能用 Oracle 的 UPDATE 命令来设置一列为 它的缺省值 Transact SQL 和 Oracle SQL 都支持在一个 UPDATE 语句中使用子查询 但是 Transact SQL 的 FROM 子句可以用来创建 11 一个基于节点的 UPDATE 这个能力是你的 UPDATE 语法更加可读并且在某种意义上提高了性能 Oracle Microsoft SQ UPDATEUPDATE STUDENT ADMIN STUDENT S SET TUITION TOTAL 1500 WHERE SSN IN SELECT SSN FROM GRADE G WHERE G SSN S SSN AND G CCODE 1234 Subquery UPDATE STUDENT ADMIN STUDENT S SET TUITION TOTAL 1500 WHERE SSN IN SELECT SSN FROM GRADE G WHERE G SSN S SSN AND G CCODE 1234 FROM clause UPDATE STUDENT ADMIN STUDENT S SET TUITION TOTAL 1500 FROM GRADE G WHERE S SSN G SSN AND G CCODE 1234 DELETEDELETE 语句语句 在大多数情况下 你不需要修改 DELETE 语句 但是如果你在 Oracle 中执行依赖 SELECT 语句的删除操作 你就必须进 行修改 因为在 Transact SQL 不支持这种功能 Transact SQL 支持在 WHERE 子句中使用子查询 FROM 子句也一样 后者可以产生更有效的语句 请参看前面在 UPDATE 语句 中的例子 Oracle Microsoft SQ DELETE FROM table name view name select statement WHERE clause DELETE FROM table name AS table alias WITH n view name AS table alias rowset function limited FROM n WHERE CURRENT OF GLOBAL cursor name cursor variable name OPTION n TRUNCATE TABLE 语句 在 Oracle 和 Microsoft SQL Server 中 TRUNCATE TABLE 语句的语法是相似的 TRUNCATE TABLE 语句用来把一个表中 的所有行清除掉 并且这个操作是不能后滚的 该表的结构和索引仍然存在 DELETE 触发器不会被执行 如果该表被一个 FOREIGN KEY 引用 则该表不能被砍掉 12 Oracle Microsoft SQ TRUNCATE TABLE table name DROP REUSE STORAGE TRUNCATE TABLE table name 在 SQL Server 中 这个语句只能由表的所有者给出 在 Oracle 中 只有当你是表的所有者或者有 DELETE TABLE 系统 特权时才能使用该语句 Oracle 的 TRUNCATE TABLE 命令可以随意的释放被表中的行占据的存储空间 SQL Server 的 TRUNCATE TABLE 则总是 回收被表中的数据和与之关联的索引占据的空间 在 identity 和 timestamp 列中操作数据 Oracle 序列是一种和任何给定的表或者列都不直接相关的数据库对象 一列和一个序列的关系是在应用程序中实现的 方法是把一个序列的值分配给一个列 因此在同序列一起工作的时候 Oracle 并没有强化任何规则 但是在 Microsoft SQL Server 的标识列中 值是不能被更新的并且也不能使用 DEFAULT 关键字 缺省情况下 数据不能直接插入到一个标识列中 标识列为新插入表的每一行自动产生一个唯一的 顺序的数字 这 个缺省设置可以用下面的 SET 语句覆盖 SETSET IDENTITY INSERTIDENTITY INSERT table nametable name ONON 当 IDENTITY INSERT 设置为 ON 时 用户就可以在新行的标识列中插入任何值 为了防止输入重复的值 必须在该列上 创建一个唯一的索引 这个语句的目的是允许用户为一行重新创建一个偶然被删除的值 IDENTITY 可以用来获取最后一 个标识值 TRUNCATE TABLE 语句把一个标识列重新设置为它原来的 SEED 值 如果你不想为一列重新设置标识值 可以用不带 WHERE 子句的 DELETE 子句来代替 TRUNCATE TABLE 语句 你必须估计这会给你的 Oracle 移植带来什么样的影响 因为 ORACLE SEQUENCES 不会跟着 TRUNCATE TABLE 命令重新设置 对时间信息 timestamp 列 你只能执行插入或者删除操作 如果你试图更新一个时间信息列 你将收到这样的错误 消息 Msg 272 Level 16 State 1 Can t update a TIMESTAMP column 锁定被请求的行锁定被请求的行 Oracle 用 FOR UPDATE 子句来锁定在 SELECT 命令中指定的行 在 Microsoft SQL Server 中 你不需要使用它的等价 子句 因为这是一个缺省行为 行合计和计算子句行合计和计算子句 SQL Server 的 COMPUTE 子句用来生成行合计函数 SUM AVG MIN MAX 以及 COUNT 这些函数看起来好象是查询结 果的附加行 这允许你看到一组结果的详情和汇总 你可以为一个子群 subgroups 计算汇总值 还可以为同一组计算更 多的合计函数 Oracle 的 SELECT 命令语法不支持 COMPUTE 子句 但是 SQL Server 的 COMPUTE 子句就像在 Oracle 的 SQL Plus 查询 工具中能找到的 COMPUTE 命令一样的工作 连接子句 连接子句 JoinJoin clausesclauses Microsoft SQL Server 7 0 允许在一个连接子句中连接多达 256 个表 包括临时的和永久的表 在 Oracle 中 没有 连接限制 在 Oracle 中使用外部连接时 外部连接操作符 典型的放置在子列 foreign key 的后面 依靠少数几个唯 一值来识别该列 除非子列允许空值 否则总是这样的 如果子列允许空值 则 被放置在父列 PRIMARY KEY 或者 UNIQUE 约束 上 你不能把 同时放在等号 的两边 用 SQL Server 你可以使用 和 外部连接操作符 用来标识一个有很多唯一值的列 如果子列不允许 空值 则 被放在等号的父列一边 在 Oracle 中 的放置正好相反 不能把 同时放在等号的两边 和 被认为是传统的连接操作符 SQL Server 也支持下面列出的 SQL 92 标准的连接操作符 建议你使用 这种语法 SQL 92 标准语法比 操作符更强大 限制更小 JoinJoin 操作操作 描述描述 CROSS JOIN 这是两个表的交叉产物 如果在一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智联财务面试题库精 编:金融行业面试常见问题及答案
- 小学数学原理课程讲解
- 店铺运营面试实战题目及答案精 编
- 国家公务员职业趋势研究:边境地区面试题精 选
- 运输执法实施方案(3篇)
- 药店中药提升措施方案(3篇)
- 外墙放飞施工方案(3篇)
- 工地防火行动方案(3篇)
- 重要信息安全审计方案(3篇)
- 改造养老用房方案(3篇)
- 2025年燃气电厂笔试题库及答案
- 2025年科技咨询师考试题库
- 四川省凉山州2024-2025学年高一下册期末统一检测数学检测试卷
- 2025年道路运输两类人员安全员考试考核试题库答案
- 2024-2025学年人教版七年级数学(下)期中试卷(考试范围:第7-9章)(含解析)
- 中小学班主任与心理健康教育教师专题培训课件
- 汉密尔顿焦虑量表HAMA(14项打印版)
- 渠道维护工试题
- 六级美术《唱大戏》课件
- 高中物理巩固练习牛顿第二定律基础
- DB21T 3515-2021 灌注式复合混凝土路面设计与施工技术规范
评论
0/150
提交评论