ORACLE SQL*PLUS基础学习笔记

SQL*PLUS 基础:
sqlplus “sys/test1234 as sysdba”  以sys身份登录sqlplus/nolog 实例没有打开,以nolog登录sqlplus后,尝试连接,但是 数据库服务没有启动connect sys/test1234 as sysdba  连接数据库startup 启动startup mount  启动实例时启动控制文件不启动数据文件
archive log listalter database archivelogalter database open        把数据库的非归档方式改为归档方式
startup nomount  启动实例控制文件不打开
shutdown immediate  常用关闭模式
shutdown 正常关闭(等待空闲用户断开后断开,不推荐使用)
shutdown transactional  迫使用户在当前执行完成后关闭实例
shutdown abort  强行关闭数据库实例(可能照常数据的损坏或丢失)
sqlplus sacott/tiger 以scott用户登录
help index  所以sqlplus支持的命令
SELECT * FROM dept;
?set 查看SET的使用
SET SQLBLANKLINES ON  使sqlplus支持空格行
SELECT * FROM dept WHERE deptno=10;
SELECT * FROM dept WHERE deptno=&tt;   替代变量方式
list(简写l) 可以查看缓冲区内刚才写的命令

SELECT * FROM dept;ll2 4                  显示第二行到第四行命令

SELECT * FRON dept;  (FROM故意打错用chang命令改)lc/FRON/FROM  (也可以c/N/M)l/   对于缓冲区内的命令用/的方式表示执行
?CHANGE  查询change的运用
lDEL 4   删除缓冲区第四行信息
DEL 2 3  删除多行信息,从第二行到第四行
SQL>L        1* SEECT *SQL>A FROM dept   1*SELECT * FROM dept   SQL> l                    缓冲区尾部最加信息后执行

/save c:oracletest.txt  保存缓冲区数据(windows底下)
get c:oracletest.txt  通过get获取保存的脚本内容

SELECT * FROM dept;edit                  (默认打开记事本修改)

? COL COL命令的使用
COL deptno HAVING “编号”   给予deptno一个命名SELECT * FROM dept;
?describe  describe 命名的运用
DESC dept
COL dname FORMAT A10 HEADING “部门名称”SELECT * FROM dept;                     标签只对当前用户注册会话期间有效,推出后就无效了
SELECT bytes FROM v$datafile;
SELECT bytes,name FROM v$datafile;
SELECT bytes FROM v$datafile;
COL bytes FORMAT 999,999,999SELECT bytes FROM v$datefile;

CREATE TABLE abc(a varchar2(10),b char(10)); 创建表
ALTER ATBLE abc ADD c number;  加一字段
ALTER TABLE abc DROP COLUM c; 把字段C删除
SELECT * FROM scott.dept;
GRANT SELECT ON dept TO tt; 给tt用户授权

REVOKE SELECT OM dept FROM tt;部门表的权限从tt用户收回
SEELCT * FROM abc;
INSERT INTO abc(a,b) VALUES(‘abc’,'xy’);
INSERT INTO abc VALUES(‘bcd’,’123′);
SELECT * FROM abc;
UPDATE abc SET b=’ttt’;  修改字段,b全部改成ttt
UPDATE abc SET b=’YYY’ WHERE a=’abc’; 修改字段a=’abc’的这一行
DELETE FROM abc; 表内数据全部删除
DELETE FROM abc WHERE a=’abc’;删除某条字段,不是全部删除

字符:
SELECT LENGTH(‘ABCDEF’) FROM dual; 查字符数
SELECT LENGTH(‘abc好EF’) FROM dual;
SELECT LENGTHB(‘abc好EF’) FROM dual; 查字节数 1个汉字2个字节,空格也占用字符
SELECT LTRIM(‘  abc好EF’) FROM dual;把左边的空字符截掉
SELECT LENGTH(LTRIM(‘  abc好EF’)) FROM dual;查看截掉空格后的字符数
SELECT RTRIM(‘abc好EF  ’) FROM dual;截掉右边的空格
SELECT TRIM(‘  abc好EF  ’) FROM dual;截掉左右两边的空格
desc aa
VARCHAR2(10)可变长 (未写满的空出来不占用存储空间)CHAR(10)定长 (未写满的用0补足,占用存储空间)
UPDATE aa SET a3=’aa’
定义表时尽可能定义可变长
SELECT SUBSTR(‘abcdefg’,2,3) FROM dual;  从串的某个位置出去几个字符
oracle中无LEFT函数
SELECT SUBSTR(‘abcdefg’,1,3) FROM dual;  左起串,取3个
SELECT SUBSTR(‘abcdefg’,LENGTH(‘abcdefg’)-3+1,3) FROM dual; 右取三个

日期:
SELECT sysdate FROM dual; 取机器时间 SELECT current_date FROM dual;  取日期
ALTER SESSION SET NLS_DATE_FORMAT=’dd-mon-yyy hh:min:ss’;设置时间日期格式
SELECT NEXT_DAY(sysdate,’星期三’) FROM dual; 下周的这个时间是几号
SELECT sysdate FROM dual;

转换:
SELET TO_CHAR(sysdate,’yyyy-mm-dd’) FROM dual;     把日期型(非字符)转换成字符型,默认12小时进制
SELET TO_CHAR(sysdate,’yyyy-mm-dd hh:mi:ss’) FROM dual;
SELET TO_CHAR(sysdate,’yyyy-mm-dd hh24:mi:ss’) FROM dual;
SELET TO_DATE(’12-3月-04′) FROM dual;  把非日期型转换成日期型
SELET TO_DATE(’333′) FROM dual; 数字字符才可以转换成整型

聚集函数:
SELECT max(price) FROM books; 求价格的最大值
SELECT min(price) FROM books; 求价格的最小值
SELECT sum(price) FROM books; 求价格的和
SELECT avg(price) FROM books; 求价格的平均值
SELECT count(price) FROM books; 查价格的行数
SELECT count(*) FROM books; 查字段的行数
SELECT * FROM  books WHERE price>20;
其它:
SELECT user FROM dual; 查询当前用户信息
SELECT * FROM e;SELECT SUM(DECODE(SEX,’男’,1,0))男人数,SUN(DECODE(SEX,’女’,1,0))女人数 FROM e;  DECODE函数,非常重要,括号内的男女1,0是做一个布尔型的判断
SELECT * FROM aa;SELECT a1,nvl(a2,’未输入’)a2 FROM aa; 当a2为空值时可以标识一个信息“未输入”
SELECT * FROM aa WHERE a2 IS NULL; 查询为空字段SELECT * FROM aa WHERE a2 IS NOT NULL;查询不为空字段  (oracle中不能使用a2=null这样的表示方式)
SELECT * FROM aa;SELECT * FROM aa ORDER BY a1 ASC; 升序排列SELECT * FROM aa ORDER BY a1 DESC; 降序排列
SELECT DISTINCT a1 FROM aa;过滤重复数据


你可能感兴趣的:(oracle,sqlplus)