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