2018-06-21 第四十六天 oracle

简介:

oracle第一天


  • 一、安装注意事项

(程序如有需要,评论私密索取)

如果指定路径,不要存在中文的目录。


查看oracle服务:

需要启动两个服务。

一个是 OracleServiceXE 服务,另一个是OracleXETNSListner 服务--启动。


XE 中自带了两个用户:SYS和SYSTEM


SYS:数据库超级管理员 DBA

SYSTEM:数据库操作员。


重新安装XE:直接在控制面板中卸载即可。再重新安装即可。


二、数据库相关的概念

数据: data

音频,视频 ,文本,都属于数据。


数据库: data base  DB

存放数据的仓库,以一种格式去存放数据。


数据库管理系统  DBMS  data base management system。

一个管理数据库的软件:更加高效的去管理数据库,更加高效的对数据进行操作。


常见:

oracle:oracle 甲骨文

微软:sql-server

IBM:db2

mysql:免费的


数据库管理员--DBA: data base Administrator。

使用数据库管理系统来操作数据库的。

需要 非常专业的数据库的知识。


数据库应用程序:给最终的用户使用的。

可以通过非常小白的操作就可以实现对数据库的操作。


数据库发展的历史:

1:网状

2:层次

3:关系数据库


4:对象数据库


5:nosql 数据库:not only sql

mongoDB  数据库


三、oracle-c/s

oracle 是基于 C/S  Client 客户端 -- Server 服务器


B/S: 浏览器 Browser -- 服务器 Server。


四、oracle概念

oracle 是一个数据库管理系统,管理数据库。

一个系统中可以有多个数据库。

目前就安装了一个数据库--XE。


关系:指的就是二维表。

元组:记录,指的是一条数据 ,一行数据。

属性:列数据,字段。

属性名:列数据的头名称。

域:属性的取值范围。

主键:可以唯一确定一行数据的属性或者属性组 primary key 联合主键(使用多个属性作为主键)


LAMP:网络编程四剑客

L:linux

A:apache

M:Mysql

P:PHP


五、SQL概念

SQL:Structured query language  结构化查询语言。


数据库管理系统可以识别的,用来操作数据库的语言。


所有的数据库管理系统都支持。


不同的数据库管理系统 又开发了自己特有的语言 ,对 SQL 进行扩展。

Oracle:pl/sql.

sql server:t-sql.


SQL 是一个非过程化语言。只需要标明我想做什么就可以了。而不需要具体说明如何做。


SQL 是 程序员和DBA 与数据库管理系统沟通的桥梁。

程序员+DBA--SQL-->DBMS--->DB


通过写SQL语句可以实现什么?

1:可以对数据实现 增删改查 CRUD

增加create、删除delete、改update、查 retrieve。

2:对数据库对象的操作

对用户,表,约束,索引

3:用户权限的控制

授予 grant,撤销权限  revoke。

4:事务的控制

Transaction


SQL 发展过程:sql 86-->sql89--->sql92--->sql 99--->sql 2003---08 ---09
主要学习的是 92 和 99。


SQL 分类:

1:数据查询语言DQL: data query language  

select :最重要最复杂的。


2:数据操作语言DML : data manipulation language

Insert、update、delete。


3:数据定义语言DDL:data definition language

cteate


4:数据控制语言DCL data control language


5:事务控制语言TCL Transaction control language


六、SQL命令行常用命令

登录、切换用户

conn scott/tiger

conn sys/sys as sysdba


加锁解锁账户

alter user scott account lock;

alter user scott account unlock;


显示当前用户

show user


清屏

host cls


七、基本SQL语句

--注释 使用 --


--最简单的sql 语句

--查询所有员工的信息

--需要告诉DBMS查询那张表,说明查询表的那些字段的数据

--from 后跟表的名称   select 后跟的是 查询的字段的内容  * 是通配符,代表当前表的所有的字段。

select * from emp

--显示部分内容 ,需要显示的字段使用逗号分割

select empno, ename, job from emp


--使用算术表达式

--查询员工的姓名,工作,年薪

select * from emp

select ename, job,sal*12 from emp

--任何数据和null 空做运算,结果还是空¡¤

select ename, job,sal*12+comm*12  from emp

select ename,job,sal*12, comm*12 from emp


--使用别名 

--sql 中,通过使用单引号 表示字符串,唯独   使用别名的时候,可以使用双引号表示字符串,as 关键字可以省略。

--除了别名,其他的地方基本上不使用双引号。都是单引号。

select ename 姓名 , job as 职位 , sal*12 as "年薪", comm*12 as 年奖金 from emp



--使用连接符   ||

--显示   xxx员工的编号为XXXX,入职日期为 XXXX,年薪为XXXX

select * from emp

select ename || ' 员工的编号 ' || empno ||  ' , 入职日期为 ' || hiredate || ' ,年薪为 ' || sal* 12 from emp



--去除重复行  distinct

--显示所有的部门编号

select deptno from emp

select distinct deptno from emp

--显示工作和部门编号

select job, deptno from emp

--去除字段组合的重复行

select distinct job, deptno from emp



--排序

--显示员工的所有信息

select * from emp

--按照部门编号排序  默认是升序排列 asc  降序是 desc

select * from emp order by deptno asc

select * from emp order by deptno desc


--按照员工的年薪排序

select ename, job,sal,sal*12 年薪 from emp order by sal*12


--排序的时候,使用字段的别名

select ename,job,sal,sal*12 年薪 from emp order by 年薪


-- 显示员工的 姓名,工资,部门编号,部门编号按照升序排列,如果部门编号相同,按照工资降序排列

select ename,sal,deptno from emp order by deptno asc ,sal desc



--sql 中那些内容是大小写敏感的?哪些是不敏感的。

--关键字   大小写不敏感

SELECT * from emp

--字段名  大小写不敏感

select ENAME, JOB, sal from emp

--表名称  大小写不敏感

select * from EMP

--字段的内容   查询 员工名为 scott 的员工的所有的信息

--字段的内容大小写敏感

select * from emp  where ename='SCOTT'



--where 子句

--作用:进行行数据的过滤


--查询姓名  scott的员工的信息

select * from emp  where ename='SCOTT'


--查询入职日期为1981/4/2 的员工的信息

--1 :使用默认的日期的字符串形式 'DD-MON-RR 

select * from emp where hiredate='2-4-1981'

-- 2:将日期字符串转换成 日期对象  to_date()


--查询工资大于1600的员工的信息

select * from emp where sal > 1600 order by sal

select * from emp where sal >= 1600

select * from emp where sal < 1600

select * from emp where sal <= 1600

select * from emp where sal=1600

select * from emp where sal != 1600

select * from emp where sal <> 1600



--查询1982/1/23 日期之后入职的员工的信息

--日期可以比较大小,是否相等

select * from emp where hiredate < '23-1-1982'


--查询工资在1000-2000之间的所有的员工的信息。and代表并且,相似java 中的&&

select * from emp where sal >=1000 and sal<=2000


--between xx and xx  闭区间的

select * from emp where sal between 1000 and 2000


--查询员工信息工资是 1100 或者是 1600or或者的意思,类似java中的||

select * from emp where sal = 1100 or sal = 1600


--查询所有员工中工种为  clerk  manager  analyst  的员工的信息  ename job  deptno

--字符串的排序规则  java 类似

select ename, job, deptno  from emp where job='CLERK' or job='MANAGER' or job='ANALYST' order by job


-- 在集合中的某一个值就可以  in ()

select ename,job,deptno from emp where job in ('CLERK','MANAGER','ANALYST')



--模糊查询  like

-- 通配符 % :代表任意个字符

--通配符 _ :代表任意一个字符


--查询员工姓名中包含 S 的员工的信息  

select * from emp where ename like '%S%'


--查询员工姓名 第二个字符为A的员工的信息

select * from emp where ename like '_A%'



--查询名字中包含 _ 的员工的信息

--escape 转义指定字符为转义字符

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



--查询名称中不包含 S 的员工的信息  not like

select * from emp where ename not like '%S%'


--空判断,显示所有奖金是 null 的员工的信息

select * from emp where comm is null


--非空判断  显示所有奖金是 不是 null 的员工的信息

select * from emp where comm is not null


--工作是 clerk 或者 manager 并且 sal 大于 2000

--条件连接符 and  or  的连接的 优先级 不同  and 的优先级 大于 or  ,需要配合小括号控制结合的顺序

select ename, job,sal from emp where (job='CLERK' or job='MANAGER') and sal >2500 order by job


目录
相关文章
|
关系型数据库 数据库 Oracle
|
SQL 关系型数据库
2018-06-27 第五十二天 oracle
一、相关子查询 --1:查询本部门的最高工资的员工的信息 --查询10部门的最高工资的员工的信息 --10部门的最高工资 select max(sal) from emp where deptno=10 select * from emp where deptno=10 and sal=(sele.
1065 0
|
SQL 关系型数据库 Oracle
|
SQL 关系型数据库 Java
|
Oracle 关系型数据库
|
SQL Oracle 关系型数据库
oracle培训第四天
1.DML操作及名称空间 模式与对象名称空间的关系 模式(schema)是一种逻辑结构,它对应于用户,每建一个用户就有一套模式与之对应。
1052 0
|
存储 监控 Oracle
oracle培训第五天
1.oracle体系架构 实例和数据库 oracle server :database + instance database :data file ,control file...
945 0
|
SQL Oracle 关系型数据库
oracle大师的点拨分享
突然想起前段时间和美国一个oracle大师的邮件交流,感觉受益匪浅,大师还是很热心的,为了保护隐私,只说他是oaktable的会员,很有经验而且谦逊的一个人。 交流的邮件如下,希望大家也能收到一些感悟。
848 0