oracle笔记

 

一、Oracle前置知识:

1.    相关服务启动: 运行 > services.msc

I.     OracleServiceXE(ORCL):Oracle主(核心)服务,开启后才可通过本机访问数据库。

II.    OracleXE(oraDb11g_home1)TNSListener:Oracle监听服务,对外提供连接访问,开启后才可通过应用程序或其他客户端进行访问。

 

2.    解锁HR用户:开始>运行 >cmd >

sqlplus /nolog > conn sys as sysdba > alteruser hr identified by 密码 account unlock;

      登录:C: sqlplus hr/123456

登录:SQL> conn hr > 123456

查表:select table_name from user_tables;

 

3.    设置hr用户会话特权和操作权限:

<user test lacks create sessionprivilege logon denied>     缺少特权

I.     grantconnect to hr;

II.    grantresource to hr;

III.   grantcreate session to hr;

 

一、现有的数据存储方式:

1.    Java程序存储数据(变量、对象、数组、集合),数据保存在内存中,属于瞬时状态存储。

2.    文件(File)存储数据,保存在硬盘上,属于持久状态存储。

I.     缺点:

a.    没有数据类型的区分。

b.    存储数据量级较小。

c.    没有访问安全限制。

d.    没有备份、恢复机制。

 

二、数据库管理系统DBMS(Database Management System):

1.    网状结构数据库:美国通用电气公司IDS(integrated Data Store),以节点形式存储和访问。

2.    层次结构数据库:IBM公司IMS(informationManagement System)定向有序的树状结构实现存储和访问。

3.    关系结构数据库:Oracle、DB2、MySQL、SQL Server,以表格(Table)存储,多表间建立关联关系,通过分类、合并、连接、选取等运算实现访问。

4.    非关系型数据库:MongDB、Redis,使用哈希表,表中以键值(key-value)的方式实现特定的键和一个指针指向的特定数据。

 

三、Oracle数据库:

1.    Oracle服务器:安装在操作系统中的关系数据库管理系统(RDBMS Relationship),并对外提供存储及访问的服务(增删改查)。

相关服务启动: 运行 > services.msc

I.     OracleServiceXE(ORCL):数据库服务(实例),Oracle主(核心)服务,开启后才可通过本机SQL*Plus访问数据库。

II.    OracleXE(oraDb11g_home1)TNSListener:Oracle监听服务,对外提供连接,开启后才可通过应用程序或其他客户端(PL/SQL)进行访问。

III.   OracleJobSchedulerXE(ORCL):Oracle作业调度(定时器)服务。

 

2.    Oracle客户端:对DBMS中数据的访问渠道。

I.     SQL*Plus:  DOS操作界面,运行-> cmd -> sqlplus 用户名/密码  |  sqlplus /nolog -> conn 用户名; -> 密码

II.    iSQL*Plus: Web操作界面,访问http://localhost:8080/apex

III.   PL/SQLDeveloper:Oracle数据库集成开发工具。

 

四、结构化查询语言SQL(Structured Query Language):用于操作数据和管理关系型数据库系统的程序设计语言。

 

五、数据查询

1.    基本查询:

I.     语法:select 列名 from 表名

II.    案例:

1).   查询部分列:

//查询员工表中的所有员工的编号、名字、邮箱。

select employee_id , first_name , email

from employees;

 

2).   查询所有列:

select * from employees;

注:生产环境下,优先使用列明查询,*的方式需要转换成全列明,效率低,可读性差。

 

3).   对列中的数据进行计算:+ - * /

//查询员工表中所有员工的编号、名字、年薪。

select employee_id , first_name , salary * 12

from employees;

 

4).   列的别名:

select employee_id as"工号" , first_name as "名字" , salary * 12 as "年薪"

from employees;

别名中如果有空格必须加“ ”

 

5).   拼接字符串:

//查询所有员工的编号和“姓名”

select employee_id , first_name || '.' || last_name

from employees;

注:SQL中的字符串使用 ' (单引号)表示;双引号在列明中使用,常用于定义别名。

 

6).

//查询员工表中所有经理的ID。

select distinct manager_id

from employees;

 

2.    排序:对查询后的结果数据进行排列。

I.     语法:select 列名 from 表名 order by 排序列(默认升序  asc | 降序desc)

II.    案例:

1).   依据列排序

//查询员工表中编号、名字、薪资,按照薪资降序排序

select *

from employees

order by salary desc

 

2).   依据列排序

select *

from employees

order by salary desc , employee_id desc

3.    条件查询:筛选符合条件的查询结果

I.     语法:select ... from ... where 布尔表达式

II.    案例:

1).   等值判断:(=)

//查询薪资是11000的员工信息

select *

from employees

where salary = 11000

字符串常量,日期格式要用‘ ’圈上,区分大小写

‘King’       查日期都要用这种格式,不管表里格式是什么  '17-6月-1987'       (年用后两位数字也可查询)

 

2).   多条件判断:(and、or)

//查询薪资是11000的员工信息,并且提成为0.30

select *

from employees

where salary = 11000 and commission_pct = 0.30

 

3).   不等值判断:(>= <=  >  < !=  <>)

//查询员工的薪资在6000~10000之间的员工信息

select *

from employees

where salary >= 6000 and salary <= 10000

 

4).   区间判断:(between and)

//查询员工的薪资在6000~10000之间的员工信息

select *

from employees

where salary between 6000 and 10000

 

取非:/查询员工的薪资不在6000~10000之间的员工信息

select *

from employees

where salary not between 6000 and 10000

 

 5).   null值判断:(is null、is not null)

//查询没有提成的员工信息

select *

from employees

where commission_pct is not null

 

6).   枚举查询:(in(v1,v2,v3))     or 的效率比in

//查询部门编号为60、70、80、90的员工信息

select *

from employees

where department_id in(60,70,80,90)

 

//查询部门编号不为60、70、80、90的员工信息

select *

from employees

where department_id not in(60,70,80,90)

 

 

7).   模糊查询(%:任意长度的任意字符,_:长度为1的任意字符)like

//查询名字以"L"开头

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值