最近一直在学习oracle,总结了一些学习笔记,我会陆续贴出来,和网友交流 ,希望能给一些初学者提供帮肋,也希望能有高手指点。
oracle数据库逻辑结构
包括 表空间,段,区间和数据块
表空间:所有的表的集合,分为System系统表空间,Users用户表空间,Temp临时表空间,tools工具表空间
段:把表空间进一步划分成段,不同的段存放的数据不同,如,数据段,临时段,回滚段,索引段等
区间:将段进一步划分成区间,区间是分配单元,对数据进行分配
块:区间中又划分成块,
从逻辑上讲,一个数据库由若干个表空间组成,每个表空间中有若干个表,每个表又可以分为数据库段(Data Segment)和索引段,每个段中
又可以分为若干个数据库区间(Extent),每个数据区间由若干个数据块组成。由此可见,数据块是最基本的存储单位,而表空间,表,段,区
间以及模式对象则是逻辑组织的构成成员
------------------
SQL语言的命令通常分为四类
1、数据定义语言(DDL)
创建、修改或删除数据库中各种对象,包括表、视图、索引等。
命令:CREATE TABLE , CREATE VIEW, CREATE INDEX、ALTER TABLE ,
DROP TABLE , DROP VIEW, DROP INDEX
2、查询语言(QL)
按照指定的组合、条件表达式或排序检索已存在的数据库中数据,
不改变数据库中数据。
命令:SELECT…FROM…WHERE…
3、数据操纵语言(DML)
对已经存在的数据库进行元组的插入、删除、修改等操作
命令:INSERT、UPDATE、DELETE
4、数据控制语言(DCL)
用来授予或收回访问数据库的某种特权、
控制数据操纵事务的发生时间及效果、对数据库进行监视
命令:GRANT、REVOKE、COMMIT、ROLLBACK
-----------------------------------
用户名scott/tiger 可进行式例数据库的操作
-----------------------------------
select table_name from user_tables; 查看有那些用户表
(最后的分号是结束并执行)
-----------------------------------
修改用户密码
在dos下输入D:/>sqlplus /nolog
conn / as sysdba
show user;
alter user sys identified by oracle;
最后这条语句是修改sys账户的密码为oracle
insert into aa(id,name,birthday)
values (01,'lily',SYSDATE);
SYSDATE 当前系统时间日期函数,oracle中函数中如果没有参数,后面的括号可省略
-----------------
insert into aa(id,name,birthday)
values (01,'lily',TO_DATE('2006-5-6','yyyy-MON-DD'));
TO_DATE('日期的字符串','日期时间的格式') 添加指定日期字段,必须用这个日期转换函数
-----------------
set linesize 500 设置行宽度为500
set pagesize 100 设置每页显示100行
run 执行刚才最后执行的sql语句 (可简写为r或/)
alter session set nls_date_format='YYYY-MM-DD';
修改会话,使表中存储日期的格式是 YYYY-MM-DD
desc 表名 :查看表结构
ed: 如果用户输入sql语句有错误,可以输入ed打开一个afiedt.buf文件,里面存放着上一回输入的sql语句
修改后,输入/可重复执行刚才改过的sql语句
------------------
使用绑定变量,给数据库中插入多个记录
insert into aa(id,name,sal)
values (&employeeno,'&employeename',&employeesal);
回车后会提示给这三个变量输入值
然后用run或r或/可重复执行给表中插入记录的操作
-----------------------------------
从其它表中复制数据
insert into aa(id,name,address)
select id,name,address
from bb where address='jl';
----------------------------------
更新
update aa set name='zhangsan' where address='jl';
----------------------------------
clear screen 清屏
----------------------------------
commit; 提交事务
rollback; 回滚事务
当第一条sql(DML:数据操纵语言)语句被执行时,事务便开始了
当出现下面的事件时,事务便结束:
-commit or rollback被执行时,把前面的事务提交,事务结束
-DDL(数据定义语言) or DCL(数据控制语言) 被执行时(自动提交)
-用户退出
-系统中止
事务保存点:可以有选择的返回到事返的某个保存点
比如,执行一条sql语句, update......
savapoint 事务保存点名1
执行其它sql语句
rollback to 事务保存点名1 (回滚到“事务保存点名1”)
----------------------------------
null值在算术表达式中的使用
如果在查询中,进行运算时,在运算中的字段有空值,它的结果为空
select id,name, sal*10+comm form s
这里假如某人的comm字段的值为空,它运算的结果就为空
解决办法是这种运算用函数去做
------------------
select id||''||name as employees form emp
这里的||和sqlserver中的+一样,字符串连接符,功能是两个字段连接在一起
------------------------------------
select * from s where name='AA';
这里的where中的查询条件的内容必须为大写,不然找不到任何结果
select name address sal from aa where sal between 1000 and 1500;
select name address sal from aa where sal in(1000,1200,1500);
select name address sal from aa where name like 'Z%'; (%代表多个字符)
select name address sal from aa where name like 'Z_'; (_代表一个任意字符)
select name address sal from aa where address is null; (显示所有address为空的记录)
限制重复行
select distinct name from aa;