Oracle sql 基础
来源:互联网 发布:ubuntu修改文件权限 编辑:程序博客网 时间:2024/05/29 09:17
sqlplus相当于客户端工具,不过这个是纯文本的。进入sqlplus环境下,conn命令连接数据库,是connect的简写方式。
conn scott/tiger@orcl表示以SID为orcl的库上的SCOTT用户登录,密码为tiger。
sql语句练习地址:http://wenku.baidu.com/link?url=NxcBAChcO8OLNCdC0N7tUCuAy84DzUABxBCUX6rbAHPgfLnSWrfDYf5JnhlMHR7qNUShJGb-76rIeJjeYaEz9fHRsWTVXRmR5syJSNfRztK
根据Oracle数据库scott模式下的emp表和dept表
经典_Oracle的sql语句百例训练 http://wenku.baidu.com/link?url=QGbP3XsO2WPxB9Ikt6JGdp2S-Pdq3D4ApcEYzNh46gB-lwg89EL67gOJAQROarKdn4EvGDf6J7NAEhDBgU9X0rJKfRc_yuAi5jQcfciuVsK
emp表、dept表结构路径:
http://www.cnblogs.com/mchina/archive/2012/09/06/2649951.html
登录Oracle数据库两种方式:
sqlplus /nolog
sqlplus scott/tiger
连接数据库:
SQL>conn scott/tiger
SQL>conn / as sysdba 不需要输密码
SQL>conn ./as sysdba 需要输入密码
查询表内容:
SQL>select * from emp;
如果当前用户是sys需要查询其他用户的表时:SQL>select * from scott.emp;
显示当前用户名:SQL>show user;
查询所有表:SQL>select * from tab;
查询一张表的表结构:SQL>desc emp;
重复执行上一条sql语句,执行"/"即可;
取别名,在linux下oracle如果英文别名不加双引号,则变成大写:
SQL>select empno 编号,ename 姓名,job 工作 from emp;
查询emp表中所有工作,distinct 表示去重:
SQL>select distinct job from emp;
按照以下的格式进行结果输出,如 NO:7469,Name:SMITH,Job:CLERK
SQL>select 'NO:' ||empno|| ',Name:' ||ename|| ',Job:' ||job from job;
列出每个雇员的姓名及年薪:
SQL>select ename,sal * 12 income from emp;
查看每月可以得到奖金的雇员信息:
SQL>select * from emp where comm is not null;
查询基本工资不大于1500,同时不可以领取奖金的雇员信息
SQL>select * from emp not(sal>1500 and comm is not null);
BETWEEN .. AND 包含等于的情况
要求查询出雇员编号不是 7369、7499的雇员信息:
SQL> SELECT * FROM emp WHERE empno NOT IN(7369,7499);
查询雇员编号不是7369的雇员信息,使用<>或者!=
SQL>select * from emp where empno <> 7369;
SQL中 like 语句要注意通配符%和_ (模糊查询) "_"表示单个字符
SQL> select * from emp where hiredate like '%81%'
oracle通配符:http://wenku.baidu.com/link?url=Qu-lyg9tHEh5P_UW6oUidw9ZI0_T0uyzwBzucbpKQTC0ciPiq7OXHSMEmB8ZrBwhPPep0L2t1jWxTCml6nVW67KT14Vr1dxwJphbwa80wvS
排序,升序为默认(ASC),降序(DESC)
查看部门号为10的雇员信息,查询的信息按照工资从高到低,若工资相等则按雇佣日期从早到晚排序
SQL>select * from emp where deptno=10 group by sal desc,hiredate asc;
oracle数据库单行函数有:字符函数、数值函数、日期函数、转换函数、通用函数。
字符函数大小写转换:UPPER和LOWER
SQL>select UPPER('smith') from dual; (dual是一张伪表)
数值函数:
四舍五入:round() 截断小数位:trunc() 取余(取模)mod
SQL>select round(778.23) from dual;
SQL>select mod(10,3) from dual;
日期函数:
当前日期:sysdate
求出给定日期范围的月数:months_between()
转换函数:
to_char() 将日期或数值转换成字符串
to_number()将字符串转换成数字
to_date() 将字符串转换成日期
将日期按指定格式格式化
SQL>select empno,ename,to_char(hiredate,'yyyy-mm-dd') datetime from emp;
通用函数:
求出每个雇员的年薪(由于comm中有NULL,NULL值计算后还是NULL)
SQL>select empno,ename,nvl(comm,0),(sal+nvl(comm,0))*12 income from emp
NVL函数是将NULL值转换为具体的内容,这里是0
DECODE()函数,类似于IF ... ELSEIF ...ELSE
SQL>select empno,ename,hiredate,decode(job,'CLERK','业务员','SALESMAN','销售人员',‘MANAGER’,'经理') 职位 from emp; 解释:如果job字段值为CLERK则职位字段 显示“业务员”
找出早于12年前受雇的员工:
SQL>select * from emp where MonTHS_BETWEEN(sysdate,hiredate)/12 >12;
笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join)。所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数里的一个概念,表示第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。
假设集合A=a,b,集合B=0,1,2,则两个集合的笛卡尔积为(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)。
多表查询和事务处理*****
SQL> select e.empno,e.ename,d.deptno,d.dname,d.loc from emp e,dept d where e.deptno = d.deptno;
- ORACLE PL/SQL 基础
- ORACLE PL/SQL 基础
- oracle:sql 基础
- Oracle的SQL基础
- oracle pl/sql 基础
- oracle pl/sql 基础
- Oracle PL/SQL 基础
- Oracle PL/SQL 基础
- Oracle Sql基础
- Oracle SQL基础
- oracle PL/SQL 基础
- Oracle SQL基础
- Oracle PL/SQL基础
- oracle基础sql语句
- Oracle--PL/SQL基础
- Oracle:SQL基础
- Oracle之SQL基础
- Oracle SQL基础
- springMVC基础
- OC使用use_frameworks!添加swift,其他库头文件不提示
- 美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题
- Spring配合Junit进行单元测试
- 使用import scope解决maven继承(单)问题
- Oracle sql 基础
- Poj 3190 Stall Reservations【贪心+优先队列】
- NSPredicate
- 使用Memcache缓存mysql数据库操作的原理和缓存过程浅析
- 如何在ubuntu下安装PIP
- swift 接水果游戏ios源码
- QML中的SmoothedAnimation平滑动画
- iOS 最新版 CocoaPods 的安装流程
- Guid的生成和数据修整(去除空格和小写字符)