1.登陆系统用户
sqlplus 然后输入系统用户名和密码
登陆别的用户
conn 用户名/密码;
2.创建表空间
create tablespace 空间名
datafile 'c:"空间名' size 15M --表空间的存放路径,初始值为15M
autoExtend on next 10M --空间的自动增长的值是10M
permanent online; --永久使用
3.创建用户
create user shi --创建用户名为shi
identified by scj --创建密码为scj
default tablespace 表空间名 --默认表空间名
temporary tablespace temp --临时表空间为temp
profile default --受profile文件的限制
quota unlimited on 表空间名; --在表空间下面建表不受限制
4.创建角
create role 角名 identified by 密码;
5.给角授权
grant create session to 角名;--给角授予创建会话的权限
grant 角名 to 用户名; --把角授予用户
6.给用户授予权限
grant create session,resource to shi;--给shi用户授予所有权限
grant create table to shi; --给shi用户授予创建表的权限
7.select table_name from user_tables; 察看当前用户下的所有表
8.select tablespace_name from user_tablespaces; 察看当前用户下的 表空间
9.select username from dba_users;察看所有用户名称命令 必须用sys as sysdba登陆
10.创建表
create table 表名
(
id int not null,
name varchar2(20) not null
)tablespace 表空间名 --所属的表空间
storage
(
initial 64K --表的初始值
minextents 1 --最小扩展值
maxextents unlimited --最大扩展值
);
11.--为usrs表添加主键和索引
alter table users
add constraint pk primary key (ID);
12.为已经创建users表添加外键
alter table users
add constraint fk_roleid foreign key (roleid)
references role(role_id) on delete cascad; --下边写主表的列
on delete cascad是创建级联
13.把两个列连接起来
select concat(name,id) from 表名; --把name和id连接起来
14.截取字符串
select column(name,'李') from 表名; --把name中的‘李’去掉
15.运行事务之前必须写
set serveroutput on; --打开输入输出(不写的话,打印不出信息)
16.while的应用
declare --声明部分
ccc number:=1; --复职
a number:=0;
begin --事务的开始
while ccc<=100 loop --循环
if((ccc mod 3)=0) then --条件
dbms_output.put_line(ccc||','); --打印显示
a:=a+ccc;
end if; --结束if
ccc:=ccc+1;
end loop; --结束循环
dbms_output.put_line(a);
end; --结束事务
/
17.select into 的用法 --只能处理一行结果集
declare
name varchar(30);
begin
select username into name
from users
where id=2;
dbms_output.put_line('姓名为:'||name);
end;
/
18.利用%rowtype属性可以在运行时方便的声明记录变量和其他结构
Set serveroutput on;
oracle登录命令Declare
utype users%rowtype;
Begin
Select * into utype from users where id=20;
Dbms_output.put_line('姓名'|| utype.username);
Dbms_outpu
t.put_line('生日'|| utype.brithday);
end;
/ --%rowtype想当于复制一个表
19.游标的定义和使用
Declare
Cursor ucur is select * from users; --声明游标
Us users%rowtype;--定义与游标想匹配的变量
Begin
Open ucur;--打开游标
Fetch ucur into us;
While ucur %found loop --使用循环遍历游标的查询结果
Dbms_output.put_line('姓名:'||us.username||'生日'||us.brithday);
Fetch ucur into us;
End loop;
Close ucur; --关闭游标
End;
=======================================
%found在前一条的fetch语句至少对应数据库的一行时,%found属性值为true,否则为false;
% notfound 在前一条fetch语句没有对应的数据库行时,%notfound属性值为true,否则为false;
%isopen 在游标打开时%isopen属性值为true;否则为false;
%rowcount显示迄今为止从显示游标中取出的行数
20.
删除
drop tablespace 空间名 including contents; --删除表空间和里面的内容
drop table 表名 --删除表
drop user 用户名 --删除用户
-------------------------------------
使用Oracle用户
# su - oracle
创建表空间 -> 创建新用户 -> 用户授权
一 创建表空间
SQL> CREATE TABLESPACE test01
DATAFILE '/data/oracle/oradata/db/test01.dbf' SIZE 1024M UNIFORM SIZE 128k;
1) DATAFILE: 表空间数据文件存放路径
2) SIZE: 起初设置为1G就可以
3) UNIFORM: 指定区尺寸为128k,如不指定,区尺寸默认为64k
4) 空间名称 test01 与 数据文件名称 test01.dbf 不要求相同,可随意命名.
通过ALTER DATABASE修改空间扩展大小
SQL > ALTER DATABASE DATAFILE '/data/oracle/oradata/db/test01.dbf' ' AUTOEXTEND ON;
1)AUTOEXTEND ON:在Oracle10g中,需要手动启动分区自动扩展功能.
二 创建新用户
SQL> CREATE USER test IDENTIFIED BY 123456 DEFAULT TABLESPACE test01;
1) 创建用户同时分配表空间
三 用户授权
1)用户角授权
SQL> CRANT CONNECT,RESOURCE TO test;
a) 我这里将CONNECT和RESOURCE角赋给新用户test,test将拥有这两个角的操作权限.
2)直接授权
多用户
SQL> CRANT SELECT,INSERT,UPDATE,DELETE,ON USERS TO test,test1;
下面我们可以使用两种方式登录Oracle db
一 SQLPLUS
1)本地登录
SQL> sqlplus test/123456
2)远程登录
假设db在另一台服务器
SQL> sqlplus test/123456@db
二 PLSQL Developer
上篇中也有讲述,输入账号口令就可以了.
下面说些和上面相关,且工作中会需要用到的.
一 删除用户
SQL> DROP USER test CASCADE;
二 删除表空间
SQL> DROP TABLESPACE test01 INCLUDING CONTENTS AND DATAFILES;
1) 删除表空间内容和数据文件.
2) 一般无效表空间占用磁盘空间,所以这个应该很常用.
查看用户角权限
select * from user_role_privs;
查看用户表权限
select * from user_tab_privs;
-------
/*  Formatted  on  2001/12/03  09:00  (Formatter  Plus  v4.5.2)  */ 
CREATE  TABLESPACE  sini_data  DATAFILE 
'D:\oracle\oradata\sini_data.dbf'  SIZE  500m 
AUTOEXTEND  ON  NEXT  1m  MAXSIZE  UNLIMITED 
DEFAULT  STORAGE 
INITIAL  128k 
NEXT  1m 
MINEXTENTS  1 
MAXEXTENTS  UNLIMITED 
PCTINCREASE  0 
); 
CREATE  TABLESPACE  sini_index  DATAFILE 
'D:\oracle\oradata\sini_index.dbf'  SIZE  200m 
AUTOEXTEND  ON  NEXT  1m  MAXSIZE  UNLIMITED 
DEFAULT  STORAGE 
INITIAL  128k 
NEXT  1m 
MINEXTENTS  1 
MAXEXTENTS  UNLIMITED 
PCTINCREASE  0 
); 
CREATE  TABLESPACE  sini_temp  DATAFILE 
'D:\oracle\oradata\sini_temp.dbf'  SIZE  200m 
AUTOEXTEND  ON  NEXT  1m  MAXSIZE  UNLIMITED 
DEFAULT  STORAGE 
INITIAL  128k 
NEXT  1m 
MINEXTENTS  1 
MAXEXTENTS  UNLIMITED 
PCTINCREASE  0 
); 
ALTER  TABLESPACE  sini_temp  TEMPORARY; 
CREATE  USER  bingo  IDENTIFIED  BY  bingo  DEFAULT  TABLESPACE  sini_data  TEMPORARY  TABLESPACE  sini_temp; 
GRANT  CONNECT,RESOURCE  TO  bingo; 
GRANT  CREATE  TABLE  TO  bingo; 
ALTER  USER  bingo  QUOTA  UNLIMITED  ON  sini_data; 
ALTER  USER  bingo  QUOTA  UNLIMITED  ON  sini_index; 
ALTER  USER  bingo  QUOTA  UNLIMITED  ON  sini_temp; 
下面两句语句1.生成一个名为TbsUserData的表空间,  2.授权用户User1无限制使用该表空间 
CREATE  TABLESPACE  TbsUserData 
DATAFILE  'd:\data\UserData.dbf'  50  M 
DEFAULT  STORAGE  (INITIAL                          2  M   
NEXT                                2  M   
PCTINCREASE                  10) 
ALTER  USER  User1  Quota  Unlimited  on  TbsUserData 
/   
连接:samwong.javaeye
一、DataBase
保存数据,以表的形式表现数据
二、SQL
Structur query language 
结构化查询语言,是操作关系型数据库中的对象。 
DDL(Data definition language 数据定义语言),用于建表或删表操作,以及对表约束进行修改
create table , alter table , drop table 对表结构的增删操作。
DML(Data manipulation language 数据操作语言),向表中插入纪录,修改纪录
insert , update , delete , merge
transaction ,事务控制语言,由DML语句组成的,commit; ,rollback;
select 查询语句
dcl 授权语句 grant
三、Oracle
DBMS 数据库管理系统
有Oracle提供,还提供AS,应用服务器
DBA 数据库管理员
四、相关操作
1、sqlplus 访问数据库命令(本地访问/远程访问),和数据库建立连接的命令,是数据库操作的环境
sqlplus 用户名/密码
2、show user 显示当前用户的用户名
改变身份可以直接connect 用户名/密码  --- 这个是sqlplus命令
在sqlplus中可以使用 ! 可以在shell和sqlplus间切换,!shell命令 可以在sqlplus中使用shell命令。
实际上是sqlplus开了子进程来执行shell命令。
3、Oracle数据库中的表分两类:用户表(用户使用操作的表),系统表(数据库系统维护的表,也叫数据字典)
对用户表的DDL操作出发了对系统表的DML操作!
五、基本语法
1、select查询语句
select table_name from user_tables;(查询系统表)
以上的查询语句就是查询本用户下所拥有的所有表的表名。
投影操作,只查看选择的字段的信息。
选择操作,查看字段中的特定某些信息。
联接操作,多表查询,通过表间连接,查寻出多表中的信息
(1)select table_name from user_tables;(查询系统表)
以上的查询语句就是查询本用户下所拥有的所有表的表名。
(2)sqlplus的buffer中会缓存最后一条sql语句,可以使用"/"来执行这最后一条sql语句,也可以使用
edit命令来编辑最后一条sql语句。
l命令(list)(sqlplus命令)可以显示buffer中最后一条命令。 
sqlplus命令可以缩写
(3)desc [表名]
这是一条sqlplus命令,注意他不是sql语句,这条命令用于查看表的结构。descript的缩写
[字段名] [字段的类型],这是使用完desc命令后显示的表结构。     
(4)select [表的字段名1],[表的字段名2], ... from 表名;
select * from 表名; 查寻表中所有字段的信息   
(5)关键字不等拆分,sql语句,以及表名,字段名是大小写不敏感的。
sql语句要以";"结尾,来表示sql语句结束,如果不加";"系统不会执行此条sql语句,并提示。   
在Oracle中字符显示是左对齐,数值右对齐。
(6)在select 语句中可以使用数学表达式。
select [表达式(必须包含本表字段名)],[...],.... from 表名;
运算的优先级的先乘除后加减,同级自左向右运算,括号改变优先级。
(7)别名
select [字段名或表达式] ["别名"],[...] ["..."],.... from 表名;
可以通过在字段名或表达式后加空格"别名",可以给列,或者表达式结果其别名。   
表达别名必须加双引号。
(8)字符串拼接使用||符号
select 目标字段名||" "||目标字段名 from 表名;
注意:在Oracle中的字符串要用'..'包含
别名中需要
使用空格,或是大小写敏感时需要用".."包含。   
练习:
自己写一条SQL语句,执行的结果是select * from ...;
其中...是每张系统表的表名
即在每张系统表的表名前加 “select * from”  ,后加“;”
select 'select * from '||table_name||';' from user_tables;
2、处理错误
(1)!oerr ora [错误号] ,系统可以显示错误的原因和如何修改。如果命令错误输入可以使用edit或ed来修改输入错误。
实际上是在编辑缓存文件中的最后一条sql语句。
也可以使用 (change) c /错误字段/正确字段,来进行替换操作进行修改。
只有在Linux平台使用
! 相当于 host ,没有断连接,只是切换了一下,执行shell命令
(2)edit命令来编辑最后一条sql语句。
3、sqlplus设置
set pause on 回车响应,分屏显示,只在本会话中有效
set pause off 关闭分屏显示。
set pause "..."  设置分屏显示的提示信息。
set pause on 先输出提示信息,回车响应,分屏显示
set head off 提头输出关闭
set feed off 结尾输出关闭
set echo off 回写关闭
spool 文件名.sql 写入指定文件
spool off 关闭写入。 
4、sql脚本
也就是在文件中写有sql语句的文件,可以在sqlplus中运行。
引入sql脚本
sqlplus 用户名/密码 @sql脚本 (注意:在用户名密码输入结束后一定要加空格然后再写@sql脚本)
在脚本中最后一行写上“exit”,则运行完脚本以后,回到shell上
5、
Oracle中的空值 空值会当无穷大处理,其实空值根本就不会存储,只是看作是无穷大。
Oracle中控制处理函数 NVL(字段名,值),这个字段中的空值替换为指定值,如果不为空,则会返回其原值。
例:select (salary*12)*(NVL(commission_pct,0)/100+1) salary,first_name from s_emp;
distinct关键字,去掉重复行(这个关键字会触发排序操作)
例: select distinct dept_id,title from s_emp;
dept_id与title的联合不唯一
注意:distinct,关键字之后会对from之前的字段进行排重操作。
6、column命令 --- sqlplus命令
column命令 列格式的定义
column 目标列名 查看这个类是否定义了格式
column 目标列名 format a.. 设置列宽。
column last_name heading 'Employee|Name'  formAT A15
设置题头
这其中的'|'是换行符
column salary justify left format $99,990.00
定义数字显示格式
注意:如果不满足显示的格式,就会把数据显示为"#"
column salary justify left format $00,000.00
会出现$00,928.00 ,用0补齐
column 列名 clear (清除列格式定义)
注意:只有sqlplus命令才有简写,并且在使用sqlplus命令时结尾也不能加分号。
六、选择操作
1、order by
排序子句 ASC(默认,升序) DESC(降序)
order by

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。