一、数据库
数据库技术到目前共经历以下几个阶段:
- 人工管理阶段
- 文件系统阶段
- 数据库系统阶段
人工管理阶段
特点:
- 数据不保存
- 没有对数据进行管理的软件系统
- 没有文件的概念
- 一组数据应对于一个程序,数据是面向应用的
文件系统阶段
特点:
-
数据需要长期保存在外存上供反复使用
-
程序直接有一定的独立性
-
文件的形式已经多样化
-
数据的存取基本上以记录为单位
数据库系统阶段
特点:
- 采用复杂的结构化的数据模型
- 较高的数据独立性
- 最低的冗余性
- 数据控制功能
1.1 数据库特点
- 实现数据共享
- 减少数据的冗余度
- 数据的独立性
- 数据实现集中控制
- 数据一致性和可维护型性,以确保数据的安全性和可靠性
二、oracle环境
$cls // 清楚屏幕
conn briup/briup // 切换连接
sqlpuls system/system // 连接到数据库 ,即登录
show user // 查看当前登录的用户
exit // 退出sql
create user test1 identified by test1; //创建用户test1,设置密码test1
grant connect,resource to test1; // //把角色connect和resource授权给test1账号
drop user test1; // 删除用户
@ 路径 // 导入
三、数据库对象
常见的数据库对象:
- 用户 --> user
- 表 --> table
- 视图 --> view
- 索引 --> index
- 触发器 --> trigger
- 存储过程 --> procedure
- 同义词 --> synonym
- 序列 --> sequence
四、sql
-
DQL(Data Quey Language),数据库查询
用于检索数据库中的数据,主要是SELECT
语句 -
DML(Data Mainpulation Language),数据操作语言
用于改变数据库中的数据,主要是inster
,update
,delete
语句 -
DDL(Data Define Language),数据定义语言
用来建立、修改、删除数据库对象,主要是create
、alter
、drop
、truncate
语句 -
TCL(Transaction Control Language),事务控制语言
用于维护数据的一致性,主要是commit
,rollback
,savepoint
语句 -
DCL(Data Control Language),数据控制功能
用于执行权限授予和权限收回操作,主要是grant
,revoke
语句
这是重点要记住!!! |
sql、sqlpius、pl、sql的区别:
sql:结构化的查询语句,操作oracle数据库的语言
sqlplus:操作oracle软件自带的可以输入sql
,且将sql
执行结果
pl/sql:程序化的sql语句,在sql语句的基础上加入一定的逻辑操作,如:if
for
等
5.1 select
查看s_dept表中所有的记录
select *
from s_dept;
例如,查看s_dept表中所有记录的指定三个字段:id,name,region_id
select id,name,region_id
from s_dept;
5.2 运算
例如,查看每个员工的员工id,名字和年薪
select id,name,(salary*12) as sal
from s_emp;
[as]可以省略
5.3 别名
例如,查看员工的员工id,名字和年薪,年薪列名为annual
select id,name,salary*12 as annual
from s_emp;
5.4 拼接
例如,查看员工的全名
select last_name || first_name
from s_emp;
5.5 nvl
使用nvl函数可以将null进行替换
例如,查看所有员工的员工id,名字和提成,如果提成为空,显示成0
select id,last_name,nvl(commission_pct,0) commission_pct
from s_emp;
5.6 distinct
distinct:去重复数据
如果 distinct
关键词后面如果出现多列,表示多列联合去重,即多列的值都相同的时候才会认为是重复的记录
例如,查看所有员工的职位名称和部门id,同职位同部门的只显示一次
select distinct title,dept_id
from s_emp;
5.7 format
使用 format
可以将查询结果显示的宽度进行调整。
col last_name format a15;
清除设置的格式:
clear col
5.8 排序
例如,查看员工的id,名字和薪资,按照薪资的降序排序显示,工资相同就按名字升序排
select id,last_name,salary
from s_emp
order by salary desc,last_name asc;
asc可以不写,默认就是asc
desc:降序
asc:升序
5.9 条件查询
模糊查询:
like
,模糊查询,在值不精确的时候使用
%
,通配0到多个字符-
,通配一个字符\
,转义字符,需要使用escape
关键字指定,转义字符只能转义后面的一个字符
例如:查看员工名字以C字母开头的员工id,工资
select id,last_name,salary
from s_emp where last_name like 'C%'; 123
between and
操作符,表示在俩个值之间
例如:查询工资大于1000小于1500员工的信息
select id,last_name,salary
from s_emp
where salary between 1000 and 1500;
in()
,表示值在一个指定的列表中
例如,查看员工号1,3,5,7,9员工的工资
select id,last_name,salary
from s_emp
where id in (1,3,5,7,9);
is null
,判断值为null的时候使用,null值的判断不能使用等号
例如:查询commission_pct为null的员工的信息?
select id,last_name,salary,commission_pct
from s_emp
where commission_pct is null;
and
、or
,逻辑操作符,当条件有多个的时候可以使用
and的优先级比or高
例如,查看员工部门id为41且职位名称为Stock Clerk(存库管理员)的员工id和名字
select id,last_name,dept_id,title
from s_emp
where dept_id = 41 and title = 'Stock Clerk';
例如,查看员工部门为41 或者 44号部门,且工资大于1000的员工id和名字
select id,last_name,dept_id,title
from s_emp
where salary > 1000 and (dept_id = 41 or dept_id = 44 );
例如,查看员工部门为41且工资大于1000,或者44号部门的员工id和名字
select id,last_name,dept_id,title
from s_emp
where salary > 1000 and dept_id = 41 ordept_id = 44;
注意,以上两个sql语句,执行的结果是不一样的,它们的区别就是第一个sql在条件中多了个小括号