3年前oracle命令行笔记,到现在还常用。
col 列名 for(mat) 格式 :可对列进行格式化(a100 是针对varchar 的格式,显示100个字符,可以a60,a80), 例如:col file_name format a100; col 列名:显示当前列的格式 clear column:清除所有列的格式 //主機名 HOST HOSTNAME; //幫助 HELP INDEX; //顯示當前環境變量值 SHOW ALL //顯示當前錯誤 SHOW ERR; //顯示數據庫版本 show rel //查看oracle版本 CONN /AS SYSDBA SELECT * FROM V$VERSION; //查看全局服務名 SELECT GLOBAL_NAME FROM GLOBAL_NAME; //数据库名 SELECT NAME FROM V$DATABASE; SHOW PARAMETER DB //实例名 SELECT INSTANCE_NAME FROM V$INSTANCE SHOW PARAMETER INSTANCE //数据库域名 SELECT VALUE FROM V$PARAMETER WHERE NAME='DB_DOMAIN'; SHOW PARAMETER DOMAIN; //数据库服务名 SELECT VALUE FROM V$PARAMETER WHERE NAME='SERVICE_NAME'; SHOW PARAMETER SERVICE_NAME; 登陆监听器 lsnrctl 启动监听器 lsnrctl start listener | lsnrctl start listener 关闭监听器 lsnrctl stop listener | 显示监听器状态 lsnrctl status listener //查看更详细监听器 services //测试客户端与服务器连接 tnsping myorcl //登陆 1 sqlplus 2 system@myorcl admin //检查网络故障 ping 127.0.0.1 //sql ;结束 / 新一行结束 begin end / 新行执行 在sqlplus命令中执行操作系统命令 host dir d:\ 关闭plus exit or quit or ctrl+z //连接数据库 CONNECT system/admin@myorcl //退出数据库 DISCONNECT //导入sql文件 @F:\banksystem.sql //配置tomcat 环境变量 catalina_home=H:\Tomcat 6.0 tomcat_home=H:\Tomcat 6.0 classpath=%tomcat_home%\lib\servlet-api.jar;tomcat_home%\lib\jsp-api.jar //创建表空间 CREATE TABLESPACE userdb DATATILE 'F:\oracl tool\' //切换用户 sqlplus system admin conn scott/admin --切换 show user; //断开当前数据库 disc scott; //修改用户密码 passw //运行sql脚本 start e:\a.sql 或者 @ e:\a.sql //编辑sql edit e:\a.sql; //截取屏幕select 数据到指定文件 spool d:\b.sql; select * from emp; spool off; //sql语句的 '&a' 变量值替换 select * from emp where ename='&a'; //调整行的顯示 set linesize 90; select * from emp; //行显示 show linesize; //分页 set pagesize 5; select * from emp; //创建数据库用户 CREATE USER nokey IDENTIFIED BY orcl;//orcl是密码 //修改其他数据库用户密码 ALTER USER nokey //删除用户 drop user nokey; 如果nokey 里面存在表,那么需要带一个参数cascade才能删除 //为表空间指定用户 alter user demo default tablespace DEMOTSDATA; //给指定用户授权( 表操作 connect ) grant connect to nokey; //给指定用户授权( 表空间操作 resource ) grant resource to nokey; //操作數據庫 Grant DBA To nokey; //查看表结构 desc test; //赋予对象权限查看表 grant select on emp to nokey; //查看被赋权的表 select * from scott.emp;//soctt 表示角色 //赋予对象权限修改表 grant update on emp to nokey; //把emp访问权限都给test (修改/删除delete \查询 \添加 soctt的emp 表 ) grant all on emp to test //收回nokey对emp表的权限 revoke select on emp from nokey; //权限维护 //nokey 查询scott emp表的权限传递给其他用户 // 查看所有用戶 select username from dba_users; //刪除用戶 drop user myorcl cascade; //刪除表空間及數據庫文件(刪除臨時表空間和數據庫文件也是一樣的) drop tablespace tablespace_name including contents and datafiles; DROP TABLESPACE TABLESPACE_NAME INCLUDING CONTENTS AND DATAFILES; //查看所有表 SELECT TABLE_NAME FROM ALL_TABLES //查看當前用戶所有表 SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER='MYORCL'; //查看前用戶的表空间 SELECT USERNAME,DEFAULT_TABLESPACE DEFSPACE FROM DBA_USERS WHERE USERNAME='MYORCL'; SELECT USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME='MYORCL'; //查詢所有表空間 select tablespace_name from dba_tablespaces; //查詢表空間分佈的用戶信息 select tablespace_name,owner,sum(bytes) from dba_segments group by tablespace_name,owner; //查詢當前用戶所有表空間 SELECT TABLESPACE_NAME FROM USER_TABLESPACES; //查看表空間大小 SELECT A.NAME,SUM(B.BYTES)/1024/1024 FROM V$TABLESPACE A,V$DATAFILE B WHERE A.TS#=B.TS# GROUP BY A.NAME; //查詢表空間空閒空間 SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024 FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME; //創建臨時表空間 CREATE TEMPORARY TABLESPACE USER_TEMP TEMPFILE 'F:\DATA_TEMP.DBF' SIZE 50M AUTOEXTEND ON NEXT 50M MAXSIZE 10280M EXTENT MANAGEMENT LOCAL; //創建表空間 CREATE TABLESPACE USER_DATA DATAFILE 'F:\USER_DATA.DBF' SIZE 50M AUTOEXTEND ON NEXT 50M MAXSIZE 10280M EXTENT MANAGEMENT LOCAL; //創建用戶并指定表空間 CREATE USER MYORCL IDENTIFIED BY ADMIN DEFAULT TABLESPACE USER_DATA TEMPORARY TABLESPACE USER_TEMP; //CONN SYSTEM/ADMIN //GRANT CONNECT,RESOURCE TO MYORCL oracle调整表空间文件大小 1、调整表空间文件大小 alter database datafile '/u01/app/oracle/oradata/rmanrep/users01.dbf' resize 15m; 2、调整表空间文件自动扩展 alter database datafile '/u01/app/oracle/oradata/rmanrep/users01.dbf' autoextend on next 20m maxsize 1g; 3、新增磁盘 alter database datafile '/u01/app/oracle/oradata/rmanrep/users01.dbf' autoextend on next 20m maxsize 1g; alter tablespace userdb add datafile '/u03/oradata/users02.dbf' size 50m autoextend on next 10m maxsize 200m 5、修改表空間名 alter tablespace userdb rename to userdb2 //增加列 ALTER TABLE emp01 ADD eno NUMBER(4); //修改列定义 ALTER TABLE emp01 MODIFY job VARCHAR2(15) ; //删除列 ALTER TABLE emp01 DROP COLUMN dno; //修改列名 ALTER TABLE emp01 RENAME COLUMN eno TO empno; //修改表名 RENAME emp01 TO employee; //修改默认表空间到指定表空间 ALTER DATABASE DEFAULT TABLESPACE USER_DATA; //增加注释 COMMENT ON TABLE employee IS '存放雇员信息'; COMMENT ON TABLE employee.name IS '描述雇员姓名'; 1、只复制表结构的sql create table b as select * from a where 1<>1 2、即复制表结构又复制表中数据的sql create table b as select * from a 3、复制表的制定字段的sql create table b as select row_id,name,age from a where 1<>1//前提是row_id,name,age都是a表的列 4、复制表的指定字段及这些指定字段的数据的sql create table b as select row_id,name,age from a 以上语句虽然能够很容易的根据a表结构复制创建b表,但是a表的索引等却复制不了,需要在b中手动建立。 5、insert into 会将查询结果保存到已经存在的表中 insert into t2(column1, column2, ....) select column1, column2, .... from t1 //SQL插入时间date类型 INSERT INTO PERSON (ID,NAME,AGE,BRITHDAY,MONEY) VALUES( 1,'张三',22, to_DATE('2011-01-01','yyyy-mm-dd hh24:mi:ss') ,30.0); INSERT INTO PERSON (NAME,AGE,BRITHDAY,MONEY) VALUES( '张三',22, to_DATE('2011-01-01','yyyy-mm-dd hh24:mi:ss') ,30.0); //对PERSON 的ID进行自增 //創建序列 CREATE SEQUENCE SEQ_ID START WITH 1 --啟始值 MAXVAULE 99999999999999 --最大值 99999999999999 MINVAULE 1 --最小值1 NOCYCLE --序列到達最大值以後不再循環 CACHE 100; --緩存100個序列值 CREATE SEQUENCE SEQ_ID INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE NOCACHE; CREATE OR REPLACE TRIGGER TRI_USERBEAN BEFORE INSERT ON USERTEST FOR EACH ROW BEGIN IF(:NEW.ID IS NULL)THEN SELECT SEQ_USERBEAN.NEXTVAL INTO:NEW.ID FROM DUAL; END IF; END; / CREATE OR REPLACE TRIGGER TRI_PERSON BEFORE INSERT ON PERSON FOR EACH ROW WHEN(NEW.ID IS NULL) BEGIN SELECT SEQ_ID_PERSON.NEXTVAL INTO :NEW.ID FROM DUAL END; / CREATE TRIGGER TRI_INS_PERSON BEFORE INSERT ON PERSON FOR EACH ROW WHEN(NEW.ID IS NULL) BEGIN SELECT SEQ_ID_PERSON.NEXTVAL INTO : NEW.ID FROM DUAL END; //創建觸發器 CREATE OR REPLACE TRIGGER TRIGGER_PERSON BEFORE INSERT ON PERSON --插入前觸發 FOR EACH ROW --對每行觸發 自動增加 BEGIN SELECT SEQ_ID.NEXTVAL INTO : NEW.ID FROM DUAL; --序列到下個值 END; //刪除TRIGGER DROP TRIGGER TRIGGER_PERSON; //禁用和启用触发器 alter trigger <trigger_name> disable; alter trigger <trigger_name> enable; //查看當前用戶當前表觸發器 SELECT * FROM USER_TRIGGERS WHERE TABLE_OWNER='MYORCL' AND TABLE_NAME =UPPER('PERSON'); select * from user_triggers where table_owner = 'xxx' and table_name = upper('table_name'); //查看这个用户的所有触发器 select * from dba_triggers where owner=用户名; //查看这个用户中所有的外键约束,table_name显示了建立在哪个表上 select * from dba_constraints T where owner=用户名 AND T.CONSTRAINT_TYPE='F'; //清空緩存 10g以上 alter system flush buffer_cache; 9i ALTER SESSION SET EVENTS 'immediate trace name flush_cache'; // 將中文報錯環境更改為英文 ALTER SESSION SET NLS_LANGUAGE='AMERICAN' // select * from nls_database_parameters; alter database NLS_CHARACTERSET = ZHS16GBK; // 註冊表 NLS_LANG SIMPLIFIED CHINESE_CHINA.ZHS16GBK 中文值 CHINESE_CHINA.ZHS16GBK AMERICAN_AMERICA.UTF8 英文值 AMERICAN_AMERICA; AMERICAN_AMERICA.WE8ISO8859P1 SIMPLIFIED AMERICAN_AMERICA.UTF8 //提示為英文,編碼為中文 AMERICAN_AMERICA.ZHS16GBK //CT TABLE CREATE TABLE CT( ID NUMBER PRIMARY KEY NOT NULL, NAME VARCHAR(10) NOT NULL, AGE NUMBER NOT NULL, DEP NUMBER NOT NULL); // PROCEDURE CREATE PROCEDURE PROL(ID NUMBER) AS V NUMBER; BEGIN INSERT INTO CT VALUES(V,'ZHANGSAN',1,1); COMMIT; END; / //execute執行 //EXECUTE PROL(2) //塊執行 DECLARE BEGIN PROL(2); END //常量定義constant ID CONSTANT NUMBER :=30; //無參存儲過程 CREATE OR REPLACE PROCEDURE PRO_PERSON(PARAMENT1 VARCHAR2,PARAMENT2 NUMBER,PARAMENT3 DATE,PARAMENT4 FLOAT) AS BEGIN INSERT INTO PERSON(NAME,AGE,BRITHDAY,MONEY) VALUES(PARAMENT1,PARAMENT2,PARAMENT3,PARAMENT4); END; //返回一個參數 CREATE OR REPLACE PROCEDURE PRO_PERSON_RETURE(PARAMENT1 VARCHAR2,PARAMENT2 OUT NUMBER) AS BEGIN SELECT AGE INTO PARAMENT2 FROM PERSON WHERE NAME=PARAMENT1; END; //插入 时取得当前ID //第一种 CREATE OR REPLACE PROCEDURE PRO_LAST_ID_PERSON( PARA5 OUT NUMBER,PARA1 VARCHAR2,PARA2 NUMBER,PARA3 DATE,PARA4 FLOAT) AS BEGIN INSERT INTO PERSON(ID,NAME,AGE,BRITHDAY,MONEY) VALUES( SEQ_ID_PERSON.NEXTVAL,PARA1,PARA2,PARA3,PARA4); SELECT SEQ_ID_PERSON.CURRVAL INTO PARA5 FROM DUAL; END; / //第二种 CREATE OR REPLACE PROCEDURE PRO_LAST_ID_PERSON1( PARA5 OUT NUMBER,PARA1 VARCHAR2,PARA2 NUMBER,PARA3 DATE,PARA4 FLOAT) AS BEGIN INSERT INTO PERSON(NAME,AGE,BRITHDAY,MONEY) VALUES(PARA1,PARA2,PARA3,PARA4); SELECT SEQ_ID_PERSON.CURRVAL INTO PARA5 FROM DUAL; END; / //存儲過程返回列表 //造包 CREATE OR REPLACE PACKAGE PERSON_PACKAGE AS TYPE PERSON_CURSOR IS REF CURSOR; PROCEDURE PRO_PERSON_GET(C_REF OUT PERSON_CURSOR); END; / //存儲過程 CREATE OR REPLACE PACKAGE BODY PERSON_PACKAGE AS PROCEDURE PRO_PERSON_GET(C_REF OUT PERSON_CURSOR) IS BEGIN OPEN C_REF FOR SELECT * FROM PERSON; END PRO_PERSON_GET; END PERSON_PACKAGE; / //查看触发器 set long 50000; set heading off; set pagesize 2000; select 'create or replace trigger "' || trigger_name || '"' || chr(10)|| decode( substr( trigger_type, 1, 1 ), 'A', 'AFTER', 'B', 'BEFORE', 'I', 'INSTEAD OF' ) || chr(10) || triggering_event || chr(10) || 'ON "' || table_owner || '"."' || table_name || '"' || chr(10) || decode( instr( trigger_type, 'EACH ROW' ), 0, null, 'FOR EACH ROW' ) || chr(10) , trigger_body from user_triggers; // 查看函数和过程的状态 select object_name,status from user_objects where object_type='FUNCTION'; select object_name,status from user_objects where object_type='PROCEDURE'; SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE='TRIGGER'; // 查看函数和过程的源代码 select text from all_source where owner=user and name=upper('名稱'); SELECT TEXT FROM ALL_SOURCE WHERE TYPE='PACKAGE BODY' AND OWNER='SYSTEM' ORDER BY NAME,LINE; Procedure,Function, Package, Trigger这些数据库对象的定义都可以用类似的方法得到。 //TRANSACTION SAVEPOINT A SELECT * FROM PERSON; UPDATE PERSON SET AGE=30 WHERE NAME='ZHANGSAN'; SELECT * FROM PERSON; ROLLBACK TO A SELECT * FROM PERSON; //TRANSACTION'S NAME SET TRANSACTION NAME 'INSERT INTO TABLE TEST_TRANSACTION' //INSERT INTO DATABASE INSERT INTO TABLE TEST_TRANSACTION VALUES('KKKK',20,TO_DATE('2011-10-10','YYYY-MM-DD HH24:MI:SS'),20.8); // SELECT TRANSACTION SELECT NAME FROM V$TRANSACTION; //COMMIT; SELECT NAME FROM V$TRANSACTION; //事务一致性(TRANSACTION-LEVEL READ CONSISTENCY) //会话1 窗口1 //READ ONLY SET TRANSACTION READ ONLY; //2 SELECT * FROM PERSON; //会话2 窗口2 INSERT INTO TABLE TEST_TRANSACTION VALUES('KKKK',20,TO_DATE('2011-10-10','YYYY-MM-DD HH24:MI:SS'),20.8); COMMIT; //会话1 窗口1 SELECT * FROM PERSON; //COMMIT; SELECT * FROM PERSON; //INTEGRITY CONSTRAINTS 完整性约束 //CREATE TABLE CREATE TABLE INTEGRITY_TEST( ID INT, NAME VARCHAR2(10)); //ALTER COLUMN OF TABLE FOR PRIMARY KEY ALTER TABLE INTEGRITY_TEST ADD PRIMARY KEY(ID,NAME); //DELETE ALTER TABLE INTEGRITY_TEST DROP PRIMARY KEY CASCADE; //ALTER COLUMN OF TABLE FOR PRIMARY KEY AND CONSTRAINT NAME ALTER TABLE INTEGRITY_TEST ADD CONSTRAINT PK1 PRIMARY KEY(ID,NAME); //DELETE ALTERT TABLE INTEGRITY_TEST DROP PK1; //CREATE UNIQUE CONSTRAINT DROP TABLE INTEGRITY_TEST; //1 CREATE TABLE INTEGRITY_TEST(ID INT UNIQUE,NAME VARCHAR2(10)); //2 ALTER TABLE INTEGRITY_TEST ADD UNIQUE(ID,NAME); //DELETE ALTER TABLE INTEGRITY_TEST DROP UNIQUE(ID,NAEM); //3 ALTER TABLE INTEGRITY_TEST ADD CONSTRAINT PK3 UNIQUE(ID,NAME); //DELETE ALTER TABLE INTEGRITY_TEST DROP CONSTRAINT PK3 CASCADE; //CREATE CHECK CONSTRAINTS DROP TABLE INTEGRITY_TEST; //CREATE CHECK CONSTRAINT OF TABLE CREATE TABLE INTEGRITY_TEST(ID INT, NAME VARCHAR2(10), NUM NUMBER CONSTRAINT C_CHECK CHECK(NUM BETWEEN 10 AND 20)); //ADD CHECK CONSTRAINT OF TABLE ALTER TABLE INTEGRITY_TEST ADD CONSTRAINT C_CHECK CHECK(NUM BETWEEN 1 AND 20); //DELETE ALTER TABLE INTEGRITY_TEST DROP CONSTRAINT C_CHECK; //ALTER COLUMN VALUES IS NULL OR NOT NULL OF TABLE ALTER TABLE INTEGRITY_TEST MODIFY (ID NULL); ALTER TABLE INTEGRITY_TEST MODIFY (ID NOT NULL); //FOREIGN KEY //CREATE STUDENT CREATE TABLE STUDENT( SID INT, CID INT, NAME VARCHAR2(20), CONSTRAINT PK1 PRIMARY KEY(SID)); //CREATE COLLEGE CREATE TABLE COLLEGE( CID INT, CNAME VARCHAR2(10), CADDRESS VARCHAR2(100), CONSTRAINT PK2 PRIMARY KEY(CID)); //CONSTRAINTS FOREIGN KEY ALTER TABLE STUDENT ADD CONSTRAINT FK1 FOREIGN KEY(CID) REFERENCES COLLEGE(CID); //OR CONSTRAINT FOREIGN KEY ALTER TABLE STUDENT ADD CONSTRAINT FK1 FOREIGN KEY(CID) REFERENCES COLLEGE(CID) ON DELETE CASCADE; //DELETE CONSTRAINTS FOREIGN KEY //IF TABLE IS COLLEGE'S DELETE THEN ALTER TABLE COLLEGE DROP CONSTRAINT FK1 //OR USEING CASCADE CONSTRAINTS TO DELETE DROP TABLE COLLEGE CASCADE CONSTRAINTS; //ALL TABLES AND ALL CONSTRAINTS SELECT TABLE_NAME,CONSTRAINT_NAME FROM USER_CONSTRAINTS; // 查看表约束 SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE FROM USER_CONSTRAINTS WHERE TABLE_NAME=upper('department') AND OWNER=USER; //查看值 SELECT COLUMN_NAME,POSITION FROM USER_CONS_COLUMNS WHERE CONSTRAINT_NAME='SYS_C0011056';
地瓜园