haiross 2020-01-04
1、新建数据库实例
ORA-OO922:选项缺失或无效;用户名和密码设置不合规,当时不会报错,安装时就会出现这个错误
标识符命名规则:
1、必须以字母开始。
2、长度不能超过30个单字节字符。
3、只能包括A-Z,a-z,0-9,_,$和#。
4、不能在相同用户下建立两个同名的对象。
5、不能使用保留字和关键字
在同一台机器上,可以同时启动多个数据库实例。
SQL语句分类: DML数据操作语句(insert,update,delete);DDL 数据定交语句(create table,drop table),DQL数据查询语句(select),DCL数据控制语句(commit,rollback)
桥连接:
oracle也提供jdbc-odbc桥连
配置数据源。管理工具——数据源
数据行迁移
create table temp# as select empno,ename from emp where ename like ‘S%‘
一起更新多行 如:update emp set (sal,comm) =(select sal ,comm from emp where ename =‘smith‘);
2、函数
注:在oracle中,字符串常量只能用单引号。
ASCII :返回与指定字符对应的十进制数;//select ascii(‘a‘) a,ascii(‘b‘) b, ascii(dummy) from dual;
CHR:给出整数,返回对应的字符: //select CHR(54740) M,ascii(65) A, ascii(dummy) from dual;
connect:该函数的作用和||的作用是相同的,拼接 //SELECT CONCAT (ENAME,‘IS BEST ONE‘) FROM EMP; select (ename || “IS BEST ONE) FROM EMP;
ititcap:返回字符串并将第一个字母大小;
instr(C1,C2,I,J) :在一个字符串中搜索指定的字符,返回发现指定的字符位置;C1 被搜索的字符串,c2希望搜索的字符串,i 搜索开始位置,默认为1 , j 第几次出现的位置,默认为1
length:返回字符串的长度,可以用在where语句里面。汉字在统计的时候也是1个长度。
lower/upper:返回字符串,并将所有的字条小写\大写
substr(string, start,length):截取一段字符,start 是开始位置,第一个字符的索引是1,length是长度。
lpad是左填充,rpad是右填充: ,RPAD(‘gao,’10,“*”)不够的字符用*号来填充。
ltrim/rtrim/trim: 删除左边/右边/左右两边符合条件的的字符。如:rtrim(‘GAJIANDFAAAA‘,‘A‘) 结果‘GAJIANDF’。select trim( ‘a‘ from ‘aaabbbaacccaaa‘) from emp; //结理返回‘bbbaaccc‘
replace(‘string’,‘s1’,‘s2’) string希望被替换的字符或变量;s1被替换的字符串;s2要替换的字符串。
soundex:读音相当的。如 where soundex(ename)=soundex(‘smith’);
abs:绝对值
ceil:返回大于或等于给出数字的最小整数,向上取整 //ceil(3.1415926) 得4
floor:对给定的数字取整数,向下取整//ceil(3.999415926) 得3
mod(n1,n2):返回n1除以n2余数。mod(5,2) 得1
round和trunc:按照指定的精度进行舍入,round是四设五入。trunc(num,精度)是按精度截取数据,如果没有指定精度默认截取整数。// trunc(56,-1) 结果返回50
exp(n):返回一个数字e的n次方根
add_months(column,n):增加n个月
sysdate:获取系统时间 //select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss‘) from dual;
last_day:返回当前月份的最后一天 //select last_day(sysdate) from dual;
months_between(date1,data2) :计算两个时间相差多少个月
new_time(date,‘this‘,‘other‘):给出在this时区=other时区的日期和时间
next_day(date,’星期X‘):给出日期date后的下一个星期x的日期 // select next_day(sysdate,‘星期五‘)from dual;
chartorowid:将字会数据类型转换成rowid类型;//select rowid,rowidtochar(rowid),ename from emp;
convert(c,dset,sset): 将源字符串sset从一个语言字符集转换成另一个目的的dset字符集 //select convert(‘:+‘,‘we8hp‘,‘f7dec‘) "conversion" from dual;
hextoram (‘char‘):将一个十六进制转换成二进制;
to_char(date,‘format‘):将字符串转换成指字的字符串,日期格式可以指定显示如to_char(hiredate,‘yyyy) 得1990;to_char(sal,‘L99G999D99‘) 得 ¥1,250.00。
9:显示数字,并忽略前0 0:显示数字,如位数不足,则用0补齐 .:在指定位置显示小数点 ,:在指定位置显示逗号 L:在数字前加本地的货币符号 C:在数字前面加国际货币符号 G:在指定位置显示组分隔符 D:在指定位置显示小数点符号(.) | yy:两位数据的年份2004——>04 yyyy:四位数据的年份 2004年 mm:两位数字的月份 8月——>08 dd:2位数据的天 30号——>30 hh24:8点——>20 hh12:8点——>08 mi、ss——>显示分/秒
|
to_multi_byte:将字符串中的单字节字符转化为多字节字符
to_number:将给出的字符转换成数字
bfilename(dir,file):指定的一个外部二进制文件(blob);
convert(‘x‘,‘desc‘,‘source‘):将x字段或变量的源source转换成desc;
decode:相当于一个swith语句;//select decode(deptno,10,‘10号‘,20,‘20号‘,30,‘30号‘) from emp;
greatest/( char1,char2,char3): 返回一组数据中较大的数据
UID: 相当于show user; //select user/UID dual;
AVG(distinct|ALL column):平均值.ALL 表示对所有的值求平均值,distict只对不同的值求平均值 。
distinct:过滤掉重复的值
max/min:最大/小值
sys_context(‘userenv‘,‘syschar‘ ) :oracl提供了一套系统的相关信息 //select sys_context("userenv","db_name") from dual;
terminal:当前会话客户所对应的终端标识符
language:语言
db_name:当前数据库名称
nls_date_format:当前会话客户所对应的日期格式
session_user:当前会话客户所对应的数据库用户名
current_schema:当前会话客户所对应的默认方案名
host:返回数据库所在主机的名称
3.事务transaction
数据库把一系列的对数据的操作(dml)看做一个整体,要么全部成功,要么全部失败,这样的现象就是事务现象。事务具有原子性。
事务和锁,当执行事务操作时(dml语句)
事务的提交commit()事务先设置成不自动提交
保存点:savepoint();保存点只有一次回退的机会,如果回退过一次后保存点就自动消失了。在一个事务中可以保存多个保存点,可以使用rollback to 回退到任意一个保存点。设置保存点是有资源开销的,一旦提交了事务,刚不能回退到任何一个保存点。
事务的隔离级别:隔离级别定义了事务与事务之间的隔离程度。ANSI/ISO SQL92标准定义了一些数据库操作的隔离级别(这是国际标准化组织定义的一个标准而已,不同的数据库在产现是有所不同。
隔离级别 | 脏读 | 不可重复读 | 幻读 | 说明 |
读未提交(read uncommitted) | 可能 | 可能 | 可能 | |
读已提交(read committed) 默认 | 不会 | 可能 | 可能 | |
可重复读(repeatable read) | 不会 | 不会 | 可能 | |
可串行化(serializable) | 不会 | 不会 | 不会 |
4.oracle中事务处理——事务隔离级别
oracle提供了SQL92标准中的 read committed和serializable,同时提供了非SQL92标准的read-only
oracle的read committed说明:
oracle的serializable说明:
5.oracle数据的完整性
在oracle中,数据完整性可以使用约束、触发器、应用程序(过程、函数)三种方法来实现,在这三种方法中,因为约束易于维护,并且具有最好的性能,所以作为维护数据完整性的首选。
约束
not null (非空)
unique(唯一):不能重复,可以为空(null或‘’),允许两个以上的空(null或‘’)
primary key(主键):不能重复,也不可为空
primary key和unique的区别:
foreign key(外键)
check(检查)
create table user1(id number,sal number check(sal>=1000 and sql<=2000) , sex char(2) check in (‘男‘ , ‘女‘) default ‘男‘ );