实验一 oracle11g 安装 1
实验二 oracle11g 卸载 10
实验三 sqlplus命令 12
实验四 Oracle常用系统函数 21
实验五 数据库实例的启动与关闭 28
实验六 Oracle
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
空间管理 32
实验七 Oracle数据库设计 37
实验八 Oracle表的创建与修改 38
实验九 索引 42
实验十 聚簇 47
实验十一 序列 49
实验十二 Oracle事务隔离级别 52
实验十三 用户管理与权限分配 55
实验十四 Oracle数据库审计 61
实验十五 PL/SQL编程 67
实验一 oracle11g 安装
1.下载Oracle 11g,如下图所示:
22将第一个1of2文件解压出来命名为oracle,再将的二个2of2文件打开,将其中的win32_11gR2_database_2of2.zip\database\stage\Components下的所有文件拷到第一个解压出来的文件夹oracle\database\stage\Components下。安装文件就配置好了。
2. 点击安装文件,如下图所示:
或者点击
说明:如不能安装也许是防火墙引起的,可以关闭防火墙后再尝试。
3. 进入安装,如下图所示:
3. ,等待后进入下图所示界面,参考按照图上选择并点击“下一步”。
管理口令和确认口令:oracle建议的口令复杂性策略为,大写字母、小写之母、数字都要有,长度至少为8个字符。
如果出现该错误表示第一步配置不正确,卸载干净后重新安装。
下面是安装正常情况下的界面:
普通用户:Scott:tiger
普通管理员:System:manager
超级管理员:Sys:change_on_install
其它用户可以不用解锁,配置完点击“确定”。
点击:“完成”,oracle11g结束安装。
4. 查看服务
解释:Oracle Service
:oracle实例
OracleTNSListener:Oracle监听服务
OracleDBConsole :Oracle控制台程序
5. 运行oracle客户端——sqlplus
用户名:scott
口令:tiger
说明:口令不会回显,下图所示为连接成功。可在SQL〉后面输入pl/sql命令。
实验二 oracle11g 卸载
1. 在“运行”中输入:services.msc,从而打开“服务”,手动停止Oracle的所有服务。
2. 然后在“开始”菜单中依次选择:“程序”->”Oracle-OraDb11g_home1”->”Oracle Installation Products” ->”Universal Installer”,进入Oracle Universal Installer(OUI)窗口。点击“卸载产品”,打开“产品清单”,选中要删除的oracle产品,单击“删除”按钮,打开“确认删除”对话框。在“确认删除”对话框中单击“是”按钮,开始删除所选择的oracle产品。
或者
使用oracle11G自带一个卸载批处理
\app\Administrator\product\11.2.0\dbhome_1\deinstall\deinstall.bat,运行该批处理程序将自动完成oracle卸载工作,最后手动删除\app文件夹(可能需要重启机器后才能删除)。
说明:运行过程中可能需要填写如下项:
? 指定要取消配置的所有单实例监听程序[LISTENER]:LISTENER
? 指定在此 Oracle 主目录中配置的数据库名的列表 [MYDATA,ORCL]: MYDATA,ORCL
? 是否仍要修改 MYDATA,ORCL 数据库的详细资料? [n]: n
? CCR check is finished
? 是否继续 (y - 是, n - 否)? [n]: y
3. 打开注册表(windows运行中输入regedit), 找到路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 删除该路径下的所有以oracle或OraWeb开头的键(这个键是标识Oracle在windows下注册的各种服务)。
4. 打开注册表,找到路径:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 删除该oracle目录(该目录下注册着Oracle数据库的软件安装信息)。
5. 打开注册表,找到路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application 删除该路径下的所有以oracle开头的键(删除注册的oracle事件日志)。
6. 删除HKEY_CLASSES_ROOT目录下所有以Ora、Oracle、Orcl 或 EnumOra为前缀的键。
7. 删除
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/MenuOrder/Start Menu /Programs 中所有以oracle开头的键
8. 删除HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI中除Microsoft ODBC for Oracle 注册表键以外的所有含有Oracle的键。
说明:有些注册表项可能在卸载oracle产品时已经被删除。
9. 删除环境变量path和classpath中关于oracle的内容。 鼠标右键右单击“我的电脑-->属性-->高级-->环境变量-->PATH 变量。 删除Oracle在该值中的内容。
注意:path中记录着一堆操作系统的目录,在windows中各个目录之间使用分号(;)隔开的,删除时注意。
建议:删除PATH环境变量中关于Oracle的值时,将该值全部拷贝到文本编辑器中,找到对应的Oracle的值,删除后,再拷贝修改的串,粘贴到PATH环境变量中,这样相对而言比较安全。
10. 重新启动操作系统(重启操作系统后各种Oracle相关的进程都不会加载了)。
11. 删除Oracle_Home下的所有数据(Oracle_Home指Oracle程序的安装目录)。
12. 删除C:\Program Files\oracle目录(该目录视Oracle安装所在路径而定)。
13. 删除c:\Documents and Settings \系统用户名\LocalSettings\Temp目录下的临时文件
14. 删除 “开始”--> “程序”中所有Oracle的组和图标
至此,Windows平台下Oracle就彻底卸载了。
实验三 sqlplus命令
SQLPLUS的主要功能为:输入、运行和调试SQL语句和PL/SQL块;执行管理数据库命令;处理数据、生成报表、格式化查询结果。
在SQLPLUS中输入三种类型的命令: SQL命令,用于操作数据库中的信息;PL/SQL块,用于操作数据库中的信息;SQLPLUS命令,用于编辑、保存、运行SQL命令、PL/SQL块、格式化查询结果、自定义SQLPLUS环境等。其中,SQL命令和PL/SQL块可以访问数据库,执行时将命令暂时存放到SQL缓冲区中。SQLPLUS命令不可以访问数据库,命令也不能被存放到SQL缓冲区中。
1. 打开sqlplus
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
1:在“运行”中输入sqlplus。按提示分别输入用户名和密码。
方法2:在“运行”中输入sqlplus 用户名/密码@数据库实例
例:sqlplus sys/ change_on_install@orcl as sysdba 或
sqlplus scott/tiger@orcl
方法3:在“运行”中输入cmd,在DOS窗口中输入sqlplus,按提示分别输入用户名和密码。
2. 退出sqlplus (在退出sqlplus之前,应该使用commit命令提交事务)
SQL> quit; 或者 SQL> exit;
3. 获取sqlplus命令的帮助
SQL> help index; --查看sqlplus命令清单
SQL> help list; --显示出list(具体某条命令)命令的帮助信息
4. 缓冲区命令:
SQL>SELECT * from v$parameter ; --把该条查询命令保存到缓冲区中
SQL>EDIT; --编辑缓冲区中的内容
SQL>RUN --执行缓冲区中的内容
或者
SQL>/ --执行缓冲区中的内容
SQL>CLEAR SCREEN --清除sqlplus的屏幕及屏幕缓冲区
5. 运行命令:在sqlplus中可以使用三种方式运行SQL语句和PL/SQL块。
1) 命令行方式:在输入完SQL语句之后输入分号(;),或者,在新的一行输入斜线(/)并按回车键。
? 命令行方式运行SQL语句,示例如下:
SQL> SELECT ename, sal FROM scott.emp
2 WHERE deptno = 20;
? 命令行方式运行PL/SQL块,示例如下:
SQL> SET SERVEROUTPUT ON
SQL> BEGIN
2 DBMS_OUTPUT.PUT_LINE('Hello Oracle!');
3 END;
4 /
? EXECUTE(或者EXEC)命令,可以执行单条PL/SQL语句,不需要从缓冲区或脚本文件中执行。
SQL> SET SERVEROUTPUT ON
SQL> EXEC DBMS_OUTPUT.PUT_LINE('Hello ');
2) SQL缓冲区方式
? RUN命令:显示并运行当前存储在SQL缓冲区中的SQL语句或PL/SQL块,显示运行结果,并使SQL缓冲区中的最后一行成为当前行。输入如下查询语句:
SQL> SELECT ename, sal FROM scott.emp
2 WHERE deptno = 20
3 ;
查询结果如下:
ENAME SAL
---------- ----------
SMITH 800
JONES 2975
SCOTT 3000
ADAMS 1100
FORD 3000
输入:
SQL> RUN
屏幕显示:
1 SELECT ename, sal FROM scott.emp
2 WHERE deptno = 20
3*
ENAME SAL
---------- ----------
SMITH 800
JONES 2975
SCOTT 3000
ADAMS 1100
FORD 3000
? /命令:运行当前存储在SQL缓冲区中的SQL命令或PL/SQL块,显示运行结果,但不显示SQL缓冲区中的SQL命令或PL/SQL块,也不会将SQL缓冲区中的最后一行成为当前行。
输入如下命令:
SQL> SET SERVEROUTPUT ON
SQL> BEGIN
2 DBMS_OUTPUT.PUT_LINE('HELLO,ORACLE!');
3 END;
4 /
显示结果如下:
HELLO,ORACLE!
PL/SQL 过程已成功完成。
输入如下命令:
SQL> /
显示结果如下:
HELLO,ORACLE!
PL/SQL 过程已成功完成。
3) 脚本文件方式
? START命令,格式: START filename[.ext] [arg1 arg2 arg3...]
假设脚本文件:D:\test.sql内容如下:
SELECT ename, sal FROM scott.emp
WHERE deptno = &1
AND sal > &2;
使用START命令,输入:
SQL> START D:\test.sql 20 2500
则相当于执行查询
SELECT ename, sal FROM scott.emp
WHERE deptno = 20
AND sal > 2500;
查询结果显示如下:
ENAME SAL
---------- ----------
JONES 2975
SCOTT 3000
FORD 3000
? @命令:和START命令类似,区别在于@命令既可以在SQLPLUS会话内部运行,也可以在命令行运行,而START命令只能在SQLPLUS会话内运行。
备注:Linux中命令 @/u01/ test.sql
6. 替换变量命令
替换变量可以临时存储值,利用它可以达到创建通用脚本的目的,利用它可以实现与用户的交互,故在SQLPlus中又称交互式命令。替换变量的格式是在变量名称前加一个&,以便在运行SQL命令时提示用户输入替换数据,然后按输入数据运行。
1) 使用替换变量:其格式是在变量名称之前加一个&,以便在运行SQL命令时提示用户输入替换数据,然后按输入数据运行SQL命令,如:
SQL> SELECT &a FROM scott.emp
2 WHERE deptno = 20
3 AND job = '&b';
输入 a 的值: ename
ename将替换&a,即:
原值 1: SELECT &a FROM emp
新值 1: SELECT ename FROM emp
输入 b 的值: CLERK
CLERK将替换&b,即:
原值 3: AND job = '&b'
新值 3: AND job = 'CLERK'
查询结果如下:
ENAME
----------
SMITH
ADAMS
2) 定义替换变量:事先用DEFINE命令定义替换变量,如输入:
SQL> DEFINE a = CLERK
SQL> SELECT ename FROM emp
2 WHERE deptno = 20
3 AND job = '&a';
执行时,相当于:
原值 3: AND job = '&a'
新值 3: AND job = 'CLERK'
查询结果同上。
3) 查看替换变量
SQL> DEFINE a
DEFINE A = "CLERK" (CHAR)
4) 清除替换变量
SQL> UNDEFINE a
7. 与用户通信:可以使用PROMPT命令,PAUSE命令,ACCEPT命令与用户进行通信。
1) PROMPT命令用于输出提示信息,以便使用户了解脚本文件的功能和运行情况。
2) PAUSE命令用于暂停脚本文件的运行。
3) ACCEP命令可以让用户指定替换变量的类型(如CHAR,NUMBER,DATE),用PROMPT选项指定提示信息,用HIDE选项隐藏输入,以便于用户输入替换变量。
举例,假设脚本文件D:\test.sql内容如下:
ACCEPT pwd PROMPT '请输入密码' HIDE
PROMPT
PROMPT 显示XX部门XX工种的员工姓名
PROMPT ==========================
PROMPT 按键继续
PAUSE
ACCEPT a NUMBER PROMPT '请输入部门:'
ACCEPT b CHAR PROMPT '请输入工种:'
SELECT ename FROM scott.emp
WHERE deptno = &a
AND job = '&b';
输入命令:
SQL> START D:\test.sql
该脚本文件运行结果为:
请输入密码*********
显示XX部门XX工种的员工姓名
==========================
按键继续
请输入部门:20
请输入工种:CLERK
原值 2: WHERE deptno = &a
新值 2: WHERE deptno = 20
原值 3: AND job = '&b'
新值 3: AND job = 'CLERK'
ENAME
----------
SMITH
ADAMS
8. 格式化列:column命令来更改select语句中指定列的宽度和标题,可以简写为col。主要有以下用法:
1) 修改列宽度
col ename format a20 --将列ename (字符型)显示最大宽度调整为20个字符
col sal format 9999999 --将列sal (number型)显示最大宽度调整为7个字符
2) 修改列标题
col ename heading 姓名 --将ename的列名输出为姓名
3) 设置列的对齐方式
SQL> col ename justify center ; --可以为left/right/center
SQL> select empno, ename, job from scott.emp;
注意:对于number类型的数据默认为右对齐,其他默认为左对齐。
4) 隐藏某列显示:col job noprint
SQL> col job noprint;
SQL> select empno, ename, job from scott.emp;
5) 格式化number类型列的显示:column sal format $999,999.00
SQL> column sal format $999,999.00
SQL> select empno, ename, sal from scott.emp;
6) 设置列值,若列值为空以text代替
SQL> col comm null text
SQL> select * from scott.emp;
7) 显示列的当前属性
SQL> column ename;
8) 重置为默认值:
SQL> clear columns;
9) 折行功能:wrappe选项按照指定长度折行;加word_wrapped后,按照完整字符串折行。
10) 控制定义的显示属性状态:off表示定义的所有显示属性都不起作用;默认值是on。
举例:
SQL>create table test(col varchar(100));
SQL>insert into test values('How are you?');
SQL>insert into test values('Happy Birthday!');
SQL>column col format a5 wrapped
SQL>select * from test;
SQL>column col format a5 word_wrapped
SQL>select * from test;
综合案例如下:
SQL> COLUMN ename HEADING 雇员 JUSTIFY CENTER FORMAT A4
SQL> COLUMN sal HEADING 月薪 JUSTIFY CENTER FORMAT L99999.99
SQL> SELECT ename, sal FROM emp WHERE deptno = 20 AND sal > 2500;
SQL>COLUMN sal CLEAR --恢复列的格式
SQL> SELECT ename, sal FROM emp WHERE deptno = 20 AND sal > 2500;
9. describe命令(desc):查询指定数据对象的组成结构。语法格式:desc 对象名称
举例:
SQL>desc dba_tablespaces; --查看dba_tablespaces数据字典表的结构
SQL>desc scott.emp; --查看scott.emp的结构
如果在sqlplus输入命令行时忘记了表的列名,可以通过使用“#desc对象名称”的命令格式随时查看数据对象的结构。举例如下:
SQL>select empno, ename,
2 #desc scott.emp --可显示scott.emp的结构,不影响原查询命令继续输入。
2 sal from scott.emp where job='SALESMAN';
10. connect命令(conn):登陆数据库实例,格式如下:
conn[ent] 用户名/密码@网络 [as sysdba/as sysoper]
使用scott用户登录oracle数据库实例,然后切换system用户。
conn scott/tiger
show user;
conn system/ manager
show user;
11. disconnect命令(disc): 断开当前用户的连接,但不退出整个窗口。
SQL> disc
12. password命令(passw):修改用户密码,如果给自己修改密码则可以省略用户名;如果给其他用户修改密码要有权限,例如system和sys用户可以修改别的用户的密码。
SQL> passw scott
13. edit命令:编辑文本
SQL> edit D:\test.sql
14. set命令:设置sqlplus运行环境。格式 set 变量名 变量值
“变量名”原来的取值可以通过“show变量名;”查看。
SQL>set linesize 140; -- linesize控制每行显示多少字符,默认每行80个
SQL>set pagesize 10; -- pagesize控制每页显示多少行,默认14行。
-- 超过该行数,则重新打印表头。
SQL> set time on; --在“SQL>”前面显示当前的系统时间。
SQL> set newpage 1; --设置一页中空行的数量。
举例:
SQL> set newpage 1;
SQL> select empno, ename, sal from scott.emp;
SQL> set newpage 5;
SQL> select empno, ename, sal from scott.emp;
对比上面两个查询结果中空行的改变。
SQL>set pause off; -- off是默认值,返回结果一次性输出完毕,中间每一页不会暂停。
SQL>set pause on; --输出结果的每一页都暂停,用户按回车键后继续显示。
SQL>set pause text; --设置为on后,若再设置text值,则每次暂停都将显示该字符串。
--设置为off后, 设置text值没有任何意义。
举例:
SQL>set pagesize 4;
SQL>set pause on;
SQL>set pause text;
SQL> select empno, ename, sal from scott.emp;
SQL>set pause off;
SQL> select empno, ename, sal from scott.emp;
SQL>set numformat format;
举例:
SQL>select ename, job sal from scott.emp;
SQL>set numformat $999,999,999.00
SQL>select ename, job sal from scott.emp;
15. save命令:将缓冲区中的最后一条sql语句或pl/sql块保存到一个文件中,语法格式:
save 文件名 –如果不指定文件的路径,则保存在oracle系统安装的主目录中
举例:
SQL>select ename, job sal from scott.emp;
SQL> save D:\test.sql
16. get命令:把一个sql脚本文件的内容放进sql缓冲区。语法格式:
get 文件名 [list | nolist]
说明:如果省略了文件的扩展名,则默认文件扩展名为sql。
List:指定文件的内容加载到缓冲区时显示文件的内容。
Nolist:指定文件的内容加载到缓冲区时不显示文件的内容。
举例:
SQL>get D:\test.sql
17. Spool命令:把屏幕上显示的记录保存到文件中。
举例:
SQL>Spool on;
SQL>Spool D:\text.sql
SQL>Select * from scott.emp;
SQL>Spool off;
实验四 Oracle常用系统函数
? 字符函数
1. replace ( 字符串1, 字符串2, 字符串3)
replace ( char, search_string, replace_string)
功能:在“字符串1”中搜索“字符串2”,并将其替换为“字符串3”。
例如下面的命令是将所有员工名字中出现的”A”替换为”中国”。
SQL>select replace(ename, 'A', '中国') from scott.emp;
2. instr(C1, C2, I, J)
功能:在一个字符串中搜索指定的字符,返回发现指定的字符的位置。其中:
C1 被搜索的字符串
C2 希望搜索的字符串
I 搜索开始位置,默认为1
J 第J次出现,默认为1
例如下面的命令是找出”oracle traning” 第二个ra出现的位置。
SQL>Select instr('oracle traing' , 'ra',1,2) from dual;
3. ASCII(单个字符)
功能:返回与指定字符对应的十进制数。
SQL>Select ascii ('A') A, ascii('a') a , ascii (' ') space from dual;
说明:dual是oracle系统内部提供的一个用于临时数据计算的特殊表,它只有一列DUMMY。
4. CHR(整数)
功能:给出整数,返回对应的字符。
SQL>Select chr(54740) zhao, chr(65) char65 from dual;
5. CONCAT(字符串1,字符串2)
功能:连接两个字符串。
Select concat('0532-', '96656') || '拨 0' 崂山矿泉订水 from dual;
Select concat (ename, '是优秀员工') from scott.emp;
该函数和 || 的作用是一样的。
6. INITCAP(字符串)
功能:返回字符串并将字符串的第一个字母变为大写。
Select initcap('smith') upp from dual;
Select initcap(ename) ename from scott.emp;
7. LENGTH(字符串)
功能:返回字符串的长度
例如:查询雇员姓名,姓名字符长度,工资及工资数字长度。
Select ename, length(ename), sal, length(to_char(sal)) from scott.emp;
例如:请查询名字的字符长度为4的雇员
Select * from scott.emp where length(ename) =4;
Select length('李明') from dual; --长度为2,不区分英汉,都占1个字符
说明:
The LENGTH functions return the length of char. LENGTH calculates length using characters as defined by the input character set.
--返回以字符为单位的长度.
LENGTHB uses bytes instead of characters.
--返回以字节为单位的长度.
LENGTHC uses Unicode complete characters.
--返回以Unicode完全字符为单位的长度.
LENGTH2 uses UCS2 code points.
--返回以UCS2代码点为单位的长度.
LENGTH4 uses UCS4 code points.
--返回以UCS4代码点为单位的长度.
下面的例子比较了不同长度计算函数的差异:
Create table S(a char(5), b nchar(5), c varchar(5), d nvarchar2(5));
insert into S values('aa','aa','aa','aa');
insert into S values('你好','你好','你好','你好');
insert into S values('你好!','你好!','你好!','你好!');
select length(a), a, length(b), length(c), length(d) from s;
select lengthb(a),a,lengthb(b),lengthb(c),lengthb(d)from s;
select lengthc(a),a,lengthc(b),lengthc(c),lengthc(d)from s;
8. LOWER(字符串)
功能:返回字符串,并将所有的字符小写。
Select lower('AbBbCcDd') AbBbCcDd from dual;
9. UPPER(字符串)
功能:返回字符串,并将所有的字符大写。
Select upper('AbBbCcDd') AbBbCcDd from dual;
10. SUBSTR(string, start, count)
功能:取子字符串,从start开始,取count个。
Select substr('133********',3,5) from dual;
例如:请把雇员名字首字母小写,其他字母大写。
Select lower(substr(ename,1,1)) || upper(substr(ename,2,length(ename)-1)) from scott.emp;
11. RPAD和LPAD函数
功能:在列的右/左边粘贴字符
例如:显示Page 1要占15个字符,不足的部分左/右边用*.占位。
Select lpad('Page 1',15, '*.') "LPAD example " from dual;
Select Rpad('Page 1',15, '*.') "RPAD example " from dual;
12. LTRIM 和 RTRIM
功能:删除左边/右边出现的字符串
举例如下:
Select ltrim('Qingdao University', 'Q ') from dual;
13. SOUNDEX
功能:返回一个与给定字符串读音相同的字符串
Create table table1(xm varchar(8) );
Insert into table1 values('weather');
Insert into table1 values('wether');
Insert into table1 values('goose')
Select xm from table1 where soundex(xm)=soundex('weather');
14. TRIM('s’ from 'string')
功能:去掉指定字符串前后的某些字符。
例如:
Select trim(0 from 0098123400) "TRIM example " from dual;
15. To_char(datetime, string format)
功能:将日期型转换为字符串。
To_char(number,string format)
功能:将数值转换为字符串
例如:
Select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual;
Select ename,to_char(sal, 'L99G999D99') from scott.emp;
说明:
9:显示数字,并忽略前面0
0:显示数字,如位数不足,则用0补齐
.:在指定位置显示小数点
,:在指定位置显示逗号
$:在数字前加美元
L:在数字前加本地货币符号
C:在数字前加国际货币符号
G:在指定位置显示组分隔符
D:在指定位置显示小数点符号
16. to_number(string)
功能:将给出的字符串转换为数字。
例如:
Select to_number('1999') year from dual;
17. decode函数
功能:相当于一条if语句
举例:
create table student(sno char(2), sex char(1),birthday date)-- 创建学生表
insert into student values('01','M','18-8月-1992'); --添加记录
insert into student values('02','T', '9-5月-1993'); --添加记录
insert into student values('03','F' ,'18-1月-1994'); --添加记录
insert into student values('04',null,'11-8月-1993'); --添加记录
select * from student; -- 查询学生表
/*查询学生的学号和性别信息,如果性别值为M则显示male,性别值为F则显示female,如果为空值则显示unknow,否则则显示invalid*/
select sno,sex,decode(sex, 'M','male','F','female',null,'unknow','invalid')from student;
举例:查询student表,统计1992、1993、1994各年出生的学生人数。
select to_char(trunc(birthday,'year'),'yyyy'),count(*)
from student
where to_char(trunc(birthday,'year'),'yyyy') in ('1994','1993','1992')
group by to_char(trunc(birthday,'year'),'yyyy')
在SQL疑难问题中,decode函数常常发挥非常灵活的作用。其中一个就是为了某种目的将一个表的行转换成列。例如:
select sum(decode(to_char(trunc(birthday,'year'),'yyyy'),'1994',1,0) ) birth_1994,
sum(decode(to_char(trunc(birthday,'year'),'yyyy'),'1993',1,0) ) birth_1993,
sum(decode(to_char(trunc(birthday,'year'),'yyyy'),'1992',1,0) ) birth_1992
from student
where to_char(trunc(birthday,'year'),'yyyy') in ('1994','1993','1992')
18. greatest 函数
功能:返回一组表达式中的最大值,即比较字符的编码大小。
举例:
select greatest('AD','AC','AA') from dual;
19. least函数
功能:返回一组表达式中的最小值,即比较字符的编码大小。
举例:
select least('AD','AC','AA') from dual;
20. uid 函数
功能:返回标识当前用户的唯一整数
举例:
show user
select uid from dual;
select username,user_id from dba_users where user_id=uid;
? 数字函数
1. ABS
功能:取绝对值
Select abs(100),abs(-100) from dual;
2. ACOS
功能:给出反余弦的值
Select acos(-1) from dual;
3. ASIN
功能:给出反正弦的值
Select asin(0.5) from dual;
4. ATAN
功能:返回一个数字的反正切值
Select atan(1) from dual
5. CEIL
功能:返回大于或等于给出数字的最小整数
Select ceil(3.1415926) from dual;
6. COS
功能:返回一个给定数字的余弦
Select cos(-3.14) from dual;
7. EXP
功能:返回一个数字e的n次方
Select exp(2),exp(1) from dual;
8. FLOOR
功能:对给定的数字取整数(舍掉小数位)
Select floor(234.56) from dual;
9. LN
功能:返回一个数字的对数值
Select ln(1), ln(2) from dual;
10. Log(n1, n2)
功能:返回以n1为底的n2的对数
Select log(2,1), log(2,4) from dual;
11. MOD(n1, n2)
功能:返回一个n1除以n2的余数
Select mod(10,3) mod(2,3) from dual;
12. POWER(n1, n2)
功能:返回n1的n2次方
Select power(2,5) from dual;
13. ROUND
功能:按照指定的精度进行舍入(四舍五入)
14. TRUNC
功能:按照指定的精度进行舍入(用于截取,没有指定截取到第几位,默认取整数)。
举例:
Select round(55.5),trunc(55.5),round(-55.5), trunc (-55.5)from dual;
Select trunc(12.345,2), trunk(12.234,-2) from dual;
Select to_char(trunc(sysdate,’hh’),’yyyy.mm.dd hh24:mi:ss’) hh, to_char( trunc(sysdate,’mi’), ’yyyy.mm.dd hh24:mi:ss’) hhmm from dual;
select trunc(sysdate) from dual --2014-3-18 今天的日期为2014-3-18
select trunc(sysdate, 'mm') from dual --2014-3-1 返回当月第一天.
select trunc(sysdate,'yy') from dual --2014-1-1 返回当年第一天
select trunc(sysdate,'dd') from dual --2014-3-18 返回当前年月日
select trunc(sysdate,'yyyy') from dual --2014-1-1 返回当年第一天
select trunc(sysdate,'d') from dual --2014-3-16 (星期天)返回当前星期的第一天
select trunc(sysdate, 'hh') from dual --2014-3-18 14:00:00 当前时间为14:41
select trunc(sysdate, 'mi') from dual --2014-3-18 14:41:00 TRUNC()函数没有秒的精确
15. SIGN
功能:取数字n的符号,大于0返回1,小于0返回-1,等于0返回0
Select sign(12),sign(-10),sign(0) from dual;
16. SQRT(n)
功能:返回数字n的平方根
Select sqrt(64) ,sqrt(10)from dual;
17. avg(distinct | all)
功能:返回平均值
Select avg(sal) from scott.emp;
select avg(sal) from emp;
18. max(distinct | all)
功能:返回最大值
Select max(sal) from scott.emp;
19. min(distinct | all)
功能:返回最小值
Select min (sal) from scott.emp;
20. stddev(distinct | all)
功能:求标准差
Select stddev (sal) from scott.emp;
21. variance(distinct | all)
功能:求协方差
Select variance (sal) from scott.emp;
? 日期函数
1. ADD_MONTHS
功能:增加或减去月份
举例:
Select hiredate, add_months(hiredate,2) from scott.emp;
Select to_char(add_months(to_date('199912', 'yyyymm'),2), 'yyyymm') from dual;
举例:请查询最近三个月入职的员工(把hiredate增加3个月,如果新日期大于当前日期则满足查询要求)
Select * from emp where add_months(hiredate,3)>=sysdate
Select * from emp where hiredate>=add_months(sysdate,-3)
2. LAST_DAY
功能:返回当月日期的最后一天
Select last_day(sysdate) from dual;
3. MONTHS_BETWEEN(date1, date2)
功能:给出date1-date2的月份
举例:
Select months_between (to_date('2013.05.20', 'yyyy.mm.dd'), to_date('2014.04.20', 'yyyy.mm.dd') ) mon_betw from dual;
4. NEW_TIME(date, 'this', 'that')
功能:给出时间date在this’时区对应that’时区的日期和时间
举例:
Select to_char(sysdate, 'yyyy.mm.dd hh24:mi:ss')bj_time, to_char(new_time(sysdate, 'PDT', 'GMT'), 'yyyy.mm.dd hh24:mi:ss') los_angles from dual;
说明:this, that对应的时区及其简写,大西洋标准时间:AST或ADT;阿拉斯加_夏威夷时间:HST或HDT;英国夏令时:BST或BDT;美国山区时间:MST或MDT;美国中央时区:CST或CDT;新大陆标准时间:NST;美国东部时间:EST或EDT;太平洋标准时间:PST或PDT;格林威治标准时间:GMT;Yukou标准时间:YST或YDT。
5. NEXT_DAY(date, 'day')
功能:给出日期date和星期x以后计算下一个星期的日期
Select next_day('18-5月-2013', '星期五') next_day from dual; --下一个星期五是多少号?
6. to_date (string, 'format')
功能:将字符串转换成oracle中的一个日期(format的格式)
注意:插入date列时默认以(日-月-年)格式。
yy:两位数字的年份 2004 ---> 04
yyyy:四位数字的年份 2004年
mm: 两位数字的月份 8月 -- 08
dd: 2位数字的天 30号 -30
hh24: 8点 --- 20
hh12: 8点 ---- 08
mi、ss ----显示分钟\秒
举例:
insert into scott.emp(empno, hiredate)
values(2222,to_date('1988-11-11', 'yyyy-mm-dd'))
实验五 数据库实例的启动与关闭
? 关闭数据库实例
? 步骤:关闭数据库、卸载数据库、关闭Oracle实例
? 4种关闭数据库实例的方式:
1) 正常关闭方式,如果对关闭数据库的时间没有限制,通常会用这种方式来关闭数据库。此时,oracle将执行如下操作:
(1) 阻止任何用户建立新的连接;
(2) 等待当前所有正在连接的用户主动断开连接;
(3) 当所有用户都断开连接后,将立即关闭数据库。
? 语法格式:
Shutdown normal
案例1:
(1) 运行cmd,输入sqlplus/nolog,输入conn / as sysdba;建立连接。
(2) 在sys用户的sqlplus窗口中输入 Shutdown normal,观察窗口变化。
(3) 数据库关闭、数据库卸载、实例关闭。
(4) 在sys用户的sqlplus窗口中输入 startup,重新启动实例和数据库。
案例2:
(1) 运行cmd,输入sqlplus/nolog,输入conn / as sysdba;建立连接。
(2) 运行cmd,输入sqlplus/nolog,输入conn system/abc123;建立连接。
(3) 运行cmd,输入sqlplus/nolog,输入conn scott/abc123;建立连接。
(4) 在sys用户的sqlplus窗口中输入 Shutdown normal,观察窗口变化。(无变化)
(5) 运行cmd,输入sqlplus/nolog,输入conn system/abc123;(无法建立连接,因此数据库正在关闭)
(6) 在system用户的sqlplus窗口中输入exit;
(7) 在scott用户的sqlplus窗口中输入
insert into emp(empno)values(1);
commit;
(8) 在sys用户的sqlplus窗口观察窗口变化。(无变化)
(9) 在scott用户的sqlplus窗口中输入exit;
(10) sys用户登陆的sqlplus窗口,数据库关闭、数据库卸载、实例关闭。(观察任务管理器中oracle.exe内存使用的大小)
(11) 在sys用户的sqlplus窗口中输入 startup,重新启动实例和数据库。(观察任务管理器中oracle.exe内存使用的大小)
2) 事务关闭方式:其首要任务是能够保证当前所有的活动事务都可以被提交,并在尽可能短的时间内关闭数据库。此时,oracle将执行如下操作:
(1) 阻止用户建立新的连接和开始新事务;
(2) 等待所有活动事务提交后,再断开用户连接;
(3) 当所有的活动事务提交完毕,所有的用户都断开连接后,将关闭数据库。
? 语法格式:
Shutdown transactional
案例3:
(1) 运行cmd,输入sqlplus/nolog,输入conn / as sysdba;建立连接。
(2) 运行cmd,输入sqlplus/nolog,输入conn scott/abc123;建立连接。
(3) 在scott用户的sqlplus窗口中输入
insert into emp(empno)values(2);
(4) 在sys用户的sqlplus窗口中输入 Shutdown transactional,观察窗口变化。(无变化)
(5) 运行cmd,输入sqlplus/nolog,输入conn system/abc123;(无法建立连接,因此数据库正在关闭)
(6) 在scott用户的sqlplus窗口中输入 commit;
(7) sys用户登陆的sqlplus窗口,数据库关闭、数据库卸载、实例关闭;
(8) 在sys用户的sqlplus窗口中输入 startup,重新启动实例和数据库。
3) 立即关闭方式:该方式能够在尽可能短的时间内关闭数据库。此时,oracle将执行如下操作:
(1) 阻止用户建立新的连接和开始新事务;
(2) 将未提交的活动事务回退;
(3) 关闭数据库。
? 语法格式:
Shutdown immediate
案例4:
(1) 运行cmd,输入sqlplus/nolog,输入conn / as sysdba;建立连接。
(2) 运行cmd,输入sqlplus/nolog,输入conn scott/abc123;建立连接。
(3) 在scott用户的sqlplus窗口中输入
insert into emp(empno)values(3);
commit;
insert into emp(empno)values(4);
select * from emp;
(4) 在sys用户的sqlplus窗口中输入 Shutdown immediate,此时,数据库关闭、数据库卸载、实例关闭。
(5) 在sys用户的sqlplus窗口中输入 startup,重新启动实例和数据库。
(6) 在sys用户的sqlplus窗口中输入exit, 输入sqlplus/nolog,输入 conn scott/abc123;建立连接。输入select * from emp查看表中记录。
4) 终止关闭方式:具有一定的强制性和破坏性。这种方式会强制中断任何数据库操作,这样可能会丢失一部分数据信息,影响数据库的完整性。除了由于使用其他3种方式无法关闭数据库而使用它之外,应该尽量避免使用这种方式。此时,oracle将执行如下操作:
(1) 阻止用户建立新的连接和开始新事务;
(2) 取消未提交的活动事务,而不是回退;
(3) 立即终止正在执行的任何sql语句;
(4) 立即关闭数据库。
? 语法格式:
Shutdown abort
说明:此方式相当于突然断电,不经过数据库关闭和卸载两个阶段,直接关闭实例。可能出现以下两种情况:
(1) 已提交是事务数据,可能还在缓存中,没来及写到磁盘上;
(2) 未提交的长事务,数据已经写入磁盘。
因此,下一次启动数据库时必须进行实例恢复。
? 启动数据库实例
? 步骤:启动实例、加载数据库、打开数据库
? 4种启动模式:
1) NOMOUNT模式:该启动模式只会创建实例(创建oracle实例的各种内存结构和服务进程),并不加载数据库,也不会打开任何数据文件。主要是从参数文件中读取实例的一些基本信息,如启动的进程、分配的内存等。同时,还要从参数文件中读取一个更重要的信息,就是控制文件的地址信息。要以sysdba身份登录才具有关闭和启动数据库实例的权限。
? 语法格式:
Startup nomount
案例5:
(1) 运行cmd,输入sqlplus/nolog,输入conn / as sysdba;建立连接。
(2) 输入shutdown immediate;
(3) 待数据库实例关闭后,输入Startup nomount。
说明:通常在创建新数据库或重建控制文件时,使用nomount模式启动数据库实例。
2) MOUNT模式:该模式将启动实例、加载数据库并保持数据库的关闭状态。从控制文件中得到数据文件和联机日志文件地址后,从数据文件和联机日志文件中读取状态信息,并判断各状态信息的一致性。如果出现不一致的情况,需要进行恢复操作,包括实例恢复和介质恢复两种。
(1) 实例恢复:由于突然断电而导致系统不能一致关闭,再次重启数据库后,需要进行的恢复。系统可以自动进行,不需要dba介入。
(2) 介质恢复:数据库存储介质发生损坏,从而导致文件损坏而需要进行的恢复。
? 语法格式:
Startup mount
案例6:
(1) 运行cmd,输入sqlplus/nolog,输入conn / as sysdba;建立连接。
(2) 输入shutdown immediate;
(3) 待数据库实例关闭后,输入Startup mount。
案例7:
(1) 运行cmd,输入sqlplus/nolog,输入conn / as sysdba;建立连接。
(2) 输入shutdown immediate;
(3) 待数据库实例关闭后,输入Startup nomount。
(4) 再输入alter database mount。
说明:通常在进行数据库维护时使用。例如:执行数据库完全恢复操作、更改数据库的归档模式等。
3) OPEN模式:该模式将启动实例、加载并打开数据库。这是常规的启动模式,用户想对数据库进行多种操作,就必须使用open模式启动数据库实例。
? 语法格式:
Startup
案例8:
(1) 运行cmd,输入sqlplus/nolog,输入conn / as sysdba;建立连接。
(2) 输入shutdown immediate;
(3) 待数据库实例关闭后,输入Startup。
案例9:
(1) 运行cmd,输入sqlplus/nolog,输入conn / as sysdba;建立连接。
(2) 输入shutdown immediate;
(3) 待数据库实例关闭后,输入Startup nomount。
(4) 再输入alter database mount。
(5) 再输入alter database open。
案例10:
(1) 运行cmd,输入sqlplus/nolog,输入conn / as sysdba;建立连接。
(2) 输入shutdown immediate;
(3) 待数据库实例关闭后,输入Startup mount。
(4) 再输入alter database open。
4) FORCE模式:该模式将终止实例并重新启动数据库,这种启动模式具有一定的强制性。例如,在其他启动模式失效时,可以尝试使用这种启动模式。
? 语法格式:
Startup force
实验六 Oracle表空间管理
Oracle磁盘管理中的最高逻辑层是表空间,Oracle11g中必须创建的4个表空间是SYSTEM, SYSAUX, TEMP, UNDOTBS1。
? SYSTEM:存储数据字典等,pl/sql代码等。
? SYSAUX:存储与数据库选项相关的数据
? TEMP:用于大的排序操作
? UNDUTBS1:为读一致性和恢复的目的,存储事务信息。
表空间的下一层是段,一个段只能驻留在一个表空间中;一个或多个区可以组成一个段,每个区只能驻留在一个数据文件中;一组连续的数据块可以组成一个区。如果要查询表空间与对应的数据文件的相关信息,可以从dba_data_files数据字典中查询表空间及其包含的数据文件,举例如下:
SQL> col tablespace_name for a10;
SQL> col file_name for a50;
SQL> col bytes for 999,999,999;
SQL>Select tablespace_name,file_name, bytes from dba_data_files order by tablespace_name;
1、 SYSTEM表空间
SYSTEM表空间存放内部数据和数据字典,主要存放SYS用户的各个对象和其他用户的少量对象。例如:查询USERS表空间中存放的数据对象及其类型和拥有者。
SQL>col owner for a10;
SQL>col segment_name for a30;
SQL>col segment_type for a20;
SQL>select segment_type,segment_name,owner from dba_segments where tablespace_name='USERS';
2、 SYSAUX表空间
SYSAUX表空间充当SYSTEM表空间的辅助表空间,主要用于存储除数据字典以外的其他数据对象。例如,查询SYSAUX表空间所存放的用户及其所拥有的对象数量:
Select owner as 用户, count(segment_name) as 对象数量 from dba_segments where tablespace_name='SYSAUX' group by owner;
3、 创建表空间
创建表空间的语法如下:
Create [smallfile | bigfile] tablespace tablespace_name
Datafile '/path/filename' size num[k|m] reuse
['/path/filename' size num[k|m] reuse]
[, …]
[autoextend [on|off] next ] num[k|m]
[maxsize [unlimited | num[k|m]]]
[mininum extent num[k|m]]
[default storage storage]
[online | offline]
[logging | nologging]
[permanent | temporary]
[extent management dictionary | local [autoallocate | uniform size num[k|m]]];
说明:
? smallfile | bigfile:表示创建的是小文件表空间还是大文件表空间
? autoextend [on|off] next:表示数据文件为自动扩展或非自动扩展,如为自动扩展则需要设置next的值。
? maxsize:表示数据文件自动扩展时,允许数据文件扩展的最大长度字节数,如果指定unlimited关键字,则不需要指定字节长度。
? minimum extent:指出在表空间的extent的最小值,这个参数可以减少空间碎片,保证在表空间的extent是这个数值的整数倍。
? online | offline:创建表空间时可以指定为在线或离线。
? permanent | temporary:指定创建表空间是永久表空间或临时表空间。默认为永久表空间。
? logging | nologging:指定该表空间内的表在加载数据时是否产生日志,默认为产生日志,即使设定为nologging,但在进行insert,update,delete操作时,oracle仍会将信息记录到redo log buffer中。
? extent management dictionary | local:指定表空间的扩展方式是使用数据字典管理还是本地化管理。默认为本地化管理。
? autoallocate | uniform size:如果采用本地化管理,在表空间扩展时,指定每次区的扩展大小是系统自动指定还是按照同等大小进行。如果设定uniform关键字,默认扩展大小为1MB。
? reuse:表示如果该文件存在,则清除该文件再重建该文件;若文件不存在,则创建该文件。
? default storage:设定以后要创建的表、索引、簇的存储参数值。
4、 删除表空间
? 删除表空间,但是不删除其内容及物理文件。
drop tablespace tablespace_name;
? 删除表空间及其内容。
drop tablespace tablespace_name including contents;
? 删除表空间,并删除其物理文件。
drop tablespace tablespace_name including contents and datafiles;
? 如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
5、 创建临时表空间
? 举例:
Create temporary tablespace temp1
tempfile 'E:\ temp01.dbf' size 5M autoextend on next 128k maxsize 1000m,
'E:\ temp 02.dbf' size 5M autoextend on next 128k maxsize 1000m;
6、 Oracle 11g 新特性:deferred_segment_creation
deferred_segment_creation,从字面理解含义是段延迟创建,该参数取值范围是true和false,默认是true。具体是如果deferred_segment_creation为true,当新建表并且没有向其中插入数据的时候,这个表不会立即分配extent,即不占数据空间,只有insert数据后才分配空间,这样做可以节省少量的空间。如果deferred_segment_creation为false,那就和之前版本创建表一样,创建时即分配extent。
查看deferred_segment_creation的取值的语句如下:
SQL> show parameter DEFERRED_SEGMENT_CREATION
修改deferred_segment_creation取值的语句如下:
SQL> alter system set deferred_segment_creation=false;
或
alter session set deferred_segment_creation=false;
注意: This new feature in not applicable to SYS and the SYSTEM users as the segment to the table is created along with the table creation.
7、 案例(deferred_segment_creation为true)
? 创建表空间,然后删除该表空间。
Create tablespace exampletb
Datafile 'E:\ examp01.dbf' size 5M autoextend on next 128k maxsize 1000m,
'E:\ examp02.dbf' size 5M autoextend on next 128k maxsize 1000m;
说明:以上例子创建的表空间由examp01.dbf和examp02.dbf两个文件组成。创建完成后,可以发现在相应路径下增加了2个文件。
备注:Linux中语句
Create tablespace exampletb Datafile 'u01\ examp01.dbf' size 5M;
drop tablespace exampletb;
? 创建表空间和表,然后删除该表空间。
Create tablespace exampletb
Datafile 'E:\ examp01.dbf' size 5M reuse autoextend on next 128k maxsize 1000m,
'E:\ examp02.dbf' size 5M reuse autoextend on next 128k maxsize 1000m;
create table scott.student
(
id number,
name VARCHAR2(10)
)tablespace exampletb;
select segment_name, BYTES, BLOCKS, EXTENTS from user_segments where segment_name='STUDENT'; -- scott用户可执行该查询,sys用户查不到。
select segment_name, segment_type from dba_segments where segment_name ='STUDENT' AND OWNER='SCOTT';
--用来确认未创建segment
drop tablespace exampletb;
? 创建表空间和表,并向表中插入记录,然后删除该表空间。
Create tablespace exampletb
Datafile 'E:\ examp01.dbf' size 5M reuse autoextend on next 128k maxsize 1000m,
'E:\ examp02.dbf' size 5M reuse autoextend on next 128k maxsize 1000m;
create table scott.student
(
id number,
name VARCHAR2(10)
)tablespace exampletb;
Insert into scott.student values(1,'lucy');
select segment_name, BYTES, BLOCKS, EXTENTS from user_segments where segment_name='STUDENT'; -- scott用户可执行该查询,sys用户查不到。
select segment_name, segment_type from dba_segments where segment_name ='STUDENT' AND OWNER='SCOTT';
--用来确认创建segment
说明:向student表插入数据时,数据将存储在表空间exampletb中,而exampletb表空间拥有一个或多个数据文件,所以student数据最终存储到examp01和examp02的数据文件中。
drop tablespace exampletb including contents;
? 创建表空间,然后删除该表空间及数据文件。
Create tablespace exampletb
Datafile 'E:\ examp01.dbf' size 5M reuse autoextend on next 128k maxsize 1000m,
'E:\ examp02.dbf' size 5M reuse autoextend on next 128k maxsize 1000m;
drop tablespace exampletb including contents and datafiles;
说明:如果drop tablespace语句中含有datafiles,那datafiles之前必须有contents关键字,不然会提示错误。
? 创建两个表空间,分别在其中创建主码表和外码表,然后删除包含主码表的表空间及数据文件。
Create tablespace exampletb1
Datafile 'E:\ examp01.dbf' size 5M autoextend on next 128k maxsize 1000m;
Create tablespace exampletb2
Datafile 'E:\ examp02.dbf' size 5M autoextend on next 128k maxsize 1000m;
create table test1(mobile number(13) primary key) tablespace exampletb1;
create table test2(mobile number(13) references test1(mobile)) tablespace exampletb2;
drop tablespace exampletb1 including contents and datafiles cascade constraints;
8、 案例(deferred_segment_creation为false)
? 创建表空间,然后删除该表空间。
Create tablespace exampletb
Datafile 'E:\ examp01.dbf' size 5M autoextend on next 128k maxsize 1000m,
'E:\ examp02.dbf' size 5M autoextend on next 128k maxsize 1000m;
说明:以上例子创建的表空间由examp01.dbf和examp02.dbf两个文件组成。创建完成后,可以发现在相应路径下增加了2个文件。
drop tablespace exampletb;
? 创建表空间和表,然后删除该表空间。
Create tablespace exampletb
Datafile 'E:\ examp01.dbf' size 5M reuse autoextend on next 128k maxsize 1000m,
'E:\ examp02.dbf' size 5M reuse autoextend on next 128k maxsize 1000m;
create table scott.student
(
id number,
name VARCHAR2(10)
)tablespace exampletb;
select segment_name, BYTES, BLOCKS, EXTENTS from user_segments where segment_name='STUDENT'; -- scott用户可执行该查询,sys用户查不到。
select segment_name, segment_type from dba_segments where segment_name ='STUDENT' AND OWNER='SCOTT';
--用来确认创建segment
drop tablespace exampletb including contents;
实验七 Oracle数据设计
1 目的
本规范的主要目的是希望规范数据库设计,尽量提前避免由于数据库设计不当而产生的麻烦;同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很好的保证。
数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。
2 适用范围
本规范的适用人员范围包括我司的所有应用开发人员以及在我司承接数据库应用开发的软件人员。
本规范的适用IT范围包括数据库对象的命名规范、设计原则、SQL语句的设计和使用、SQL语句的性能优化建议、其他与性能有关的设计原则以及设计工具的选择。
3 数据对象的命名规范
3.1 通用规范
3.1.1 使用英文:要用简单明了的英文单词,不要用拼音,特别是拼音缩写。主要目的很明确,让人容易明白这个对象是做什么用的;
3.1.2 一律大写,特别是表名:有些数据库,表的命名乃至其他数据对象的命名是大小写敏感的,为了避免不必要的麻烦,并且尊重通常的习惯,最好一律用大写;
3.2 数据库对象命名规范
3.2.1 表的命名
3.2.1.1 表名的前缀:前缀_表名_T。为表的名称增加一个或者多个前缀,前缀名不要太长,可以用缩写,最好用下划线与后面的单词分开;其目的有这样几个:
3.2.1.1.1 为了不与其他项目或者其他系统、子系统的表重名;
3.2.1.1.2 表示某种从属关系,比如表明是属于某个子系统、某个模块或者某个项目等等。表示这种从属关系的一个主要目的是,从表名能够大概知道如何去找相关的人员。比如以子系统为前缀的,当看到这个表的时候,就知道有问题可以去找该子系统的开发和使用人员;