数据库之Oracle的使用【入门版,包括常用的Sql语句】

在命令提示符里输入sqlplus

或直接打开sqlplus

scott/tiger(用户名/密码){或先输入用户名(scott)-回车-输入密码(tiger)}

1.sqlplus

Orcale提供的一个客服端工具,通过使用这个工具可以发送一些sql

与数据库进行通通讯

sqlplus命令

<1>本机登录

sqlplus 用户名/密码

sqlplus 用户名

sqlplus/nolog-->启动sqlplus字符界面,然后通过conn用户

<2>查看当前用户:show user

<3>退出sqlplus:exit

<4>清屏:

SQL>clear screen

host cls.

<5>desc 表名:显示表结构

<6>set pagesize 20每页显示20

<7>set linesize 300 ,,每页300字符

其他

数据库--》

1关系型数据库(sql数据库)oracle .sqlserver ,mysql,psql

<表,记录 ,列>

数据库--》2 nosql(not only sql 不仅仅是关系库)

互联网时代,大数据的存储,非结构化的数据的存储

集群的应用中比较广泛

Key/value结构--》redis/MemcachedM(内存数据库)

文档数据库--》Mongodb

列数据库--》Hbase,Cassandra

图数据库--》neo4j

2.SQL(StructuredQuery Lanuage)语句

结构化查询语句,可以理解成客户端与服务器端进行沟通的桥梁

通过使用sql

可以更好的访问,操作数据库中的数据

通过sql我们可以操作表中的数据(增删改),创建表,库,视图,索引,

分配权限,角色等等

sql分类

<1>DML(数据库操纵语言)-->操作的是数据库表中的数据

<2>DDL(数据库定义语言)-->操作的是数据库中的对象

<3>DCL(数据控制语言)-->操作的是数据库中的权限,角色

《1》行选择

《2》列选择

《3》表联接

SQL的书写原则:

《1》不区分大小写

《2》一条sql语句可以写成一行也可以写在多行

《3》建议不同字句分行写,以增强可读性

注意说明:

1.当执行一条sql查询语句时,oracle服务器会解析

查询语句(通过内部的一些算法)得到

最优的执行计划(Oracle Server认为最优的),然后去执行

那么这个过程是最耗时的

在开发过程中一般对sql语句的书写会有一些规定:

2.oracle有一个共享池原理,一个sql查询语句,分析之后会被存储起来

下次如果有一模一样的查询语句产生,不会重新解析

,一模一样指大小写,空格等完全一模一样。

个原理只针对简单查询(不能是多表查询,子查询查询)

3.基本SQL 查询语句

语法:

select [all|distinct]<目标列表表达式>

from<表名或视图名>

[where<条件表达式>]

[group by <列名1> having <条件表达式>]

[order by <列名2>asc|desc];

【1】如果有order by 子句,则结果要按照<列名2>的升序或

降序排序(默认是升序排列)

oracle 默认实例库(安装的时候默认已经安装上)

就自带有一些表,我们可以利用主要的是:

EMP ,DEPT ,SALGRADE表

select * from emp;

说明:我们在开发使用中,不建议使用*

*指的是列出所有的列

会去查询数据

数字字典,反而耗时应该要查询哪些列,直接列出即可

select deptno ,dname,loc from dept;

<3>注意:

在开发中,建议只列出自己所需要的列这样可以减少IO

的操作提高效率

<4>去除出重复的列distinct

从员工得部门的部门编号

select deptno from emp;(好多重复得deptno)

select distinct deptno from emp;

<5>表达式的应用

[1]查看所有员工的姓名和年工资

select ename ,sal*12 from emp;

[2]查询员工的名字和月收入(假设奖金每月是300 )

select ename ,sal+300 from emp;

<6>别名的应用

select ename,sal* 12 as nianshouru from emp;

as 可省略

建议使用别名可以提高检索效率;

4.限制条件的查询

select *|distinct 列名,表达式 别名

from 表名

where 子句

order by 子句;

【1】如果有order by 子句,则结果要按照<列名2>的升序或

降序排序(默认是升序排列)

[1]查询雇员的名字,薪水并按雇员的薪水进行排序(从低到高)

select ename , sal from emp order by sal asc;

select ename , sal 工资 from emp order by sal;(默认是升序)

select ename , sal 工资 from emp order by 2;(根据第二列)

[2]查询雇员的名字,薪水,并按照雇员的名字升序,薪水降序排序

select ename ,sal 工资 from emp order by ename asc ,sal desc;

【2】where

[1]查询名字为KING的薪水

select ename ,sal from emp where

ename = ‘KING‘;要用单引号

[2]查询薪水不等于3000的雇员的名字和薪水

select ename ,sal from emp where sal !=3000;

select ename , sal from emp where sal<>3000;

select ename,sal from emp where sal not in(3000);

[3] 查询薪水大于等于1000小于等于3000的雇员的姓名薪水

select ename ,sal from emp where sal >=1000 and sal <=2000;

或者

select ename ,sal from emp  where sal between 1000 and 2000;

(not between)

[4]查询薪水大于3000或小于1000的雇员的姓名和薪水

select ename ,sal from emp where sal <=1000 or sal >= 3000;

[5]查询薪水等于1000或3000的雇员的姓名和薪水

select ename ,sal from emp where sal =1000 or sal = 3000;

注意:此处是=号而不是==

或者

select ename,sal from emp where sal in(1000,3000);

[6]查询87 年入职的员工的姓名和薪水

模糊查询

select enamel ,sal,hiredate from emp where hiredate

like ‘%87%‘;

其中:%代表0或多个字符;

[7]查询名字以K 打头的人的相关信息

select ename,sal from emp where ename like ‘K%‘;

[8]查询名字包含A字母的雇员信息

select ename ,sal from emp where ename like ‘%A%‘;

[9]查询名字第二个字母是Z的雇员信息

select ename,sal from emp where enem like ‘_Z%‘;

其中_代表任意一个字符

[10]查询入职日期是87年5月23日的员工姓名和薪水

默认的日期格式:‘23-5-87‘代表1987年5月23

将来可以修改日期格式

select ename ,sal from emp where hiredate = ‘23-5月-87 ‘;

[11]查询入职日期在87年5月23日到89年入职的雇员工资

(也可以查询在某个区间的)

select ename ,sal from emp

where hiredate>=‘23-5月-87‘and hiredate<=‘23-5月89‘;

[12]查询奖金为null的员工的姓名和薪水

is null/is not null;

select ename ,sal 工资 from emp

where comm is null;

[13]查询部门编号为20的雇员信息,并按薪水升序排序

select ename ,sal deptno from emp

where deptno = 20 order by sal;

[14]转义字符的应用

select ename ,sal from emp where ename

like ‘\_S%‘;

[15]格式控制输出:

按右边指定格式输出(SMITH is a CLERK)

||进行拼接操作

select ename || ‘ is a ‘ ||job

from emp

where job = ‘CLERK‘and ename = ‘SMITH‘;

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-19 00:24:18

数据库之Oracle的使用【入门版,包括常用的Sql语句】的相关文章

oracle 常用相关sql 语句

一.oracle 常用相关sql 语句 1. 连接数据库       su - oracle -c " sqlsplus 用户/密码     注:首次登陆用  sqlplus / as sysdba            注: 关闭数据库:注:shutdown可加关闭选项,从最温和到最粗暴的行为选项为(shutdown.shutdown transactional.shutdown immediate.shutdown abort)                 shutdown:关闭,等待每

Oracle 学习之性能优化(一)SQL语句处理

当向Oracle提交一个sql命令时,Oracle到底做了哪些事情?对这个问题有很好的理解,能帮助你更好的分析sql语句的优化. 执行一条sql语句从开始到结束,需要经历4个步骤: 分析--对提交的语句进行语法分析.语义分析和共享池检查. 优化--生成一个可在数据库中用来执行语句的最佳计划 行资源生成--为会话取得最佳计划并建立执行计划 语句执行--完成实际执行查询的行资源生成步骤的输出.对应DDL来说,这一步就是语句的结   束.对应SELECT来说,这一步是取数据的开始. 以上步骤,有的是可

oracle 实时查询最耗CPU资源的SQL语句

1. 先通过top命令查看产用资源较多的spid号 2.查询当前耗时的会话ID,用户名,sqlID等: select sid,serial#,machine,username,program,sql_hash_value,sql_id,        to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') as login_time from v$session where paddr in (select addr from v$process where sp

MySQL创建用户以及授权、常用的sql语句、MySQL数据库的备份与恢复

MySQL创建用户以及授权 常用的sql语句 MySQL数据库的备份与恢复 对于大数据的备份请查阅资料 原文地址:http://blog.51cto.com/13515599/2090425

基于ORACLE数据库的循环建表及循环创建存储过程的SQL语句实现

一.概述 在实际的软件开发项目中,我们经常会遇到需要创建多个相同类型的数据库表或存储过程的时候.例如,如果按照身份证号码的尾号来分表,那么就需要创建10个用户信息表,尾号相同的用户信息放在同一个表中. 对于类型相同的多个表,我们可以逐个建立,也可以采用循环的方法来建立.与之相对应的,可以用一个存储过程实现对所有表的操作,也可以循环建立存储过程,每个存储过程实现对某个特定表的操作. 本文中,我们建立10个员工信息表,每个表中包含员工工号(8位)和年龄字段,以工号的最后一位来分表.同时,我们建立存储

Oracle数据库常用的Sql语句整理

查看当前用户的缺省表空间 : select username,default_tablespace from user_users; 2.查看用户下所有的表 : select * from user_tables; 3.创建表空间 :CREATE TABLESPACE invocie DATAFILE '/data/InvoiceData/invoicebak/invocie_01.dbf' Size 4096M AUTOEXTEND OFF: CREATE TABLESPACE "MIS_DA

oracle之 v$sql_monitor 监视正在运行的SQL语句的统计信息

11g中引入了新的动态性能视图V$SQL_MONITOR,该视图用以显示Oracle监视的SQL语句信息.SQL监视会对那些并行执行或者消耗5秒以上cpu时间或I/O时间的SQL语句自动启动,同时在V$SQL_MONITOR视图中产生一条记录.当SQL语句正在执行,V$SQL_MONITOR视图中的统计信息将被实时刷新,频率为每秒1次.SQL语句执行完成后,监视信息将不会被立即删除,Oracle会保证相关记录保存一分钟(由参数_sqlmon_recycle_time所控制,默认为60s),最终这

oracle处理考勤时间,拆分考勤时间段的sql语句

最近一直在用mysql数据库做云项目,有段时间没有接触oracle了,昨天有朋友叫我帮忙用oracle处理一个考勤记录的需求,我在考虑如何尽量精简实现上面花了一段时间.于是把这个实现做个记录. 需求如下: rownum为奇数的为进厂时间,偶数的为离场时间 第一个奇数行的时间被第一个偶数行相减,以此类推 将上面两步产生的时间结果集相加得出总时间作为当天考勤时间 最终能和别的表联合起来形成这样的展示: 人员 日期 工时 入厂时间 出厂时间 张三 2015/6/18 9小时30分钟 8:00:00 1

为什么数据库有时候不能定位阻塞(Blocker)源头的SQL语句

在SQL Server数据库或OACLE数据库当中,通常一个会话持有某个资源的锁,而另一个会话在请求这个资源,就会出现阻塞(blocking).这是DBA经常会遇到的情况.当出现SQL语句的阻塞时,很多人想查看阻塞的源头(哪个SQL语句阻塞了哪个SQL),这样方便直观.简洁明了的定位问题.但是很多时候,很多场景,我们通过SQL语句并不能或者说不容易定位到阻塞者(Blocker)的SQL语句,当然我们可以很容易找到被阻塞的SQL语句,以及它在等待的锁资源.下面我们先分析一下SQL Server数据