oracle sql基础学习,sql基础学习(oracle)
发布日期:2021-06-24 15:18:59 浏览次数:2 分类:技术文章

本文共 2161 字,大约阅读时间需要 7 分钟。

普通用户连接:Conn scott/tiger

超级管理员连接:Conn"sys/sys as sysdba"

Disconnect: 断开连接

Save c:\1.txt 把SQL 存到文件

Ed c:\1.txt 运行SQL语句

Desc emp:描述Emp结构

Select *from tab:查看该用户下的所有对象

Show user:显示当前用户

如果在sys用户下:查询Select * from emp;会报错,原因是属于scott,所以此时必须使用:select * from scott.emp;

/  运行上一条语句

SQL 简介查询基础

DML语句(数据操作语言) Insert、Update、Delete、Merge(合并)

DDL语句(数据定义语言)Create、Alter(改变)、Drop、Truncate(截短)

DCL语句(数据控制语言) Grant(授予)、Revoke(吊销)

事务控制语句 Commit、Rollback、Savepoint

使用算术表达式 用+ - /*

连接运算符 ||

使用字段别名 as

空值 is null

去除重复行 distinct

ps: select  distinct  * from tablename

显示当前时间用sysdate

Having 和Where的简单介绍

WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。

GROUP BY 子句用来分组 WHERE 子句的输出。

HAVING 子句用来从分组的结果中筛选行

ps:

having 必须group by   having用在 group by 之后  where 用在from之后

having 可以用聚合函数

查询结果排序 order by asc(desc)

例子:

Sql代码

SELECT字段列表FROM表名WHERE条件

ORDERBY字段名1 [ASC|DESC][,字段名2 [ASC|DESC]...];

SELECT 字段列表 FROM 表名 WHERE 条件

ORDER BY 字段名1 [ASC|DESC][,字段名2 [ASC|DESC]...];

ORDER BY从句后跟要排序的列。ORDER BY 从句出现在SELECT语句的最后。

排序有升序和降序之分,ASC表示升序排序,DESC表示降序排序。如果不指明排序顺序,默认的排序顺序为升序ASC。如果要降序,必须书写DESC关键字

比较运算符 >)between and

in 操作 not in

对于 in和exists的性能区别:

如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in,反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists。

其实我们区分in和exists主要是造成驱动程序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询,所以我

们会以驱动表的快速返回为目标,那么会考虑到索引及结果集的关系了

另外 IN是对NULL进行处理的

如:select 1 from dual where null in(0,1,2,null)

为空

模糊查询 like

%表示零或多个字符

_ 表示一个字符

对于特殊符号可使用ESCAPE标志符来查找

select *from emp where ename like'%_%'escape'*'

上面的escape 表示*后面的那个符号不当成特殊字符处理,就是查找普通的_符号

逻辑运算符 or and not

练习(如果用的是system权限的话 下面的表的名字应改为 scott.emp)

选择在部门30中员工的所有信息

select * from emp where deptno=30;

列出职位位(MANAGER)的员工的编号,姓名

select empno,ename from emp where job='Manager';

找出奖金高于工资的员工

select * from emp where comm>sal;

找出每个员工奖金和工资的总和

select comm+sal ,ename from emp;

找出部门10中的经理(MANAGER)和部门 20的普通员工(CLERK)

select * from emp where (deptno=10 and job=‘MANAGER') or (deptno=30 and job='CLERK');

找出部门10中既不是经理也不是普通员工,而且工资大于2000的员工

select * from emp where deptno=10 and job not in('MANAGER','CLERK') and sal>2000;

找出没有奖金或者奖金低于500的员工

select * from emp where comm<500 or comm is null;

显示雇员姓名,跟军其服务年限,将最老的员工排在最前面

PS:因为最老的年份最小 所以默认还是从小到大的asc排序

select ename from emp order by hiredate;

转载地址:https://blog.csdn.net/weixin_33587731/article/details/116467355 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:linux命令不在那个列里,ls命令在linux操作系统里的20个实用范例
下一篇:重新启动oracle 实力,oracle实力的维护

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月02日 21时21分42秒