当前位置:文档之家› 学习informatic

学习informatic

2012年2月1日Oracle数据库的一些基本概念–数据库安全•用户:数据库中的用户,用于组织和管理数据库对象的。

通常一个应用软件的数据库对象被存放在一个数据库用户下。

使用数据库用户连接数据库后,可以对这些数据库对象进行操作•方案:一组数据库对象的集合。

一个方案对应一个唯一的数据库用户,方案名和用户名完全相同。

在访问数据库对象的时候,可以才用“方案名.对象名”的方式进行访问•权限:权限决定了数据库用户在数据库中可以作什么。

如果用户没有权限,那么对数据库就不能进行任何操作。

权限由高权限用户授予•角色:一组命名的权限,用于简化对权限的管理操作。

可以一次将多个权限(一个用户的权限)授予一个或多个用户–数据库文件与存储:•数据文件:用于存放数据的操作系统文件。

数据库包含一个或多个数据文件•表空间:数据被存储在文件中,但是在数据库中数据文件组织在一起,被按照表空间的方式来进行管理。

表空间是一个或者多个数据文件的集合,在数据库中的存储空间表现为表空间,在操作系统中表现为数据文件。

一个数据库包含一个或多个表空间•控制文件:数据库的核心文件,存放着数据库的重要信息。

例如数据库的名称和数据库的结构(数据文件,重作日志文件的名称和目录)•重做日志文件:记录数据库中数据变化的文件。

所有数据的修改都被记录在日子文件中,主要用于保证数据库的可恢复性•初始化参数文件:存放数据库初始化参数的文件。

用于设置关于数据库的一些参数,在数据库启动的时候需要读取,并根据初始化参数的设置分配数据库的内存空间–数据库网络访问:•数据库名:数据库的名称•实例名:数据库的内存区域和后台进程集合的总称•服务名:数据库在操作系统上被当作一个服务对待•连接字符串:通过网络访问远端服务器上的数据库时,用于描述数据库访问地址的字符串。

通常的结构是:“主机名(或IP):端口号:服务名”,例如:192.168.2.200:1521:orcl•监听器:在服务器端运行的一个进程。

用于监听客户端到数据库的连接请求。

在通过网络访问时必须启动表中的常用字段类型•Char(n) 定长字符串•Varchar2(n) 变长字符串•Varchar(20) 变长字符串•Number(m,p) 数字类型•Number(m) 数字类型•Date 日期类型••Sql语句分类–Select查询语句–DML语句(数据操作语言)Insert / Update / Delete / Merge–DDL语句(数据定义语言)Create / Alter / Drop / Truncate–DCL语句(数据控制语言)Grant / Revoke–事务控制语句Commit / Rollback / Savepoint–WHERE子句在FROM 子句后SELECT last_name, job_id, department_idFROM employeesWHERE last_name = …KING';–使用ORDER BY 子句将记录排序ASC: 升序,缺省DESC: 降序–ORDER BY 子句出现在SELECT语句的最后SQL> SELECT last_name, job_id, hire_date2 FROM employees3 ORDER BY hire_date;SQL> SELECT last_name, job_id, hire_date2 FROM employees3 ORDER BY hire_date DESC; 使用列的别名排序SELECT ENAME, (SAL * 12) as “年薪” FROM EMPORDER BY “年薪" ASC ;• 字符串大小写转换处理字符串SELECT E.EMPNO ,CONCAT(E.ENAME,E.JOB) CON , LENGTH(E.ENAME) LEN ,INSTR(E.ENAME,'S') INS FROM EMP EWHERE SUBSTR(E.JOB,1,5) = 'SALES';EMPNO CON LEN INS ----- ------------------- ---------- ----------7499 ALLENSALESMAN 5 0 7521 W ARDSALESMAN 4 0 7654 NULLSALESMAN 4 0 7844 TURNERSALESMAN 6 0• 数字函数是对数字进行操作的函数,这类函数比较少,也比较简函数结果LOWER('SQL Course') UPPER('SQL Course') INITCAP('SQL Course')sql course SQL COURSE Sql CourseCONCAT('Good', 'String') SUBSTR('String',1,3) LENGTH('String') INSTR('String', 'r') LPAD(sal,10,'*')GoodString Str 6 3******5000函数 结果单。

只有三种:对数字四舍五入的ROUND函数;对数字进行截取的TRUNC函数;求模或求余的MOD函数–ROUND: 4舍5入到指定的小数位•ROUND(45.926, 2) 45.93–TRUNC: 将值截断到指定的小数位•TRUNC(45.926, 2) 45.92–MOD: 返回相除后的余数•MOD(1600, 300) 100SELECT ROUND(45.943,2) "小数点后两位",ROUND(45.943,0) "个位",ROUND(45.942,-1) "十位"FROM SYS.DUAL ;SELECT TRUNC(45.943,2) "小数点后两位",TRUNC(45.943,0) "个位",TRUNC(45.942,-1) "十位"FROM SYS.DUAL ;SELECT E.ENAME,E.SAL, MOD(E.SAL,300) as "除以300后的余数"FROM EMP EWHERE E.ENAME='SMITH';使用日期SQL> SELECT SYSDA TE<AS "时间">2 FROM SYS.DUAL ;时间-----------2007-7-24 2日期的运算SQL> SELECT E.ENAME, (SYSDATE - E.HIREDATE)/7 AS "工作周数"2 FROM EMP E3 WHERE E.ENAME='SMITH…;ENAME 工作周数---------- ----------SMITH 1387.99213SQL> SELECT E.ENAME, E.HIREDATE, (E.HIREDA TE + 90)2 FROM EMP E3 WHERE E.ENAME='SMITH';ENAME HIREDATE (E.HIREDATE+90)---------- ----------- ---------------SMITH 1980-12-17 1980-12-29日期函数• MONTHS_BETWEEN ('01-SEP-95','11-JAN-94') 19.6774194 • ADD_MONTHS ('11-JAN-94',6) '11-JUL-94' • NEXT_DAY ('01-SEP-95','FRIDAY') '08-SEP-95' • LAST_DAY('01-SEP-95') '30-SEP-95' SQL> SELECT E.ENAME ,E.HIREDATE,SYSDATE ,2 MONTHS_BETWEEN(SYSDA TE,E.HIREDATE) "工作月数" FROM EMP E4 WHERE E.ENAME='SMITH';ENAME HIREDATE SYSDATE 工作月数 ---------- ----------- ----------- ----------SMITH 1980-12-17 2007-7-24 2 319.256761 • ROUND('25-JUL-95','MONTH') 01-AUG-95 • ROUND('25-JUL-95','YEAR') 01-JAN-96 • TRUNC('25-JUL-95','MONTH') 01-JUL-95 • TRUNC('25-JUL-95','YEAR') 01-JAN-95 •• SELECT E.HIREDATE, TO_CHAR(E.HIREDATE,'YYYY-MM-DD:DAY') AS "日期" • FROM EMP E• WHERE E.ENAME='SMITH' • ;•HIREDATE 日期两日期相差多少月ADD_MONTHS NEXT_DAY LAST_DAY ROUND TRUNC在一个日期上加或减若干月到新的日期 取得从当前日期开始遇到的第一指定星期几的日期取得按年或月四舍五入得到的新日期 函数描述取得按年或月截取得到的新日期MONTHS_BETWEEN•----------- -----------------•1980-12-17 1980-12-17:星期三•---------------------------------------------------------------------•SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS AM') •FROM SYS.DUAL;••TO_CHAR(SYSDATE,'YYYY-MM-DDHH2•------------------------------•2007-07-24 23:55:17 下午•2012年2月2日•CASE表达式•实现逻辑的IF-THEN-ELSE•CASE expr•WHEN comparison_expr1 THEN return_expr1•[WHEN comparison_expr2 THEN return_expr2•WHEN comparison_exprn THEN return_exprn•ELSE else_expr]•END•SELECT E.ENAME ,E.JOB,E.SAL,•CASE E.JOB•WHEN 'CLERK' THEN 1.10 * E.SAL •WHEN 'MANAGER' THEN 1.3 * E.SAL •WHEN 'SALESMAN' THEN 1.45 * E.SAL •ELSE E.SAL•END AS "修订工资数"•FROM EMP E•WHERE E.ENAME='SMITH';••ENAME JOB SAL 修订工资数•---------- --------- --------- ----------•SMITH CLERK 800.00 880 •DECODE函数•DECODE函数类似于一系列CASE 或IF-THEN-ELSE 语句••DECODE(col/expression, search1, result1•[, search2, result2,...,]•[, default])•SELECT E.ENAME,E.JOB,E.SAL,•DECODE (E.JOB ,'CLERK' ,E.SAL * 1.10,•'MANAGER',E.SAL * 1.30,•'SALESMAN' ,E.SAL * 1.4,• E.SAL ) AS "修订工资数"•FROM EMP E•WHERE E.ENAME='SMITH';••ENAME JOB SAL 修订工资数•---------- --------- --------- ----------•SMITH CLERK 800.00 880•常用的分组函数–AVG ([DISTINCT|ALL]n)–COUNT ({ *|[DISTINCT|ALL]expr})–MAX ([DISTINCT|ALL]expr)–MIN ([DISTINCT|ALL]expr)–SUM ([DISTINCT|ALL]n)•使用A VG函数可以求出一组数据的平均值,而SUM可以求出一组数的总和。

相关主题