版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ORACLE数据库教程他可以不知道,但是绝对不能不懂-毁人不倦语录2007年5月SQL根底知识篇SQL-001.简介SQLStructured Query Language构造化查询言语是IBM公司San Jose实验室为System R而设计的查询言语,后被国际规范化组织ISO同意作为关系数据库言语的国际规范。SQL目前遵照的是1992年规范,即SQL-92。各数据库厂家对SQL-92规范均有扩展,扩展部分不能完全保证数据库之间的兼容性。我的热情会灼伤一些人,但我是无心的-毁人不倦语录.简介SQL可以分为: 根底篇只引见前两种DML:数据操作言语Data Manipulation Langu
2、age: select, insert, update, delete, (其他:truncate) DDL:数据定义言语 Data Definition Languages: create, drop , alter,(其他:rename)DCL数据控制言语:grant、revoke、set role 事务控制:commit、rollback、savepoint其他:lock table、set constraint(s)、set transaction审计控制:audit、noaudit系统控制:alter system 会话控制:alter session 其他语句:comment添加注
3、释、explain plan、analyze、validate、call 假设我的话没有错,一定是他听错了-毁人不倦语录.DDL数据定义言语CREATE(建立)ALTER(修正)DROP(删除)无知者无畏,无畏者不一定无知-毁人不倦语录.言语描画商定 :表示可选项 | :表示选择项CREATE:粗体表示关键字或必输项Table_name:斜体表示用户输入项创建 :蓝色表示阐明假设1+12,我置信那说的是团队的力量-毁人不倦语录.DDL数据定义言语CREATE-创建用户CREATE USER user_name IDENTIFIED BY password DEFAULT TABLESPACE
4、tablespace_name TEMPORARY TABLESPACE tablespace_name;创建user_name用户,密码为password,运用tablespace_name表空间,假设没有指定表空间,默许表空间为system表空间。Oracle10g有用户默许表空间设置。建议在创建用户时一定要指名表空间。先有鸡,还是先有蛋,这么重要的问题还是留给鸡去考证吧-毁人不倦语录.DDL数据定义言语CREATE-创建数据表CREATE TABLE table_name(Column1 datatype defaultnot null primary key,constraint ke
5、y_name primary key(column_list) using index tablespace tablespace_name)tablespace tablespace_name;Datatype 是数据类型:varchar2(x), number(x,x), date, integer等。Not null非空限制,假设不写表示可为空。Primary key主键,可以紧跟在字段后,或在最后运用constraint。未指名表空间,数据表建立在用户默许的表空间中。笔只留下了痕迹,人用笔留下了文化-毁人不倦语录.DDL数据定义言语CREATE-创建索引CREATE UNIQUE IN
6、DEX index_name ON table_name(column_list)tablespace tablespace_name;在table_name表上按照column_list建立索引,索引名为index_name,索引保管在tablespace_name表空间中。UNIQUE:独一性索引。-毁人不倦语录他可以不听,但是我一定要说.DDL数据定义言语ALTER-修正表ALTER TABLE table_name RENAME TO new_table_name;将table_name表名修正为new_table_name。ALTER TABLE table_name ADD(col
7、umn1 datatype default not null,column2 datatype default not null, . );在table_name表中添加column1,column2.字段,追加到字段最后。ALTER TABLE table_name MODIFY(column1 datatype default not null|nullable,column2 datatype default not null|nullable, . 修正table_name表字段属性,长度或精度不能小于原长度或精度。ALTER TABLE table_name DROP COLUMN
8、column_name;删除table_name表中的column_name字段。ALTER TABLE table_name RENAME COLUMN old_name TO new_name;修正table_name表的old_name字段名为new_name。ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(column_list);建立table_name表的主键,主键名pk_name,主键字段column_list。ALTER TABLE table_name DROP CONSTRAINT pk_name;删除ta
9、ble_name表的pk_name主键。一个表只能有一个主键-毁人不倦语录不说了,再说就该吐了。补充一点:站着进,扶着出也许是侃爷的最高境界吧.DDL数据定义言语DROP -删除DROP TABLE table_name;删除table_name表。DROP INDEX index_name;删除index_name索引。删除主键强迫限制的一种,运用ALTER TABLE table_name DROP CONSTRAINT pk_name;-毁人不倦猜测数据库和水库之间不能够没有区别.DML小结从ALTER和CREATE及DROP语法数量再一次证明需求是易变的。假设添加表字段,并要求字段的陈
10、列位置,可以运用:CREATE TABLE temp_table_name AS SELECT * FROM table_name;DROP TABLE table_name;CREATE TABLE table_name(column);INSERT INTO table_name VALUES(column_list) (SELECT column_list1 FROM temp_table_name);DROP TABLE table_name;需求留意的是,删除表后,表中的索引也被删除,所以,在执行上述操作前要保管好表的索引脚本。这里没有写DROP DATABASE的语法,假设大家想要
11、尝试删除数据库的话,最好在专家的指点下进展!人间本无对错,由于计算机才有了对与错-毁人不倦语录.DDL数据操作言语SELECT(查询)INSERT(插入)UPDATE(更新)DELETE(删除)假设老天能再给我一次时机,我一定做甲方-毁人不倦语录.DDL数据操作言语SELECT-查询SELECT ALL | DISTINCT ON ( expression , . ) * | expression AS output_name , . INTO TEMPORARY | TEMP TABLE new_table FROM from_item , . WHERE condition GROUP B
12、Y expression , . HAVING condition , . UNION | INTERSECT | EXCEPT ALL select ORDER BY expression ASC | DESC | USING operator , . FOR UPDATE OF class_name , . LIMIT count | ALL OFFSET | , start 后续查询范例均以oracle中的SCOTT/TIGER用户表为例假设失眠了,就看看上面的语法吧-毁人不倦语录.DDL数据操作言语SCOTT/TIGER表引见DEPT部门定义表,DEPTNO是主键EMP职工表,EMPN
13、O主键,DEPTNO外键关联DEPT其他表没有数据或没有关系,不在这里引见将复杂问题简单化是涵养,将简单问题复杂化是艺术,综合起来叫艺术涵养-毁人不倦语录.DDL数据操作言语SELECT-单表查询查询表中一切字段和一切记录,select后跟* 表示一切字段SELECT * FROM DEPT;查询指定字段,在select后跟查询的字段名列表,字段间用,隔开SELECT DEPTNO, DNAME FROM DEPT;条件查询,FROM后面运用WHERE,在WHERE中可以运用=, , ,=, 10GROUP BY DEPTNO, DNAMEHAVING COUNT(*) 0ORDER BY D
14、EPTNO DESC; -ORDER BY 是对前往的结果进展排序,所以必需放在最后一句。SELECT DEPTNO, DNAMEFROM SCOTT.DEPTWHERE DEPTNO 10GROUP BY DEPTNO, DNAMEHAVING COUNT(*) 0ORDER BY 1 DESC; -结果同第一个查询,字段位置从1开场。我是来做工程的,不是来发明奇观的-毁人不倦语录.DDL数据操作言语SELECT-FOR UPDATE锁等待查询。当查询结果中有被锁定记录时等待解锁,当记录被解锁后前往结果集,并锁定前往的记录。假设FOR UPDATE后跟NOWAIT,遇到锁后不等待,前往错误。
15、ORACLE运用记录级锁定,当事物被提交或回滚后锁定被释放。死锁问题当两个事物以不同的顺序同时更新多个表时就会发生死锁对牛,处理死锁的途径是手工杀掉死锁的进程或者重新启动数据库。因此,在运用事物更新多表数据时一定要小心,运用面向对象的方法封装数据操作可以在很大程度上处理死锁问题。没有经过严厉测试的软件开发进度报告不看也罢-毁人不倦语录.DDL数据操作言语SELECT-子查询查询语句可以嵌套,任何产生数值的地方都可以运用子查询。在查询条件中运用子查询时,当子查询前往多个结果时只能运用IN。查询顺序是先执行被依赖的底层查询,然后一层层向上查。子查询只被执行一次。查询平均工资最低的部门情况SELEC
16、T DEPTNO, AVG(SAL)FROM SCOTT.EMPGROUP BY DEPTNOHAVING AVG(SAL) = (SELECT MIN(AVG(SAL) FROM SCOTT.EMPGROUP BY DEPTNO);-子查询先查询出最低的部门平均工资,然后查询部门最低平均工资等于子查询工资的部门就是喜欢编程也不能为了编程而放弃和用户的功能确认,假设他把用户对程序的恣意修正提升为对他本身价值的否认,他还不先确认吗?-毁人不倦语录.DDL数据操作言语SELECT-子查询在FROM中运用子查询,子查询在这里相对与VIEWSELECT D.DEPTNO, D.DNAME, S.AVG
17、_SAL, S.SUM_SAL, S.NUMFROM SCOTT.DEPT D, (SELECT DEPTNO, AVG(SAL) AS AVG_SAL, SUM(SAL) AS SUM_SAL, COUNT(*) AS NUMFROM SCOTT.EMPGROUP BY DEPTNO) SWHERE D.DEPTNO = S.DEPTNO;在WHERE中运用子查询,例子不好,应该直接写表关联,这里只是为了阐明语法。SELECT * FROM SCOTT.EMP WHERE DEPTNO IN (SELECT DEPTNO FROM SCOTT.DEPT WHERE DEPTNO = 20);
18、驴怎样了?人家采用的可是软件工程中的螺旋法那么-毁人不倦语录.DDL数据操作言语SELECT-子查询运用EXISTS(NOT EXISTS)交换IN(NOT IN)IN(NOT IN)在执行数据库操作时性能非常低下,应该运用EXISTS(NOT EXISTS)交换,特别是NOT IN子句将执行一个内部的排序和合并;EXISTS子查询运用主表的字段限制查询数据SELECT * FROM SCOTT.EMP E WHERE EXISTS (SELECT * FROM SCOTT.DEPT WHERE DEPT.DEPTNO = E.DEPTNO AND DEPTNO = 20);-由于EXISTS
19、可以看到外表,所以,假设表名反复,运用表别名区分,在子查询中一定写清楚和外表的关联关系,另外,子查询写SELECT * 是对的,不用写字段名。多做一点,早知道一点-毁人不倦语录.DDL数据操作言语UPDATE修正用来更新数据表中的数据 UPDATE table_nameSET column_name = new_value, WHERE condition;更新DEPT表,将20号部门称号修正为销售部,地址修正为北京UPDATE DEPT SET DNAME = 销售部, LOC = 北京WHERE DEPTNO = 20;子查询也可在UPDATE中运用,将职工指点是KING的人员薪资添加10
20、0元UPDATE SCOTT.EMP SET SAL = SAL + 100WHERE EMPNO IN (SELECT E.EMPNO FROM SCOTT.EMP E, SCOTT.EMP G WHERE E.MGR = G.EMPNO AND G.ENAME = KING); UPDATE SCOTT.EMP SET SAL = SAL + 100WHERE EXISTS (SELECT * FROM SCOTT.EMP E, SCOTT.EMP G WHERE E.MGR = G.EMPNO AND E.EMPNO = EMP.EMPNO AND G.ENAME = KING); 金保
21、工程是“阳光工程,所以我才阳光-毁人不倦语录.DDL数据操作言语INSERT-插入语法:INSERT INTO table_name (column,.) VALUES (expression ,) | SELECT query当表字段和插入值一样时,可以省略字段列表INSERT INTO SCOTT.BONUS VALUES(TURNER, SALESMAN, 200, 40);当只插入部分字段时,必需列举字段,未赋值字段运用默许值或为空INSERT INTO SCOTT.BONUS(ENAME, JOB, SAL) VALUES(CLARK, MANAGER, 100);也可以运用查询给表
22、插入数据INSERT INTO SCOTT.BONUS(ENAME, JOB, SAL) SELECT ENAME, JOB, SAL FROM SCOTT.EMP WHERE MGR = 7698;实际上都是问题,做起来没有问题-毁人不倦语录.DDL数据操作言语DELETE-删除语法:DELETE FROM table_nameWHERE condition;删除BONUS中ENAME为CLARK的记录DELETE FROM SCOTT.BONUS WHERE ENAME = CLARK删除反复记录,ROWID是记录的物理位置,一经确定永不改动DELETE FROM SCOTT.BONUS
23、B WHERE ROWID 1);-删除ENAME反复记录本人先擦块玻璃再交代给他人擦,安排任务同理-毁人不倦语录.序列号创建CREATE SEQUENCE name INCREMENT BY n START WITH n MAXVALUE n | NOMAXVALUE MINVALUE n | NOMINVALUE CYCLE | NOCYCLE CACHE n | NOCACHE;阐明:INCREMENT BY n 一次增长n 个数字START WITH n 初始值NOMAXVALUE 缺省值10E+27NOMINVALUE 缺省值1NOCYCLE 不循环, 常用于独一关键字CACHE n
24、 在内存里缓存n个序列,出错回退时会丧失创建从1开场,不缓存的EMP_EMPNO序列。CREATE SEQUENCE EMP_EMPNO START WITH 1 NOCACHE;修正ALTER SEQUENCE name INCREMENT BY n MAXVALUE n | NOMAXVALUE MINVALUE n | NOMINVALUE CYCLE | NOCYCLE CACHE n | NOCACHE;-起始值不能改动,假设要改动序列的起始值, 先删除, 再新建。删除DROP SEQUENCE name;DROP SEQUENCE EMP_EMPNO;.序列号运用NEXTVAL下一
25、个序列号值CURRVAL当前序列号值假设EMP_EMPNO是一个序列号,可以用下面SQL取序列值-去序列的当前值SELECT EMP_EMPNO.CURRVAL FROM DUAL;-去序列的下一个值SELECT EMP_EMPNO.NEXTVAL FROM DUAL;-运用序列插入数据INSERT INTO EMP(EMPNO, ENAME,) VALUES(EMP_EMPNO.NEXTVAL, JONE,);不能用序列号的nextval和currval的地方视图查询、distinct查询、有group by,having,order by的查询、有子查询的查询、表里的缺省值.注释/* 注释
26、内容 */-注释内容-SELECT * DELETEFROM EMPWHERE DEPTNO = 20;提示:删除数据前最好先查询一下。可以先写SELECT *,然后把SELECT *注释掉,添加DELETE。假设再想不出来就去上厕所-毁人不倦语录.常用函数数字函数ABS 取绝对值 POWER 乘方 LN 10为底数取幂SQRT 平方根 EXP e的n次乘方 LOG(m,n) m为底数n取幂数学运算函数:ACOS ATAN ATAN2 COS COSH SIGN SIN SINH TAN TANH CEIL 大于或等于取整数 FLOOR 小于或等于取整数MOD 取余数 ROUND(n,m) 按
27、m的位数取四舍五入值假设round(日期): 中午12以后将是明天的日期. round(sysdate,Y)是年的第一天TRUNC(n,m) 按m的位数取前面的数值假设trunc(日期), 确省的是去掉时间冲锋号响起后执行的是命令而不是方案-毁人不倦语录.常用函数字符函数CHR 按数据库的字符集由数字前往字符 CONCAT(c1,c2) 把两个字符c1,c2组合成一个字符, 和 | 一样REPLACE(c,s,r) 把字符c里出现s的字符交换成r, 前往新字符 SUBSTR(c,m,n) m大于0,字符c从前面m处开场取n位字符,m等于0和1一样, m小与0,字符c从后面m处开场取n位字符TR
28、ANSLATE(c,f1,t1) 字符c按f1到t1的规那么转换成新的字符串INITCAP 字符首字母大写,其它字符小写LOWER 字符全部小写UPPER 字符全部大写LTRIM(c1,c2) 去掉字符c1左边出现的字符c2RTRIM(c1,c2) 去掉字符c1右边出现的字符c2TRIM(c1,c2) 去掉字符c1左右两边的字符c2LPAD(c1,n,c2) 字符c1按指定的位数n显示,缺乏的位数用c2字符串交换左边的空位RPAD(c1,n,c2) 字符c1按指定的位数n显示,缺乏的位数用c2字符串交换右边的空位提示:去掉字符串中间的空格可以运用replace假设有三条路供他选择,不要选中间的,剩下两条可以扔硬币决议-毁人不倦语录.常用函数日期函数ADD_MONTHS(d,n) 日期值加n月LAST_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 销售部门年度工作总结
- 科技公司专利代理协议(3篇)
- 数学主题演讲5分钟(34篇)
- 技术工程师岗位职责(33篇)
- 工程技术员个人年度工作总结范文
- 2024年铝锻压材项目资金需求报告代可行性研究报告
- 茶文化与茶艺鉴赏 教案 项目三 明茶礼-茶艺礼仪
- 智慧视觉AR交互装置技术要求征求意见稿
- 上海市市辖区(2024年-2025年小学五年级语文)统编版质量测试(上学期)试卷及答案
- 深圳2020-2024年中考英语真题专题06 阅读匹配(原卷版)
- GB/T 41365-2022中药材种子(种苗)白术
- GB/T 18371-2001连续玻璃纤维纱
- GB/T 12527-2008额定电压1 kV及以下架空绝缘电缆
- 一级建造师考试题库及答案(全国通用)
- 竣工工程销项工作计划表
- 公司社会责任管理制度
- 高速公路施工全流程标准化手册
- 2022届北京市东城区高三语文一模语文试卷讲评课件
- 通力电梯技能培训教材系列:《KCE控制系统课程》
- 模板-侦查阶段第二次会见笔录
- 2023年惠州仲恺城市发展集团有限公司招聘笔试题库及答案解析
评论
0/150
提交评论