您的位置:首页 > 数据库 > Oracle

学习笔记之Oracle(简单应用)

2014-12-02 16:53 459 查看
Oracle
1. Oracle数据库的数据类型:

a)  Char:定长,浪费空间,但是速度快

b)  varchar(长度)

c)  clob

d)  number(长度)

e)  date:默认格式为‘dd-mm月-yy’,可以用命令修改,临时有效:

altersession set nls_date_format=‘yyyy-mm-dd’

f)  timestamp:比date更精确

g)  blob:二进制格式的数据,如:图片、音乐、视频

2. 表的管理:

a)  创建表:create table 表名(列名 数据类型,....):还可以用查询的结果创建表:create table
表名(列名,列名,...)as select 字段名,字段名,...from 表名;

b)  添加字段:alter table 表名add(字段名 数据类型)

c)  改变字段:alter table 表名modify(字段名 数据类型)

d)  删除字段:alter table 表名drop colum 字段名

e)  重命名表:rename 表名 to 新表名

f)  删除表:drop table 表名

3. 数据管理:

a)   插入数据:insertinto 表名 values(数据,数据,....):还可以用查询的结果进行批量插入数据:insertinto
表名(字段名,字段名,...) select语句;

b)  插入空值:insert into 表名values(数据,null,....)

c)  查询空值:select * from 表名where 字段名 is null

d)  查询非空值:select * from 表名where 字段名 is not null

e)   修改某些字段:update表名 set 字段名=数据,字段名=数据,...where 条件:还可以用查询的结果进行更新数据:update表名 set(字段名,字段名,...)=(select语句) where 条件

f)  删除数据:

①. delete from 表名;(删除所有数据,如果删数据之前通过命令‘savapoint 保存点名称’设置了保存点,然后可以通过命令‘rollback to 保存点名称’)

②. truncate table 表名;(数据不可恢复,速度快)

4. 表查询:

a)  查看表结构:desc 表名;

b)  去重复行查询:select distinct 列名 from 表名;

c)  取别名:select 字段名表达式 “别名”,字段名,... from 表名;

d)  处理结果中的null值:使用函数nvl(字段名,为null时默认值)

e)  like的使用:like 'XXX' %-匹配多个字符,_-匹配单个字符

f)  in的使用:in (XXX,XXX,xXX)

g)  多个条件之间用and、or连接

h)  order by的使用:order by 字段名 desc(降序)/asc(升序)

i)  to_date()函数的使用

j)  max(),min(),av g(),count(),sum()分组函数的使用

k)  group by...having的使用:group by 字段名,字段名;(可以根据多个字段进行分组)

l)  between...and的使用:字段名 between XXX and XXX;

m)  all的使用:字段名 > all(sql语句)(效率低,一般可以用max()函数替换)

n)  any的使用:字段名 > any(sql语句)(效率低,一般可以用min()函数替换)

o)  多值匹配:(字段名,字段名,...)=(sql子句)

p)  可将查询结果看做一张子表(嵌套视图),并必须取别名:select 字段名、字段名、.... from 表名 a1,(select语句)a2 where 条件语句;

   

q)  总结:

①. 分组函数只能出现在选择列表、having子句、order by子句中

②. 如果在select语句中同时用到groupby、having、order by,那么他们出现的顺序是group by、having、orderby

③. 在选择列中有字段名、表达式、分组函数,那么这些字段和表达式必须有一个出现在group by子句中,否则报错

5. oracle分页(比其他数据库复杂):

a)  rownum的使用:select * from (select a1.*,rownum rn from 表名 a1 where rownum<21) where rn>10;(每页显示10条数据,第二页)

        如果要排序的话,将最里层的"表名"换成一个“嵌套视图”:select * from (select a1.*,rownum rn from (select * from 表名 order by 字段名) a1 where rownum<21) wherern>10;

b)  另外可以用rowid和分析函数实现分页,不过难以理解。

6. 合并查询结果(oracle特有的):

a)  取并集:select语句 unionselect语句

b)  取两个结果的和: select语句 union all select语句

c)  取交集:select语句 intersectselect语句

d)  取差集:select语句 minusselect语句

7. 创建数据库:

    一般使用oracle提供的工具创建数据

8. oracle的事务:

a)  设置保存点:savapoint 保存点名称;

b)  回退事务:rollback to 保存点名称;

c)  提交事务:commit;

d)  取消所有事务:rollback;

9. 只读事务:

    set transaction readonly;

10.    sql函数:

a)  字符函数:

①. lower(字符串):变小写

②. upper(字符串):变大写

③. length(字符串):求长度

④. substr(字符串,起始点,截取长度):截取

⑤. replace(原字符串,被替换部分,替换部分)

b)  数学函数:

        cos,cosh,exp,ln,log,sin,sinh,sqrt,tan,tanh,acos,asin,atan,round...

①. round(n,[m]): 四舍五入

②. trunc(n,[m]):截取数字

③. mod(m,n):取模运算

④. floor(m):<=m的整数

⑤. ceil(m):>=m的整数

c)  日期函数:

        oracle
默认的时间的格式“DD-MM月-YY”

①. sysdate:select sysdate from daul;(返回系统的时间)

②. add_months(d,n):在d的基础上加n年

③. last_day(d):返回指定日期所在月的最后一天

d)  转换函数:

①. to_char:将日期格式化时常用到(to_char(sysdate,'yyyy-mm-ddhh24:mi:ss')),或者加货币单位时(to_char(sal,'L99999.99'))

            9 显示数字,并忽略O

            0 显示数字,不足补0

            $ 在数字前加美元符号

            L 在数字前加本地货币符号

            C 在数字前加国际货币符号

            G 在指定位置显示组分隔符

            D 显示小数点

②. to_date:

e)  系统函数:

①. sys_context('userenv',?):

②. terminal:当前回话的终端的标示符

③. language:语言

④. db_name:数据库的名称

⑤. nls_date_format:当前客户的日期格式

⑥. session_user:当前的会话的数据库用户名

⑦. current_schema:方案名

⑧. host:主机名

11.    oracle的约束:

a)  not null:alter table 表名 modify字段名 not null;

b)  unique:alter table 表名 add constraint 约束名 unique(字段名);

c)  primary key

d)  foreign key

e)  check: alter table 表名 add constraint 约束名check(字段名 in('XXX','XXX'));

f)  删除约束:alter table 表名drop constraint 约束名; (删除主键时,altertable 表名 drop primary key cascade)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: