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

ORACLE基础知识

2013-06-13 20:02 239 查看
ORACLE基础知识
一:oracle数据库的链接与退出:

#sqlplus /nolog    连接数据库,但没有使用账号登录
>conn oracleuser/123456    使用oracleuser用户登录
#sqlplus / as sysdba    以数据库管理员的身份登录
>disconnect        退出当前用户
>exit            退出数据库

二:创建用户、赋权、创建表空间:
SQL> create tablespace TBspace datafile '/root/TBspace.dbf' size 30m;
创建表空间TBspace,大小30m,位置/root/TBspace.dbf。

SQL> create temporary tablespace TMPTBspace tempfile '/root/TBspace.dbf' size 30m;
创建临时表间。临时表空间的主要用途是在数据库进行排序运算、管理索引、访问试图等操作时提供临时的运算空间,当运算完成之后系统会自动清理临时表空间。

>create user USER identified by 123456 default tablespace TBspace|temporary tablespace TMPTBspace;
创建用户USER,密码123456,表空间为TBspace(或临时表空间为TMPTBspace)

SQL>drop user USER;                删除用户USER
SQL>grant connect dba to USER;      向USER用户赋予连接和管理员角色
SQL>select * from all_user;        查看所有用户
SQL>select * from all_sys_privs;    查看所有系统权限
SQL>select * from all_tab_privs;    查看所有对象权限
SQL>select * from dba_roles;        查看所有角色
SQL>select * from user_role_privs;    查看用户所拥有的角色

三:oracle常用语句
SELECT
数据检索
INSERT
UPDATE
DELETE
MERGE
数据操纵语言(DML)
CREATE
ALTER
DROP
RENAME
TRUNCATE
数据定义语言(DDL)
COMMIT
ROLLABCK
SAVEPOINT
事物处理控制
GRANT
REVOKE
数据控制语言(DCL)
oracle中SQL语句规范:
1:SQL语句不区分大小写。
2:SQL语句可以是一行,也可以是多行。
3:关键字不能缩写或在中间另起一行。
4:子句通常放在单独的行中。
5:缩进只是为了增强可读性,没有具体实际意义。

SQL>create table tb1(name varchar2(10),job varchar2(20),gongzi varchar2(20))tablespace TBspace;    创建表tb1
SQL>alter table tb1 add id varchar(10);    添加字段
SQL> alter table tb1 drop column id;    删除字段
SQL> insert into tb1(NAME,JOB,GONGZI,ID)values('jim','baidu','5600','3');    插入数据
SQL>truncate table tb1;    清空表tb1中的数据
SQL>drop table tb1;    删除表

基本SELECT语句
SELECT *|{[DISTINCT] column|expression [alias],...} FROM table;
SELECT确认处理哪些列,FROM确认处理哪些表。

使用算术运算符,可以创建数字和日期数据表达式。如运算符+,-,*,/等。
例如:select name,gongzi,12*gognzi from tb1;
定义空值:空值是指不可用、未分配、未知或不适用的值;空值不同于零或空格。
例如:select name,gongzi,commission_pct from tb1; 在查询结果中会创建一个名为commission_pct的空列。

定义列别名
列别名具有以下特点和功能:
1:重命名列标题。
2:有助于计算。
3: 紧跟在列名的后面,在列名和别名之间有可选的关键字AS。
4:如果列别名包含空格或特殊字符或者区分大小写,则需要使用双引号。
例如:select name as"Name",gongzi*12"NIANgongzi"from tb1;

连接运算符
连接运算符具有以下特点和功能:
1:将列或字符串连接到其它列。
2:有两条竖线(||)表示。
3:创建一个合成列,它是字符表达式。
例如:selectname||jobas "GongZuo" from tb1; 就会将name和job两列连接起来作为一个单独列“GongZuo”。

文字字符串
1:文字是指包含select列表中的字符、数字或日期。
2:日期和字符文字必须包含在单引号中。
3:在结果输出中,每个返回的行都回将每个字符串显示一次。
例如:select name ||'de gognzi shi'||gognzi as "GongZi" from tb1; 就会显示一个名为GongZi的列,列中的信息是“XX de gongzi shi XXX”`。

重复行
查询时默认会显示重复行,想消除重复行需要使用关键字"DISTINCT"。
例如:select DISTINCT gongzi from tb1;

显示表结构:
DESC tb1;
限制和排序数据:
使用where子句限制返回的行:‘
SELECT *|{[DISTINCT] column|expression [alias],...} FROM table[where condition(s)];
例如:select * from tb1 where gongzi > 5600;

where中的字符串和日期:
1:字符串和日期值包含在单引号中。
2:字符值是区分大小写的,而日期值是区分格式的。
3:默认日期格式为 DD-MON-YY

比较条件:=,>,>=,<,<=,<> 其中<>为不等于。
逻辑条件:AND,OR,NOT
例如:select name job from tb1 where gognzi NOT IN (5300,5600,5900);
其它条件:
运算符含义
BETWEEN...AND...介于两值之间(包含这两个值)
IN(SET)与值列表中的任一值匹配
LIKE与某个字符模式匹配
IS NULL为空值
例如:select name job from tb1 where gognziIN (5300,5600,5900);
使用LIKE条件可以对有效字符串执行通配符搜索,其中"%"匹配零个或人一个字符,"_"匹配一个字符。 例如:select * from tb1 where jobLIKE 't%';

ORDER BY子句
SELECT *|{[DISTINCT] column|expression [alias],...} FROM table [where condition(s)]ORDER BY {column,expr,alias} [ASC|DESC];
1:使用ORDER BY子句可以对行进行排序。
ASC 升序,也是默认设置
DESC 降序
2:ORDER BY子句在SELECT语句的最后。
例如:SELECT * FROM TB1 order by gognzi desc; 就会按gongzi降序排列。

四:oracle常用函数
oracle中有许多内置的SQL函数,可以方便的实现某些功能。通过向SQL函数传递参数,函数执行后会为每行后返回结果;接受的参数可以是列也可以是表达式,函数可以嵌套。
function_name [(arg1,arg2,...)]

一些常用SQL函数:

1:大小写处理函数
这些函数主要用于转换字符串的大小写:
函数处理结果
LOWER('SQL Function')sql function
UPPER('SQL Function')SQL FUNCTION
INITCAP('SQL Function')Sql Function
例如:select * from tb1 where LOWER(name)='landy orten';

字符串处理函数:
函数结果
CONCAT('Hello','World')HelloWorld
SUBSTR('HelloWorld',1,5)Hello
LENGTH('HelloWorld')10
INSTR('HelloWorld',W)6
LPAD(aaaaa,10,'*')*****aaaaa
RPAD(aaaaa,10,'*')aaaaa*****
TRIM('H' FROM 'HelloWorld')elloWorld
SUBSTR取得字符串中指定起始位置和长度的字符串 ,substr ( string, start_position, [ length ] ),当start_position为负数时,表示从字符串末尾向前算起。
RPAD(String a,int length,String addString),将addString添加到a的右边,length 是返回值的长度。 2:数字函数 ROUND:将值舍入到制定的小数位 ROUND(33.363,2)——>33.36 TRUNC:将数值截取到指定的小数位(不舍入) TRUNC(33.363,2)——>33.36 MOD:返回除法运算的余数 MOD(16,3)——>1 例如:select ROUND(33.336,2),MOD(16,3) from DUAL; //DUAL是用于查看函数或计算结果的空表。 3:日期处理 oracle数据库以内部数字格式存储日期:世纪、年、月、日、小时、分钟和秒。 默认日期格式为:DD-MON-YY 例如:07-MAY-13 ‍‍SYDATE函数是一个日期函数,它会返回数据库服务器的当前日期‍‍‍时间。

例如:select SYSDATE from DUAL;‍‍‍‍‍‍‍‍‍

与日期有关的运算:
1:对日期进行加减运算,以获得新的日期值。
2:将两个日期相减,以得到他们之间的天数。
3:将小时除以24,以将小时添加到日期中。
例如:select name,(SYSDATE-hire_date)/7 AS weeks from tb1 ;

日期函数:
MONTHS_BETWEEN 两个日期之间的月数
ADD_MONTHS 将日历月份添加到日期中
NEXT_DAY 指定日期的下一天
LAST_DAY 月份的最后一天
ROUND 舍入日期
RUNC 截断日期

例如:MONTHS_BETWEEN('01-MAY-13','01-SEP-12') ——> 8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息