oracle第一天

 

一、安装注意事项

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

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

 

查看oracle服务:

需要启动两个服务。

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

 

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

 

SYS:数据库超级管理员 DBA

SYSTEM:数据库操作员。

 

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

 

二、数据库相关的概念

数据:

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

 

数据库:

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

 

数据库管理系统

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

 

常见:

oracle:oracle甲骨文

微软:sql-server

IBM:db2

mysql:免费的

 

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

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

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

 

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

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

 

数据库发展的历史:

1:网状

2:层次

3:关系数据库

 

db2 查询该月所有日期_db2 查询该月所有日期

4:对象数据库

5:nosql 数据库:not only sql

mongoDB  数据库

 

三、oracle-c/s

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

 

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

 

四、oracle概念

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

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

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

 

关系:指的就是二维表。

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

属性:列数据,字段。

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

域:属性的取值范围。

主键:可以唯一确定一行数据的属性或者属性组

 

LAMP:网络编程四剑客

L:linux

A:apache

M:Mysql

P:PHP

 

五、SQL概念

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

 

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

 

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

 

不同的数据库管理系统 又开发了自己特有的语言 ,对

Oracle:pl/sql.

sql server:t-sql.

 

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

 

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

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

 

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

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

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

2:对数据库对象的操作

对用户,表,约束,索引

3:用户权限的控制

授予

4:事务的控制

Transaction

 

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

 

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 empnoenamejob from emp

 

--使用算术表达式

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

select * from emp

select enamejob,sal*12 from emp

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

select enamejob,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 jobdeptno from emp

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

select distinct jobdeptno from emp

 

 

--排序

--显示员工的所有信息

select * from emp

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

select * from emp order by deptno asc

select * from emp order by deptno desc

 

--按照员工的年薪排序

select enamejob,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 ENAMEJOBsal 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 或者是 1600。or或者的意思,类似java中的||

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

 

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

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

select enamejobdeptno  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 enamejob,sal from emp where (job='CLERK' or job='MANAGER') and sal >2500 order by job

 

db2 查询该月所有日期_sql_02