oracle最基础SQL(1)
oracle11g的基本SQL语句和函数
![oracle11g的基本SQL语句和函数](https://img.taocdn.com/s3/m/bd37e60dbed5b9f3f90f1c3f.png)
GROUP BY
首先创建表
create table 成绩(sno number, km varchar2(13), score number); Insert into 成绩 values(1,‟语文’,60); Insert into 成绩 values(1,‟数学’,60); Insert into 成绩 values(1,‟英语’,60); Insert into 成绩 values(2,‟语文’,70); Insert into 成绩 values(2,‟数学’,70); Insert into 成绩 values(3,‟英语’,89); commit;
插入空值
Insert into student values(3,null, to_date(„19980311‟,‟yyyy-MMdd‟)); hh mm ss
insert into student(sno,birthday) values( 4,to_date('19880601','yyyy-MM-dd'));
月、日,小时、分钟、秒 数值数据类型的声明语法: 主要的日期时间类型有:
NUMBER [( p[, s])] DATE - 存储日期和时间部分,精确到整个的秒 P表示精度,S表示小数点的位数 TIMESTAMP - 存储日期、时间和时区信息,秒值精 确到小数点后6位 Select sysdate from dual; Select to_char(sysdate,‟yyyymmdd hh24:mi:ss‟) from dual; Select to_char(sysytimestamp,‟yyyymmdd hh24:mi:ssxff6‟) from dual;
oracle面试题sql语句
![oracle面试题sql语句](https://img.taocdn.com/s3/m/bb663670effdc8d376eeaeaad1f34693daef10d9.png)
oracle面试题sql语句当面试官问到关于Oracle SQL的问题时,通常会涉及到基本的查询、聚合函数、连接、子查询、索引等方面的知识。
我会从这些方面给出一些可能被问到的问题和相应的SQL语句作为回答。
1. 基本查询。
基本查询是SQL中最基本的操作,可能会涉及到SELECT语句以及WHERE子句的使用。
例如:sql.SELECT FROM employees;SELECT employee_id, first_name, last_name FROM employees WHERE department_id = 20;2. 聚合函数。
面试官可能会问到如何使用聚合函数来对数据进行统计,比如求和、平均值等。
例如:sql.SELECT AVG(salary) FROM employees;SELECT MAX(salary) FROM employees WHERE department_id = 30;3. 连接。
连接是SQL中非常重要的一部分,可能会涉及到INNER JOIN、LEFT JOIN、RIGHT JOIN等。
例如:sql.SELECT e.first_name, st_name, d.department_name.FROM employees e.JOIN departments d ON e.department_id = d.department_id;4. 子查询。
子查询也是SQL中常见的操作,可以用来进行嵌套查询或者作为临时表使用。
例如:sql.SELECT employee_id, first_name, last_name.FROM employees.WHERE department_id IN (SELECT department_id FROM departments WHERE location_id = 1700);5. 索引。
面试官可能会问到如何创建索引以及索引对查询的影响。
数据库oracle基础知识
![数据库oracle基础知识](https://img.taocdn.com/s3/m/bdf3dc44ae1ffc4ffe4733687e21af45b307feaa.png)
数据库oracle基础知识数据库Oracle是一款企业级关系数据库管理系统,被广泛应用于大型企业和政府机构。
为了从事Oracle数据库开发工作,需要掌握以下基础知识。
1. SQL语言SQL语言是Oracle数据库最常用的查询和管理语言。
它可以用于创建、修改和删除表格、存储过程和函数等对象。
SQL语言可以通过命令行工具或GUI工具(如Oracle SQL Developer)使用。
2. 数据类型Oracle数据库支持多种数据类型,包括字符型、数值型、日期型和布尔型等。
掌握各种数据类型的特点和使用方法对于正确存储数据非常重要。
3. 约束在Oracle数据库中,约束是定义表列或表之间关系的规则。
包括主键、外键、唯一约束和检查约束等。
理解和正确使用约束可以有效维护数据完整性。
4. 触发器触发器是一种在表上执行的操作,例如在插入、更新和删除时。
掌握触发器的创建和使用可以帮助开发者增强数据的一致性和完整性。
5. 存储过程和函数存储过程和函数是一些预定义的SQL语句,封装起来方便被调用。
存储过程和函数类似,但存储过程是没有返回值的,而函数则需要返回一个值。
掌握存储过程和函数的使用可以提高数据库的性能和效率。
6. 高可用性Oracle数据库提供了许多机制,确保在故障时保持数据库高可用性。
这包括了备份和恢复、灾备等方案。
掌握这些机制可以帮助开发者保障数据可靠性和业务连续性。
通过学习以上基础知识,可以使Oracle数据库开发者理解Oracle数据库的基本原理和概念。
并且可以使用这些知识来开发高效、高可用性、可扩展的Oracle数据库应用程序。
oracle数据库入门教程
![oracle数据库入门教程](https://img.taocdn.com/s3/m/d2837c1bac02de80d4d8d15abe23482fb5da0244.png)
oracle数据库入门教程Oracle数据库入门教程Oracle数据库是当今世界上最受欢迎和广泛使用的关系数据库管理系统之一。
它提供了高度可靠性、可扩展性和安全性,使得它成为许多企业和组织的首选数据库解决方案。
本教程将介绍如何入门使用Oracle数据库,从安装到基本的数据操作和查询。
第一部分:安装和配置Oracle数据库1. 下载和安装Oracle数据库首先,您需要从Oracle官方网站上下载并安装Oracle数据库软件。
根据您的操作系统选择合适的版本,并按照官方安装指南进行操作。
2. 配置Oracle数据库安装完成后,您需要进行一些基本的配置。
这包括设置管理员密码、配置监听器和网络连接,以及创建初始化参数文件。
详细的配置步骤可以在官方文档中找到。
3. 启动和停止Oracle数据库一旦配置完成,您可以使用Oracle提供的工具启动和停止数据库。
通常,您需要先启动监听器,然后启动数据库实例。
同样,停止的顺序也是先停止数据库实例,再停止监听器。
第二部分:Oracle数据库基础知识1. 数据库和实例在Oracle概念中,数据库是物理文件的集合,用于存储数据。
而实例则是数据库的运行环境,包括内存结构和进程。
一个数据库可以对应多个实例,每个实例可以在不同的计算机上运行。
2. 数据表和字段在Oracle数据库中,数据以表的形式组织。
表由列(字段)和行组成,每个列定义了一种数据类型。
您可以使用SQL语句或图形界面工具创建和管理表,为每个字段指定适当的数据类型、长度和约束。
3. 数据类型Oracle数据库支持多种数据类型,包括数值、字符、日期、布尔、LOB(二进制大对象)等。
了解每种数据类型的特性和用法对于有效存储和检索数据至关重要。
第三部分:Oracle SQLSQL是结构化查询语言(Structured Query Language)的缩写,是Oracle数据库的标准查询语言。
它允许用户执行各种操作,如插入、更新和删除数据,以及查询和排序数据。
oracle常用SQL语句(汇总版)
![oracle常用SQL语句(汇总版)](https://img.taocdn.com/s3/m/23685c956bec0975f465e22e.png)
Oracle数据库常用sql语句ORACLE 常用的SQL语法和数据对象一.数据控制语句(DML) 部分1.INSER T (往数据表里插入记录的语句)INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名;字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号''.字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验.日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)TO_DATE()还有很多种日期格式, 可以参看OR ACLE DOC.年-月-日小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SSINSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包.INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号CREATE SEQUENCE 序列号的名称(最好是表名+序列号标记) INCREMENT BY 1 START WI TH 1 MAXVALUE 99999 CYCLE NOCACHE;其中最大的值按字段的长度来定, 如果定义的自动增长的序列号NUMBER(6) , 最大值为999999 INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL2.DELETE (删除数据表里记录的语句)DELETE FROM表名 WHERE 条件;注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.如果确实要删除一个大表里的全部记录, 可以用TRUNCATE 命令, 它可以释放占用的数据块表空间TRUNCATE TABLE 表名;此操作不可回退.3.UPDATE (修改数据表里记录的语句)UPDATE表名SET 字段名1=值1, 字段名2=值2, …… WHERE 条件;如果修改的值N没有赋值或定义时, 将把原来的记录内容清为NULL, 最好在修改前进行非空校验;值N超过定义的长度会出错, 最好在插入前进行长度校验..注意事项:A. 以上SQL语句对表都加上了行级锁,确认完成后, 必须加上事物处理结束的命令COMMIT 才能正式生效,否则改变不一定写入数据库里.如果想撤回这些操作, 可以用命令ROLLBACK 复原.B. 在运行INSERT, DELETE 和UPDATE 语句前最好估算一下可能操作的记录范围,应该把它限定在较小(一万条记录) 范围内,. 否则ORACLE处理这个事物用到很大的回退段.程序响应慢甚至失去响应. 如果记录数上十万以上这些操作, 可以把这些SQL语句分段分次完成, 其间加上COMMIT 确认事物处理.二.数据定义(DDL) 部分1.CREATE (创建表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)ORACLE常用的字段类型有CHAR 固定长度的字符串VARCHAR2 可变长度的字符串NUMBER(M,N) 数字型M是位数总长度, N是小数的长度DATE 日期类型创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面创建表时可以用中文的字段名, 但最好还是用英文的字段名创建表时可以给字段加上默认值, 例如DEFAUL T SYSDATE这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件例如不允许重复UNIQUE, 关键字PRIMAR Y KEY2.AL TER (改变表, 索引, 视图等)改变表的名称AL TER TABLE 表名1 TO 表名2;在表的后面增加一个字段AL TER TABLE表名ADD 字段名字段名描述;修改表里字段的定义描述AL TER TABLE表名MODIFY字段名字段名描述;给表里的字段加上约束条件AL TER TABLE 表名ADD CONSTRAINT 约束名PRIMAR Y KEY (字段名);AL TER TABLE 表名ADD CONSTRAINT 约束名UNIQUE (字段名);把表放在或取出数据库的内存区AL TER TABLE 表名CACHE;AL TER TABLE 表名NOCACHE;3.DROP (删除表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)删除表和它所有的约束条件DROP TABLE 表名CASCADE CONSTRAINTS;4.TRUNCATE (清空表里的所有记录, 保留表的结构)TRUNCATE 表名;三.查询语句(SELECT) 部分SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 条件;字段名可以带入函数例如: COUNT(*), MIN(字段名), MAX(字段名), AVG(字段名), DISTINCT(字段名), TO_CHAR(DATE字段名,'YYYY-MM-DD HH24:MI:SS')NVL(EXPR1, EXPR2)函数解释:IF EXPR1=NULLRETURN EXPR2ELSERETURN EXPR1DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数解释:IF AA=V1 THEN RETURN R1IF AA=V2 THEN RETURN R2..…ELSERETURN NULLLPAD(char1,n,char2)函数解释:字符char1按制定的位数n显示,不足的位数用char2字符串替换左边的空位字段名之间可以进行算术运算例如: (字段名1*字段名1)/3查询语句可以嵌套例如: SELECT …… FROM(SELECT …… FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2;两个查询语句的结果可以做集合操作例如: 并集UNION(去掉重复记录), 并集UNION ALL(不去掉重复记录), 差集MINUS, 交集INTERSECT分组查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] GROUP BY字段名1[HAVING 条件] ;两个以上表之间的连接查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE表名1.字段名= 表名2. 字段名[ AND ……] ;SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE表名1.字段名= 表名2. 字段名(+) [ AND ……] ;有(+)号的字段位置自动补空值查询结果集的排序操作, 默认的排序是升序ASC, 降序是DESCSELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……]ORDER BY字段名1, 字段名2 DESC;字符串模糊比较的方法INSTR(字段名, ‘字符串’)>0字段名LIKE ‘字符串%’[‘%字符串%’]每个表都有一个隐含的字段ROWID, 它标记着记录的唯一性.四.ORACLE里常用的数据对象 (SCHEMA)1.索引(INDEX)CREATE INDEX 索引名ON 表名( 字段1, [字段2, ……] );AL TER INDEX 索引名REBUILD;一个表的索引最好不要超过三个(特殊的大表除外), 最好用单字段索引, 结合SQL语句的分析执行情况, 也可以建立多字段的组合索引和基于函数的索引ORACLE8.1.7字符串可以索引的最大长度为1578 单字节ORACLE8.0.6字符串可以索引的最大长度为758 单字节2.视图(VIEW)CREATE VIEW 视图名AS SELECT …. FROM …..;AL TER VIEW视图名COMPILE;视图仅是一个SQL查询语句, 它可以把表之间复杂的关系简洁化.3.同义词(SYNONMY)CREATE SYNONYM同义词名FOR 表名;CREATE SYNONYM同义词名FOR 表名@数据库链接名;4.数据库链接(DATABASE LINK)CREATE DATABASE LINK数据库链接名CONNECT TO 用户名IDENTIFIED BY 密码USING ‘数据库连接字符串’;数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样数据库全局名称可以用以下命令查出SELECT * FROM GLOBAL_NAME;查询远端数据库里的表SELECT …… FROM 表名@数据库链接名;五.权限管理(DCL) 语句1.GRANT 赋于权限常用的系统权限集合有以下三个:CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)常用的数据对象权限有以下五个:ALL ON 数据对象名, SELECT ON 数据对象名, UPDATE ON 数据对象名, DELETE ON 数据对象名, INSER T ON 数据对象名, AL TER ON 数据对象名GRANT CONNECT, RESOURCE TO 用户名;GRANT SELECT ON 表名 TO 用户名;GRANT SELECT, INSERT, DELETE ON表名 TO 用户名1, 用户名2;2.REVOKE 回收权限REVOKE CONNECT, RESOURCE FROM 用户名;REVOKE SELECT ON 表名FROM 用户名;REVOKE SELECT, INSERT, DELETE ON表名FROM 用户名1, 用户名2;查询数据库中第63号错误:select orgaddr,destaddr from sm_histable0116 where error_code='63';查询数据库中开户用户最大提交和最大下发数:select MSISDN,TCOS,OCOS from ms_usertable;查询数据库中各种错误代码的总和:select error_code,count(*) from sm_histable0513 group by error_code orderby error_code;查询报表数据库中话单统计种类查询。
Oracle常用SQL命令
![Oracle常用SQL命令](https://img.taocdn.com/s3/m/2cfec8c73086bceb19e8b8f67c1cfad6195fe91d.png)
Oracle常⽤SQL命令创建表空间1.创建默认表空间WLP_DATCREATE TABLESPACE "MYSPACE" DATAFILE'D:\oracle\oradata\orcl\data/WLP_DAT.dbf' SIZE 32M REUSE AUTOEXTEND ON NEXT 32MLOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;2.创建临时表空间WLP_TEMP(⽤于缓存,可以不建)ALTER TABLESPACE "TEMP" ADD TEMPFILE'D:\oracle\oradata\orcl\data/WLP_TEMP.dbf' SIZE 32m REUSE autoextend on next 32m;创建⽤户并授权1CREATE USER "WLPING" PROFILE "DEFAULT"2 IDENTIFIED BY "123456"3DEFAULT TABLESPACE "MYSPACE" //默认指定表空间4TEMPORARY TABLESPACE "TEMP" //指定缓存表空间5 ACCOUNT UNLOCK; //⽤户⾮锁定67GRANT EXECUTE ON dbms_comparison TO "WLPING";8GRANT UNLIMITED TABLESPACE TO "XIR_MD";9GRANT "CONNECT" TO "XIR_MD";10GRANT "RESOURCE" TO "XIR_MD";1112-- GRANT DBA TO XIR_MD;PROFILE:Oracle系统中的profile可以⽤来对⽤户所能使⽤的数据库资源进⾏限制,使⽤Create Profile命令创建⼀个Profile,⽤它来实现对数据库资源的限制使⽤,如果把该profile分配给⽤户,则该⽤户所能使⽤的数据库资源都在该profile的限制之内。
ORACLE基础学习
![ORACLE基础学习](https://img.taocdn.com/s3/m/9b7fbb1fcfc789eb172dc8b1.png)
查询语句-字符函数
字符函数
函数名称 CONCAT(S1,S2) INSTR(S1,S2[,n[,m]])
LENGTH(S) LOWER UPPER SUBSTR (S,N[,M]) REPLACE (S,S1,S2)
功能 连接两个字符串 取得子串S2在字符串S1中的位置,N为起始搜索位置, M为子串出现次数,N,M默认为1 返回字符串的长度 返回字符串,并将所有的字符小写 返回字符串,并将所有的字符大写 取子字符串,从N开始,取 M个 将字符串S中的子串S1用S2替换
游标简介
1. 在PL/SQL中使用DML语句时自动创建隐式游标 2. 隐式游标自动声明、打开和关闭,其名为 SQL 3. 通过检查隐式游标的属性可以获得最近执行的DML语句的
信息
隐式游标的属性有: %FOUND – SQL 语句影响了一行或多行时为 TRUE %NOTFOUND – SQL 语句没有影响任何行时为TRUE %ROWCOUNT – SQL 语句影响的行数 %ISOPEN - 游标是否打开,始终为FALSE
SQL语言-创建表
CREATE建表示例:
比较常用的建表方法
改为“ulocal_tbs”
SQL语言-创建视图
使用CREATE VIEW语句创建视图,以限制 对表的数据访问或代替常用的SQL查询语句
视图查询方式
SQL语言-修改表
SQL语言-修改表
SQL语言-删除表
在ORACLE10版本以后,如果DROP不带PURGE选项,则会把表先放在 回收站 DROP TABLE DEPT PURGE; SELECT * FROM USER_RECYCLEBIN; PURGE TABLE DEPT;
ORACLE 基础学习
oracle数据库常用语句大全
![oracle数据库常用语句大全](https://img.taocdn.com/s3/m/1fd7908da0c7aa00b52acfc789eb172ded6399ba.png)
Oracle数据库是甲骨文公司的一款关系数据库管理系统,它在数据库领域一直处于领先地位。
以下是Oracle数据库常用的一些SQL语句:SELECT:查询语句,用于从一个或多个表中检索数据。
例如:sqlSELECT column1, column2 FROM table_name;INSERT:插入语句,用于向表中插入新记录。
例如:sqlINSERT INTO table_name (column1, column2) VALUES (value1, value2);UPDATE:更新语句,用于修改表中的数据。
例如:sqlUPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;DELETE:删除语句,用于从表中删除记录。
例如:sqlDELETE FROM table_name WHERE condition;CREATE TABLE:创建表语句,用于创建新的数据库表。
例如:scssCREATE TABLE table_name (column1 datatype, column2 datatype, ...);ALTER TABLE:修改表语句,用于添加、删除或修改表中的列。
例如:sqlALTER TABLE table_name ADD column_name datatype;ALTER TABLE table_name DROP COLUMN column_name;ALTER TABLE table_name MODIFY COLUMN column_name datatype; WHERE:条件语句,用于在查询中过滤数据。
例如:sqlSELECT * FROM table_name WHERE condition;GROUP BY:分组语句,用于将查询结果分组。
在使用GROUP BY时,SELECT子句中的列表中的所有个体值(除聚组函数avg、count等外)必须是GROUP BY子句中的表达式或常量。
oracle常用sql函数
![oracle常用sql函数](https://img.taocdn.com/s3/m/b82239f46e1aff00bed5b9f3f90f76c661374c0e.png)
oracle常用sql函数Oracle是一款非常优秀的数据库管理系统,它提供了很多强大的功能与工具,其中最基本而实用的功能就是SQL函数了。
下面我们将重点介绍一些常用的Oracle SQL函数,帮助读者更好地了解和掌握这些常用的函数,从而更加有效地处理和管理数据。
一、数值型函数1. ABS()函数:用于计算数值的绝对值,比如ABS(-10)会返回10。
2. CEIL()函数:用于向上取整,比如CEIL(3.14)会返回4。
3. FLOOR()函数:用于向下取整,比如FLOOR(3.14)会返回3。
4. MOD()函数:用于求模,比如MOD(12,5)会返回2。
5. ROUND()函数:用于四舍五入,比如ROUND(3.49)会返回3,而ROUND(3.51)会返回4。
二、字符型函数1. CONCAT()函数:用于连接两个字符串,比如CONCAT('hello','world')会返回helloworld。
2. SUBSTR()函数:用于截取字符串,比如SUBSTR('hello',2,3)会返回ell。
3. UPPER()函数:用于将字符串转换成大写,比如UPPER('hello')会返回HELLO。
4. LOWER()函数:用于将字符串转换成小写,比如LOWER('HELLO')会返回hello。
5. TRIM()函数:用于去掉字符串首尾的空格,比如TRIM(' hello ')会返回hello。
三、日期型函数1. CURRENT_DATE函数:用于获取当前日期,比如SELECT CURRENT_DATE FROM DUAL会返回当前日期。
2. SYSDATE函数:用于获取系统当前时间,比如SELECTSYSDATE FROM DUAL会返回系统当前时间。
3. TO_CHAR()函数:用于将日期转换成字符型,比如TO_CHAR(SYSDATE,'yyyy-mm-dd')会返回当前日期的年月日格式。
Oracle数据库SQL基础与进阶
![Oracle数据库SQL基础与进阶](https://img.taocdn.com/s3/m/dc5d033a814d2b160b4e767f5acfa1c7aa00828a.png)
其他子查询(ALL,ANY,SOME) 该类子查询暂不做讨论
操作-Insert、Update、Delete语句的使用
学习目标:
➢如何使用INSERT UPDATE 和DELETE 来处理数据 ➢在操作数据时使用WHERE 子句的重要性 ➢从外部数据源中导入和导出数据的基本方法
查询-Select语句的使用
● 简单的Select查询:
查询表的所有列 select * from untax_billprice 查询表的指定列 select chr_name,price from untax_billprice 查询不重复的数据 select distinct price from untax_billprice
查询-Select语句的使用
表达式、条件语句和运算:
对于between…and,表示在某一段范围区间,它与price>=1 and price<=3是等价的
2、select * from untax_billprice where chr_code='001' or chr_code='002' or chr_code='010‘ 与 select * from untax_billprice where chr_code in (‘001’,‘002’,‘010’)等价
from untax_billname where chr_code='001')
查询-Select 该类子查询,其结果集为空时,返回false,非空时,返回true。理解
Oracle基础(习题卷1)
![Oracle基础(习题卷1)](https://img.taocdn.com/s3/m/e78bf1b67d1cfad6195f312b3169a4517723e5f5.png)
Oracle基础(习题卷1)第1部分:单项选择题,共63题,每题只有一个正确答案,多选或少选均不得分。
1.[单选题]以下()用户默认拥有SYSDBA权限A)A-SYSTEMB)B-SYSC)C-SAD)D-DBADMIN答案:B解析:2.[单选题]你使用 IMMEDIATE 选项关闭数据库实例。
考虑打开数据库需要执行的步骤:1. 分配 SGA2. 读取控制文件3. 读取日志文件4. 开始实例恢复5. 启动后台进程6. 检查数据文件一致性7. 读取 spfile 或者 pfile哪个选项是正确的关于这些步骤()A)7, 1, 5, 2, 3, 6, 4B)1, 5, 7, 2, 3, 6; step 4 is not requiredC)7, 1, 5, 2, 3, 6 step 4 is not requiredD)1, 2, 3, 5, 6, 4; step 7 is not required答案:C解析:3.[单选题]执行下面的命令备份 USERS 表空间SQL> ALTER TABLESPACE users BEGIN BACKUP;ALTER TABLESPACE users BEGIN BACKUP*ERROR at line 1:ORA-01123: cannot start online backup;media recovery not enabled什么原因导致整个错误()A)MTTR Advisor 禁用B)数据库处于 NOARCHIVELOG 模式C)表空间已经处于备份模式D)Flash Recovery Area 没有配置答案:B解析:4.[单选题]当执行介质数据库恢复时,有个归档日志文件丢失或者损坏,那么此时只能执行哪种操作?什么A)Until SCNB)Until timeC)Recover using backup control file.D)Until cancel答案:D解析:5.[单选题]oracle逻辑存储结构正确的是( )A)tablespace--segment--osblock--blockB)tablespace--segment--extent--blockC)tablespace--extent--segment--blockD)tablespace--extent--block -segment答案:B解析:6.[单选题]如何将变量v_row 定义为emp表的记录类型( )A)v_row emp%type;B)v_row emp%record;C)v_row emp%tabletype;D)v_row emp%rowtype;答案:D解析:7.[单选题]The schema SALES exists in two databases, ORCL1 and ORCL2, and has the same password,SALES123. User SALES has CREATE DATABASE LINK and CREATE SESSION privileges on bothDatabases.Eaxmine these command:Conn SALES/SALES123CREATE DATABASE LINK orcl2 USING ‘orcl12’;What is the outcome of executing these commands in the ORCL1 database?A)ORCL2 is created as a shared database link to connect multiple sessions to the SALES schema in the ORCL2 databaseB)ORCL2 database link creation failsC)ORCL2 is created as a private database link to connect to only the SALES schema in the ORCL2 databaseD)ORCL2 is created as a public link to connect a single session to the SALES schema in the ORCL2 database答案:C解析:8.[单选题]分析以下的SQL 命令:SELECT manufacturer_idFROM inventoryWHERE manufacturer_id LIKE '%N\%P\%O%' ESCAPE '\';命令执行的返回结果是( )。
OCP-1 SQL 基础 I
![OCP-1 SQL 基础 I](https://img.taocdn.com/s3/m/28c7bb1f866fb84ae45c8dbf.png)
OCP-1 SQL 基础I课程介绍:Oracle培训(10g OCP)认证体系均分为三级认证:即Oracle 10g数据库认证专员(OCA)、Oracle 10g 数据库认证专家(OCP)和Oracle 10g数据库认证大师(OCM)。
要获得Oracle 10g OCA证书,需要通过1Z0-047和1Z0-042这两门考试;要获得Oracle 10g OCP证书,需要在获得Oracle 10g OCA证书的基础上,再通过1Z1-043的考试,就可获得Oracle 10g OCP证书。
要获得Oracle 10g OCM证书,需要在获得Oracle 10G OCP证书的基础上,通过Oracle大学的上机动手实验,就可获得Oracle 10G OCM证书。
学员在学习完“SQL 基础”后,可以参加1Z0-047的考试,通过考试后,可以获得SQL专家证书。
该证书证明学员可以熟练掌握SQL语言对表做增删查改、掌握数据库中常用的序列、索引、表等对象、掌握多表连接、分组运算、子查询等高级查询技巧。
适合人群:OCP培训SQL 基础I适合理解数据库的基本概念;使用过任何一种数据库的学员学习。
培训目标:OCP培训SQL 基础I培训目标:使用SELECT 语句在表中检索行数据和列数据利用SQL 函数生成和检索自定义的数据使用高级查询语言运行数据操纵语言(DML) 操纵数据管理不同时区的数据类型使用高级子查询搜索数据课程大纲:OCP培训SQL 基础I课程大纲:第一章. 编写SQL SELECT 语句第二章. 对数据进行限制和排序第三章. 使用单行函数自定义输出第四章. 使用组函数报告汇总数据第五章. 显示多个表中的数据第六章. 使用子查询来解析查询第七章. 使用SET 运算符第八章. 处理数据第九章. 使用DDL 语句创建和管理表第十章. 管理方案对象第十一章. 管理不同时区中的数据第十二章. 使用高级子查询搜索数据第十三章. 分层检索。
oracle动态sql语句基本语法
![oracle动态sql语句基本语法](https://img.taocdn.com/s3/m/390a1468bf23482fb4daa58da0116c175e0e1e54.png)
oracle动态sql语句基本语法Oracle动态SQL语句是一种在运行时动态生成SQL语句的技术。
它可以根据不同的条件和参数生成不同的SQL语句,从而实现更加灵活和高效的数据操作。
下面是Oracle动态SQL语句的基本语法:1. 使用EXECUTE IMMEDIATE语句执行动态SQL语句:EXECUTE IMMEDIATE 'SELECT * FROM employees WHERE department_id = :dept_id' USING dept_id;2. 使用BIND VARIABLES绑定变量:DECLAREv_dept_id NUMBER := 10;v_sql VARCHAR2(100);BEGINv_sql := 'SELECT * FROM employees WHERE department_id = :dept_id';EXECUTE IMMEDIATE v_sql USING v_dept_id;END;3. 使用PL/SQL变量拼接SQL语句:DECLAREv_dept_id NUMBER := 10;v_sql VARCHAR2(100);BEGINv_sql := 'SELECT * FROM employees WHERE department_id = ' || v_dept_id;EXECUTE IMMEDIATE v_sql;END;4. 使用CASE语句生成动态SQL语句:DECLAREv_dept_id NUMBER := 10;v_sql VARCHAR2(100);BEGINv_sql := 'SELECT * FROM employees WHERE department_id = ';v_sql := v_sql || CASE WHEN v_dept_id IS NULL THEN 'NULL' ELSE TO_CHAR(v_dept_id) END;EXECUTE IMMEDIATE v_sql;END;5. 使用FOR LOOP生成动态SQL语句:DECLAREv_dept_id NUMBER := 10;v_sql VARCHAR2(100);BEGINv_sql := 'SELECT * FROM employees WHERE department_id IN (';FOR i IN 1..10 LOOPv_sql := v_sql || i || ',';END LOOP;v_sql := SUBSTR(v_sql, 1, LENGTH(v_sql) - 1) || ')';EXECUTE IMMEDIATE v_sql;END;6. 使用SYS_CONTEXT函数获取当前用户信息:DECLAREv_user VARCHAR2(30) := SYS_CONTEXT('USERENV', 'CURRENT_USER');v_sql VARCHAR2(100);BEGINv_sql := 'SELECT * FROM employees WHERE created_by = ''' || v_user || '''';EXECUTE IMMEDIATE v_sql;END;7. 使用DBMS_SQL包执行动态SQL语句:DECLAREv_cursor INTEGER;v_sql VARCHAR2(100);BEGINv_sql := 'SELECT * FROM employees WHERE department_id = :dept_id';v_cursor := DBMS_SQL.OPEN_CURSOR;DBMS_SQL.PARSE(v_cursor, v_sql, DBMS_SQL.NATIVE);DBMS_SQL.BIND_VARIABLE(v_cursor, ':dept_id', 10);DBMS_SQL.EXECUTE(v_cursor);DBMS_SQL.CLOSE_CURSOR(v_cursor);END;8. 使用DBMS_SQL.RETURN_RESULT函数返回结果集:DECLAREv_cursor INTEGER;v_sql VARCHAR2(100);BEGINv_sql := 'SELECT * FROM employees WHERE department_id = :dept_id';v_cursor := DBMS_SQL.OPEN_CURSOR;DBMS_SQL.PARSE(v_cursor, v_sql, DBMS_SQL.NATIVE);DBMS_SQL.BIND_VARIABLE(v_cursor, ':dept_id', 10);DBMS_SQL.EXECUTE(v_cursor);DBMS_SQL.RETURN_RESULT(v_cursor);DBMS_SQL.CLOSE_CURSOR(v_cursor);END;9. 使用DBMS_SQL.DESCRIBE_COLUMNS函数获取结果集元数据:DECLAREv_cursor INTEGER;v_sql VARCHAR2(100);v_col_cnt INTEGER;v_col_desc DBMS_SQL.DESC_TAB;BEGINv_sql := 'SELECT * FROM employees WHERE department_id = :dept_id';v_cursor := DBMS_SQL.OPEN_CURSOR;DBMS_SQL.PARSE(v_cursor, v_sql, DBMS_SQL.NATIVE);DBMS_SQL.BIND_VARIABLE(v_cursor, ':dept_id', 10);DBMS_SQL.EXECUTE(v_cursor);v_col_cnt := DBMS_SQL.FETCH_ROWS(v_cursor);DBMS_SQL.DESCRIBE_COLUMNS(v_cursor, v_col_cnt, v_col_desc); DBMS_SQL.CLOSE_CURSOR(v_cursor);END;10. 使用DBMS_SQL.COLUMN_VALUE函数获取结果集列值:DECLAREv_cursor INTEGER;v_sql VARCHAR2(100);v_col_cnt INTEGER;v_col_desc DBMS_SQL.DESC_TAB;v_emp_id NUMBER;v_emp_name VARCHAR2(30);BEGINv_sql := 'SELECT employee_id, first_name FROM employees WHERE department_id = :dept_id';v_cursor := DBMS_SQL.OPEN_CURSOR;DBMS_SQL.PARSE(v_cursor, v_sql, DBMS_SQL.NATIVE);DBMS_SQL.BIND_VARIABLE(v_cursor, ':dept_id', 10);DBMS_SQL.EXECUTE(v_cursor);v_col_cnt := DBMS_SQL.FETCH_ROWS(v_cursor);DBMS_SQL.DESCRIBE_COLUMNS(v_cursor, v_col_cnt, v_col_desc); LOOPEXIT WHEN DBMS_SQL.FETCH_ROWS(v_cursor) = 0;DBMS_SQL.COLUMN_VALUE(v_cursor, 1, v_emp_id);DBMS_SQL.COLUMN_VALUE(v_cursor, 2, v_emp_name);DBMS_OUTPUT.PUT_LINE(v_emp_id || ' ' || v_emp_name);END LOOP;DBMS_SQL.CLOSE_CURSOR(v_cursor);END;以上是Oracle动态SQL语句的基本语法,可以根据实际需求进行灵活应用。
ORACLE 之SQL
![ORACLE 之SQL](https://img.taocdn.com/s3/m/abfda60ef12d2af90242e601.png)
第三章ORACLE 之SQL*PLUS基础3.1 SQL*PLUS基础2.SQL与SQL*PLUS命令SQL:在Oracle数据库中创建(表、视图、索引等)、存储、改变(结构、数据)和维护信息;SQL命令存放在SQL缓冲区内,保持到下一条SQL命令进入缓冲区,并以―;‖(分号)结尾。
SQL命令有如下特点:1. 简单、易读、功能强大,是Oracle各种开发工具的基础2. 与终端用户进行交互能力强SQL* Plus命令可用来:形成复杂的报表;编辑SQL命令;提供帮助信息;维护系统变量。
与SQL的区别:①不进入SQL缓冲区②不用―;‖(分号)结尾父表deptSQL> select * from dept;DEPTNO DNAME LOC--------- -------------- -------------10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERA TIONS BOSTONEmp子表EMPNO ENAME JOB MGR HIREDA TE SAL COMM DEPTNO--------- -------- --------- ----- --------- ---- ---- ------ 7369 SMITH CLERK 7902 17-DEC-80 800 207499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 307521 WARD SALESMAN 7698 22-FEB-81 1250 500 307566 JONES MANAGER 7839 02-APR-81 2975 207654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 307698 BLAKE MANAGER 7839 01-MAY-81 2850 307782 CLARK MANAGER 7839 09-JUN-81 2450 107788 SCOTT ANAL YST 7566 19-APR-87 3000 207839 KING PRESIDENT 17-NOV-81 5000 107844 TURNER SALESMAN 7698 08-SEP-81 1500 0 307876 ADAMS CLERK 7788 23-MAY-87 1100 207900 JAMES CLERK 7698 03-DEC-81 950 307902 FORD ANAL YST 7566 03-DEC-81 3000 207934 MILLER CLERK 7782 23-JAN-82 1300 1014 rows selected.SQL命令的组成数据定义语言(DDL):creat(建立)drop(删除)alter(修改表结构)rename(改名)数据操纵语言(DML):select(查询)insert(插入)delete(删除)update(更新)数据控制语言(DCL):grant(授权)revoke(回收)数据检索语言(SELECT)事务处理控制命令: 包括:commit(提交)、rollback(回退)savepoint(设置保存点),练习什么是S Q L?S Q L有什么功能?下列哪个语句可以从数据库中取得数据?A. selectB. updateC. insertD. delete3. 指出S Q L数据控制语言(D C L)中的命令。
Oracle数据库培训-SQL基础篇
![Oracle数据库培训-SQL基础篇](https://img.taocdn.com/s3/m/5178fbba50e79b89680203d8ce2f0066f5336460.png)
连字运算符
连字运算符: •连接列或者字符串到其它的列 •用两个竖线表示(||) •构造一个字符表达式的合成列 SELECT first_name||last_name AS Employees FROM employees;
文字字符串
•文字字符串是包含在SELECT列表中的一个字符 串,一个数字或者一个日期 •日期和字符的文字字符串值必须用单引号括起来 •每个文字字符串在每行输出一次 SELECT last_name||' is a '||job_id
空值
•null 是一个未分配的、未知的,或不适用的值 •null不是0,也不是空格 •包含空值的算术表达式计算结果为空 SELECT last_name, job_id, salary,
commission_pct FROM employees;
定义列别名
列别名: •改变列标题的名字 •可用于计算结果 •紧跟在列名后面–在列名和别名之间可以有选项 AS 关键字 •如果别名中包含有空格、或者特殊字符、或者大 小写敏感,要求用双引号 SELECT last_name AS name, commission_pct comm FROM employees;
SQL 函数
• 函数是SQL的一个非常强有力的特性,函数能够 用于下面的目的:
– 执行数据计算 – 修改单个数据项 – 操纵输出进行行分组 – 格式化显示的日期和数字 – 转换列数据类型
• SQL函数有输入参数,并且总有一个返回值。 注:在本课中讲述的大多数函数是针对SQL的 Oracle版的。
SQL 函数 (续)
AS "Employee Details” FROM employees;
约束和排序数据
oracle sql培训教程 pdf
![oracle sql培训教程 pdf](https://img.taocdn.com/s3/m/dd09817ebf1e650e52ea551810a6f524ccbfcb1b.png)
oracle sql培训教程 pdf标题:《Oracle SQL培训教程》PDF引言:Oracle是世界上最著名和广泛使用的关系数据库管理系统(RDBMS)之一。
它具有强大的功能和广泛的应用领域,是许多企业和组织的首选数据库系统。
为了帮助初学者快速掌握Oracle SQL的基本知识和技巧,本教程以PDF形式提供了详细的教学材料,旨在为读者提供全面的指导和实用的示例。
第一部分:基本概念和语法1. 数据库和表介绍:解释数据库和表的概念,介绍Oracle数据库的基本结构和组成部分。
2. SQL语言基础:详细介绍SQL的基本语法,包括数据查询、数据插入、数据更新和数据删除操作。
3. 数据类型和约束:讲解不同的数据类型和约束,如字符串、数值、日期和空值等。
4. 运算符和函数:介绍SQL中常用的运算符和函数,以及如何使用它们进行数据计算和转换。
5. 查询数据:通过实际的查询示例,教授如何使用SELECT语句从表中检索数据,包括条件查询、排序和聚合函数等。
第二部分:高级技巧和优化1. 多表查询:讲解如何在多个相关表之间建立关联,并使用JOIN查询实现复杂的数据检索。
2. 子查询和内嵌视图:教授如何使用子查询和内嵌视图来解决复杂的查询需求。
3. 分组和聚合:介绍如何使用GROUP BY子句和聚合函数对数据进行分组和计算。
4. 数据库连接和联合查询:解释不同类型的数据库连接,如内连接、外连接和自连接,并演示如何使用UNION和UNION ALL操作符联合查询。
5. 索引和性能优化:讨论索引的概念和作用,并提供一些优化数据库性能的实用技巧。
第三部分:实际案例和练习1. 案例研究:通过实际案例,展示如何应用Oracle SQL解决常见的业务问题。
2. 练习题目:提供一系列的练习题目,供读者巩固所学知识并提升实践能力。
结语:本教程提供了一个全面而实用的Oracle SQL培训材料,旨在帮助初学者快速掌握SQL的基础知识和高级技巧。
ORACLE常用SQL语句大全
![ORACLE常用SQL语句大全](https://img.taocdn.com/s3/m/94b48cef7375a417876f8f41.png)
ORACLE常用SQL语句大全一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:/mssql7backup/MyNwind_1.dat'--- 开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not nul l],..)根据已有的表创建新表:A:select * into table_new from table_old (使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle>5、说明:删除表drop table tablename6、说明:增加一个列,删除一个列A:alter table tabname add column col typeB:alter table tabname drop column colname注:DB2DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、添加主键:Alter table tabname add primary key(col)删除主键:Alter table tabname drop primary key(col)8、创建索引:create [unique] index idxname on tabname(col….)删除索引:drop index idxname注:索引是不可更改的,想更改必须删除重新建。
ORACLE-SQL语句学习教程
![ORACLE-SQL语句学习教程](https://img.taocdn.com/s3/m/91247686d0d233d4b14e69ba.png)
目录概述 (2)第一章SQL*PLUS 工具软件的使用 (5)第二章基本查询 (9)第三章条件查询 (13)第四章单行函数 (16)第五章多表查询 (20)第六章组函数 (23)第七章子查询 (25)第八章运行期间指定变量 (29)第九章创建基表 (31)第十章ORACLE数据字典 (36)第十一章操纵数据 (38)第十二章修改基表及其约束 (42)第十三章创建序列 (45)第十四章创建视图 (47)第十五章创建索引 (50)概述20世纪70年代初,E.F.Codd 在计算机学会(Association of Computer Machinery, 简写为ACM)期刊Communications of the ACM(ACM 通讯)发表了题为”A Relational Model of Data for Large Shared Data Banks”(大型共享数据库的数据关系模型)的论文,该论文提出的关系数据库模型成为今天最为权威的关系型数据库管理模型。
IBM公司首先使用该模型开发出了结构化英语查询语言SEQUEL(Structured English Query Language),作为其关系数据库原型System R的操作语言,实现对关系数据库的信息检索。
SEQUEL后来简写为SQL,即Structured Query Language(结构化查询语言)的缩写。
ORACLE公司于1997年推出了第一个商业应用的SQL软件。
20世纪80年代初,美国国家标准化组织(ANSI)开始着手制订SQL标准,最早的ANSI标准于1986年颁布,它也被称为SQL-86。
标准的出台使SQL作为标准的关系数据库语言的地位得到加强。
SQL标准几经修改和完善,目前SQL语言方面新的ANSI标准是1992年制定的ANSI X3.135-1992,“Database Language SQL”。
此标准也被国际电工委员会(International Electro technical Commission, 即IEC)所属的国际标准化组织(International Standards Organization, 即ISO)所接受,并将它命名为ISO/IEC9075:1992, “Database Language SQL”。
oracle 查看数据库的sql语句
![oracle 查看数据库的sql语句](https://img.taocdn.com/s3/m/c814ead26aec0975f46527d3240c844769eaa0cf.png)
一、简介Oracle是一种关系型数据库管理系统(RDBMS),其广泛应用于企业级应用和数据管理中。
在Oracle数据库中,SQL语句是与数据库交互最常用的方式之一,通过SQL语句可以实现对数据库的查询、插入、更新、删除等操作。
在实际应用中,了解如何查看数据库的SQL 语句对于数据库管理员和开发人员来说至关重要。
二、 SQL语句的分类1. 查询语句(SELECT):用于查询数据库中的数据。
2. 插入语句(INSERT):用于向数据库中插入新的数据。
3. 更新语句(UPDATE):用于更新数据库中已有的数据。
4. 删除语句(DELETE):用于从数据库中删除数据。
5. 创建表语句(CREATE TABLE):用于创建新的数据表。
6. 删除表语句(DROP TABLE):用于删除已有的数据表。
7. 修改表结构语句(ALTER TABLE):用于修改数据表的结构。
三、查看已存在的SQL语句在Oracle数据库中,可以通过以下几种方式查看已存在的SQL语句:1. 查看数据库中的存储过程和函数:通过查询用户定义的存储过程和函数的元数据,可以获取其对应的SQL语句。
2. 查看数据库中的触发器:触发器是一种数据库对象,通过查询系统表可以查看触发器的定义语句。
3. 查看数据库中的视图:视图是虚拟的表,通过查询系统表可以获取视图的定义语句。
4. 查看数据库中的作业和调度:作业和调度是数据库中的定时任务,可以通过系统表获取其对应的SQL语句。
四、查看正在执行的SQL语句Oracle数据库提供了多种方式来查看当前正在执行的SQL语句:1. 使用动态性能视图:通过查看动态性能视图V$SQL和V$SQLAREA可以获取当前正在执行的SQL语句以及相关的执行计划、执行时间等信息。
2. 使用AWR报告:如果开启了AWR(自动工作负荷存储库)功能,可以通过AWR报告查看数据库在特定时间范围内执行的SQL语句和相关统计信息。
3. 使用SQL追踪工具:Oracle提供了SQL追踪工具,可以详细记录数据库中执行的SQL语句的执行计划、执行时间等信息,方便进行性能优化和故障排查。
oracle创建数据库sql语句
![oracle创建数据库sql语句](https://img.taocdn.com/s3/m/4ea63f356ad97f192279168884868762caaebb8f.png)
oracle创建数据库sql语句Oracle是一个常用的关系型数据库管理系统,通过SQL语句可以完成数据库的创建,下面介绍几种常见的创建数据库的SQL语句。
1. 创建一个新的Oracle数据库实例。
CREATE DATABASE mynewdb;2. 指定数据库文件的位置和大小。
CREATE DATABASE mynewdbDATAFILE '/u01/app/oracle/oradata/mynewdb/system01.dbf' SIZE 100MDEFAULT TEMPORARY TABLESPACE tempDEFAULT TABLESPACE users;3. 指定数据库字符集和语言。
CREATE DATABASE mynewdbCHARACTER SET WE8MSWIN1252NATIONAL CHARACTER SET UTF8;4. 指定数据库的工作方式。
CREATE DATABASE mynewdbENABLE PLUGGABLE DATABASESEED PLUGGABLE DATABASE pdbseedCREATE SPFILEMAXINSTANCES 4MAXLOGHISTORY 1MAXLOGFILES 5MAXLOGMEMBERS 5MAXDATAFILES 100ARCHIVELOG;5. 指定数据库实例的名称和端口号。
CREATE DATABASE mynewdbUSER SYS IDENTIFIED BY mypasswordUSER SYSTEM IDENTIFIED BY mypasswordLOGFILE GROUP 1 '/u01/app/oracle/oradata/mynewdb/redo01.log' SIZE 50M,GROUP 2 '/u01/app/oracle/oradata/mynewdb/redo02.log' SIZE 50M, GROUP 3 '/u01/app/oracle/oradata/mynewdb/redo03.log' SIZE 50M STORAGE (INITIAL 500MNEXT 500MMAXSIZE UNLIMITED)CHARACTER SET AL32UTF8NATIONAL CHARACTER SET AL16UTF16EXTENT MANAGEMENT LOCALDATAFILE '/u01/app/oracle/oradata/mynewdb/system01.dbf' SIZE 2000MSYSAUX DATAFILE'/u01/app/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 500M DEFAULT TABLESPACE usersTEMPORARY TABLESPACE tempUNDO TABLESPACE undoLOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/archive'LOG_ARCHIVE_FORMAT='%t_%s_%r.arc'DB_BLOCK_SIZE=8192DB_CREATE_FILE_DEST='/u01/app/oracle/oradata'DB_CREATE_ONLINE_LOG_DEST='/u01/app/oracle/oradata';以上是常见的几种创建Oracle数据库的SQL语句,在实际应用中我们根据需要进行相应的修改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.SQL语言简介1. SQL概述SQL是一种面向数据库的通用数据处理语言规范,能完成以下几类功能:提取查询数据,插入修改删除数据,生成修改和删除数据库对象,数据库安全控制,数据库完整性及数据保护控制。
数据库对象包括表、视图、索引、同义词、簇、触发器、函数、过程、包、数据库链、快照等(表空间、回滚段、角色、用户)。
数据库通过对表的操作来管理存储在其中的数据。
2. 数据库查询1) 用SELECT语句从表中提取查询数据。
语法为SELECT [DISTINCT] {column1,colum n2,…} FROM tablename WHERE {conditions} GROUP BY {condition s} ORDER BY {expressions} [ASC/DESC];说明:SELECT子句用于指定检索数据库的中哪些列,FROM子句用于指定从哪一个表或视图中检索数据。
2) SELECT中的操作符及多表查询WHERE子句。
(LIKE,IS,…)WHERE子句中的条件可以是一个包含等号或不等号的条件表达式,也可以是一个含有IN、NOT IN、BETWEEN、LIKE、IS NOT NULL等比较运算符的条件式,还可以是由单一的条件表达通过逻辑运算符组合成复合条件。
比较操作符 = > < >= <= != <>SQL操作符 BETWEEN …AND… IN LIKE IS NULLNOT BETWEEN …AND… NOT IN NOT LIKE IS NOT NULL逻辑操作符 AND OR NOT3) ORDER BY 子句ORDER BY 子句使得SQL在显示查询结果时将各返回行按顺序排列,返回行的排列顺序由ORDER BY 子句指定的表达式的值确定。
4) 连接查询利用SELECT语句进行数据库查询时,可以把多个表、视图的数据结合起来,使得查询结果的每一行中包含来自多个表达式或视图的数据,这种操作被称为连接查询。
连接查询的方法是在SELECT命令的FROM子句中指定两个或多个将被连接查询的表或视图,并且在WHERE子句告诉ORACLE如何把多个表的数据进行合并。
根据WHERE子句中的条件表达式是等还是不等式,可以把连接查询分为等式连接和不等式连接。
5) 子查询如果某一个SELECT命令(查询1)出现在另一个SQL命令(查询2)的一个子句中,则称查询1是查询2的子查询。
3. 基本数据类型(NUMBER,VARCHAR2,DATE)ORACEL支持下列内部数据类型:l VARCHAR2 变长字符串,最长为2000字符。
l NUMBER 数值型。
l LONG 变长字符数据,最长为2G字节。
l DATE 日期型。
l RAW 二进制数据,最长为255字节。
l LONG RAW 变长二进制数据,最长为2G字节。
l ROWID 二六进制串,表示表的行的唯一地址。
l CHAR 定长字符数据,最长为255。
4. 常用函数用法:一个函数类似于一个算符,它操作数据项,返回一个结果。
函数在格式上不同于算符,它个具有变元,可操作0个、一个、二个或多个变元,形式为:函数名(变元,变元,…)函数具有下列一般类形:l 单行函数l 分组函数1)单行函数对查询的表或视图的每一行返回一个结果行。
它有数值函数,字符函数,日期函数,转换函数等。
2)分组函数返回的结果是基于行组而不是单行,所以分组函数不同于单行函数。
在许多分组函数中可有下列选项:l DISTRNCT 该选项使分组函数只考虑变元表达式中的不同值。
l ALL该选项使分组函数考虑全部值,包含全部重复。
全部分组函数(除COUNT(*)外)忽略空值。
如果具有分组函数的查询,没有返回行或只有空值(分组函数的变元取值的行),则分组函数返回空值。
l 单行函数1) 数字函数ABS 取绝对值 POWER 乘方 LN 10为底数取冪SQRT 平方根 EXP e的n次乘方 LOG(m,n) m为底数n取冪数学运算函数:ACOS ATAN ATAN2 COS COSH SIGN SIN SINH TAN TANHCEIL 大于或等于取整数FLOOR 小于或等于取整数MOD 取余数ROUND(n,m) 按m的位数取四舍五入值如果round(日期): 中午12以后将是明天的日期. round(sysdate,'Y')是年的第一天TRUNC(n,m) 按m的位数取前面的数值如果trunc(日期), 确省的是去掉时间2) 字符函数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位字符TRANSLATE(c,f1,t1) 字符c按f1到t1的规则转换成新的字符串INITCAP 字符首字母大写,其它字符小写LOWER 字符全部小写UPPER 字符全部大写LTRIM(c1,c2) 去掉字符c1左边出现的字符c2RTRIM(c1,c2)TRIM(c1,c2) 去掉字符c1左右两边的字符c2LPAD(c1,n,c2) 字符c1按制定的位数n显示不足的位数用c2字符串替换左边的空位RPAD(c1,n,c2)3) 日期函数ADD_MONTHS(d,n) 日期值加n月LAST_DAY(d) 返回当月的最后一天的日期MONTHS_BETWEEN(d1,d2) 两个日期值间的月份,d1NEXT_DAY(d) 返回日期值下一天的日期SYSDATE 当前的系统时间DUAL是SYS用户下一个空表,它只有一个字段dummy4) 转换函数(1)TO_CHAR(date,'日期显示格式')TO_CHAR(number) 用于显示或报表的格式对齐TO_DATE(char,'日期显示格式')TO_LOB 把long字段转换成lob字段TO_NUMBER(char) 用于计算或者比较大小5) 转换函数(2)to_date里日期显示格式YYYY 年 YEAR YYY YY YQ 季度MM 月 MONTH MONW 星期 (week of month) WW, IW (week of year)(说明:周计是按ISO标准,从1月1日的星期数到后面七天为一周,不一定是从周一到周日)DD 日 DAY DYHH24 小时 HH12 HHMI 分钟SS 秒如果想固定日期的显示格式可以在数据库的参数文件initorasid.ora里新写一行参数 NLS_DATE_FORMAT=yyyy-mm-dd hh24:mi:ss可以在UNIX环境变量或者NT的注册表里的设置 NLS_DATE_FORMAT=yyyy-mm-dd hh24:mi:ss6) 转换函数(3)如果想固定日期的显示格式可以用alter session命令改变SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';它的作用顺序如下:initialization parameterEnvironment variableALTER SESSION command7) 转换函数 (4)to_char(number)里数字显示格式9 数字位0 数字前面补0 to_char(-1200,'00000.00'). 小数点的位置, 标记位置的逗号用在数字显示格式的左边L 根据数据库字符集加货币符号 to_char(-1200,'L9999.99')B 把数字0显示为空格,用在数字显示格式的右边MI 右边的负数标记 to_char(-1200,'9999.99MI')PR 括起来的负数 to_char(-1200,'9999.99PR')EEEE 用指数方式表示 to_char(-1200,'9999.99EEEE')8) 输入字符,返回数字的函数instr(c1,c2) 字符c2出现在c1的位置, 不出现, 返回0, 常用于模糊查询length(c) 按数据库的字符集,算出字符c的长度,跟数据库的字符集有关, 一个汉字长度为1 9) 有逻辑比较的函数NVL(EXPR1, EXPR2)函数解释: IF EXPR1=NULL RETURN EXPR2ELSE RETURN EXPR110) DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数解释: IF AA=V1 THEN RETURN R1IF AA=V2 THEN RETURN R2..…ELSERETURN NULL举例: decode(id,1,'dept sale',2,'dept tech')l 集合函数经常和group by一起使用1) 集合函数列表AVG (DISTINCT | ALL | N) 取平均值COUNT (DISTINCT | ALL | N | expr | * ) 统计数量MAX (DISTINCT | ALL | N) 取最大值MIN (DISTINCT | ALL | N) 取最小值SUM (DISTINCT | ALL | N) 取合计值STDDEV (DISTINCT | ALL | N) 取偏差值,如果组里选择的内容都相同,结果为0 VARIANCE (DISTINCT | ALL | N) 取平方偏差值2) 使用集合函数的语法SELECT column, group_function FROM tableWHERE condition GROUP BY group_by_expressionHAVING group_condition ORDER BY column;3) 使用count时的注意事项SELECT COUNT(*) FROM table;SELECT COUNT(常量) FROM table;都是统计表中记录数量,如果没有PK后者要好一些SELECT COUNT(all 字段名) FROM table;SELECT COUNT(字段名) FROM table;不会统计为NULL的字段的数量SUM,AVG时都会忽略为NULL的字段4) 用group by时的限制条件SELECT字段名不能随意, 要包含在GROUP BY的字段里GROUP BY后ORDER BY时不能用位置符号和别名限制GROUP BY的显示结果, 用HAVING条件5) 例子SQL> select title,sum(salary) payroll from s_empwhere title like 'VP%' group by titlehaving sum(salary)>5000 order by sum(salary) desc;找出某表里字段重复的记录数, 并显示SQL> select (duplicate field names) from table_namegroup by (list out fields) having count(*)>1;5. 数据操纵语言命令:数据库操纵语言(DML)命令用于查询和操纵模式对象中的数据,它不隐式地提交当前事务。