1.orcale简介
orcale数据库默认的账户和密码:scott:tiger,hr:hr
连接orcale数据库:sqlplus scott/scott回车
连接orcale数据库:
sqlplus / as sysdba
修改锁定帐号:sqlplus /as dba回车,alter user username account unlock;
清屏:host cls;当前用户:show user;当前用户的表:select * from tab;//tab是数据字典(表)
查看表的信息:desc emp;
查看表:select * from emp;
设置行宽:set linesize 120;
设置每页的行数:set pagesize 20;
设置列宽:col ename for(format) a8;//a代表ename是字符串,8代表ename有8位col sal for 9999;//9代表一位数字,4个9代表sal为4位
注意:最好使用列名
1.select empno,ename,sal,sal*12,comm,sal*12+comm from emp;//如果奖金为空,则表达式sal*12+comm为空sql语句中的null值问题
1.包含null值的表达式都为空2.null!=null空值永远不等于空值
2.select * from emp where comm is null;//查找奖金为空的员工信息
3.select * from emp where comm is not null;//查找奖金不为空的员工信息
滤空函数:nvl(a,b)如果a为空,则返回b,否则返回a
4.select empno,ename,sal,sal*12,comm,sal*12+nvl(comm,0) from emp;//如果奖金为空,则表达式sal*12+nvl(comm,0)返回sal*12+0
5.select * from emp where deptno = 10;
大小写敏感和日期格式敏感:默认的日期格式:DD-MON-RR打印系统时间查看默认的日期格式:select sysdate from dual;
默认的系统日期格式可以修改:select * from v$nls_parameters;-->alter session(当前回话)/global
(修改整个数据库,需要管理员来改) set NLS_DATE_FORMAT='yyyy-mm-dd';
赋值使用(:=),等于(=),不等于(<>/!=)在两个值之间(包含边界):between ... and ...//小值在前,大值在后
(不)在列表中的值当中:(not) in(set)模糊查询:like(不是)空值:is (not) null
注意:如果集合中含有空值:可以使用in,但是不能使用not inrollback(需要开启事物<orcale自动开启事物>):回退
6.select * from emp where ename = 'KING';
7.select * from emp where hiredate = '17-11月-81';//'17-11月-81'符合默认的日期格式
8.select * from emp where sal between 1000 and 2000;//小值在前,大值在后
9.select * from emp where deptno (not) in (10,20);
10.select * from emp where deptno in (10,20,null);//可以查询出来
11.select * from emp where deptno not in (10,20,null);//未选定行
12.select * from emp where ename like = 'S%';//查询名称以S打头的员工信息
13.select * from emp where ename like = '____';//查询名称是四个字的员工信息,四个英文下划线
14.select * from emp where ename like = '%_%';//表示任意长度的任意字符串
15.select * from emp where ename like = '%\_%' escape '\';//如是代表_则需要转义。escape关键字声明转义字符
16.select * from emp order by sal;//默认是升序,a命令追加(append<上一条sql语句的后面追加>),a (a后面的空格为2个或以上)desc;//order by后面+列名+表达式+别名+序号+多列
17.select ename,sal,sal*12 from emp order by sal*12;//表达式17.select ename,sal,sal*12 年薪 from emp order by 年薪;//别名
18.select ename,sal,sal*12 from emp order by 3;//序号,3代表sal*12,1代表ename,2代表sal
19.select * from emp order by deptno,sal;//多列,先按照deptno排序,若deptno相同则按照sal排序(默认是升序)
20.select * from emp order by deptno desc,sal desc;//降序(desc)只作用于离desc最近的一列
21.select * from emp order by deptno comm desc nulls last;//按奖金升序排列,空值在最后//comm列有空值,降序(desc)如何将空值放到最后(升序asc排序时空值本来就在后面)sql语句的优化:where condition1 and condition2;where condition2 and condition1;//这两个条件语句一样,但是orcale数据库where解析是从右向左,and条件把为假的放在右边where condition1 or condition2;where condition2 and condition1;这两个条件语句一样,但是orcale数据库where解析是从右向左,or条件把为真的放在右边orcale函数22.select lower('Hello WORLD') 转小写,upper('hello world') 转大写,initcap('hello world') 首字母大写 from dual;//substr(a,b)从a中,第b位开始取,取右边所有的字符(空格也算)
22.select substr('hello world',3) from dual;//输出:llo worldsubstr(a,b,c)从a中,第b位开始取,取c位长度的字符(空格也算)23.select substr('hello world',3,4) from dual;//输出:llo (空格也算)