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 deptCOL 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全部改成tttUPDATE 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 aaVARCHAR2(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;过滤重复数据