数据库概述
1.数据库管理系统(DBMS)
管理数据库的软件,具有对数据存储,安全,一致性,并发操作,恢复和访问等功能。
2.数据库的发展
<1>手工管理阶段
应用程序管理数据,数据不保存,不共享,不具有独立性。
<2>文件管理阶段
文件系统管理数据,数据可长期保存,共享性差,冗余度大,独立性差。
<3>数据库管理阶段
数据库系统管理数据,数据结构复杂,冗余度小,易扩充,较高独立性,统一数据控制。
3.数据库的特征
数据结构化
实现数据共享
减少数据冗余
数据独立性
4.数据库类型
网状型数据库
层次型数据库
关系型数据库:指一些相关的表和其他数据库对象的集合。
5.关系数据库的数据操作语句
数据库操作语句(DML):SELECT,INSERT,UPDATE,DELETE
数据库定义语句(DDL):CREATE,ALTER,DROP
其他语句:。。。
6.关系数据库的完整性原则
--实体完整性原则
--引用完整性原则
主关键字(primary key):指表中的某一列或多列组合,该列或组合的值唯一标识一行,即主关键字的值必须唯一且不允许为NULL。
外关键字(foreign key):指一个表中的一列或一组列,他们在其他表中作为主键或唯一键而存在。一个表的外键被认为是对另一个表中主键的引用。
Oracle数据库
1.数据库核心文件:
数据文件:存放用户的数据和系统的数据。一个Oracle数据库一般会包含多个数据据文件。重做日志文件:记录了系统改变的日志。主要用于数据库恢复。
控制文件:记录数据库的一些核心配置数据。
2.数据库对象:
表:存放用户数据的对象
约束:设置字段符合一定的规则
视图:虚表,是一个命名查询,用于改变基表数据的显示,简化查询。
索引:构建于表的单字段或者字段组合上,用于加速对表中数据的查询。
序列:产生顺序的不重复的字串,被作为主键约束值得参照
存储过程:用于完成某种特定的功能的PL/SQL程序,存储在数据库中
函数:用于进行复杂计算的PL/SQL函数,返回一个计算结果,存储在数据库中。
触发器:由事件触发而执行的PL/SQL程序用于在特定的时机执行特定的任务,存储在数据库中。
包:一组相关的函数和存储过程的命名集合,存储在数据库中。
3.Oracle内置用户:
SYS: 超级用户 最高权限用户 sys/oracle as SYSDBA
SYSTEM: 管理员 system/oracle
Scott: 测试连接 scott/tiger
Hr: 案例使用者 hr/
SQL语言简介
1. SQL称结构化查询语言,是操作和检索关系型数据库的标准语言。
2. SQL语言分类:
DML语句(数据操作语言):Insert / Update / Delete / Merge
DDL语句(数据定义语言): Create / Alter / Drop / Truncate
DCL语句(数据控制语言):Grant/Revoke
事务控制语句:Commit/Rollback/Savepoint
3.SQL语句书写规则:
<1>.不区分大小写
<2>.可以单行来书写,也可以多行来书写。
<3>.关键字不可以缩写,分开及跨行书写
<4>.每条语句需要以分号结尾
<5>.关键字大写其他语法元素小写
<6>.代码适当缩进
4.使用列别名的方法:
<1>.列名 列别名
<2>.列名 AS 列别名
以下三种情况,列别名两侧需要添加双引号(“”):
---列名中包含空格
---列名中要求区分大小写
---列名中包含有特殊字符
5.连接运算符的使用:(||)
SELECT first_name||' '||last_name||'''s phonenumber is '||phone_number "employee Phone number"
FROM employees;
7.DISTINCT关键字的用法:
SELECT DISTINCT department_id FROM employees;
8.部分SQLPLUS命令介绍:
Alter user scott account unlock;为scott用户解锁
Alter user hr identified by hr account unlock;为hr用户解锁并设置密码为hr
Describe +表名 查看表结构
Alter session set nls_language = “American”;设置oracle环境为美国英语环境
SQL语言查询语句基本句型
1. selectfrom emp where deptno = 20;
2. selectemployee_id,last_name,salary from employeeswhere salary>=12000;
3. selectlast_name,hire_date from employees where hire_date >=’01-1月-1999’;
特殊比较运算符:
4. selectemployee_id,last_name,salary from employees where salary
between 4200 and 6000;
5. selectemployee_id,last_name,salary,department_id from employees where department_id in(10,90,110);
6. selectemployee_id,last_name,salary from employees where last_name
like ‘S%’;
7. selectemployee_id,last_name,salary from employees where last_name
like ‘_b%’;
8. SELECT employee_id, last_name, job_id, salaryFROMemployeesWHERE job_id LIKE 'FI\_%' ESCAPE '\';(查询JOB_ID以“FI_”开头的雇员信息,使用ESCAPE标识符来查找带特殊符号的字符号)
9. Select employee_id,last_name,salary,department_idfrom employees where department_id is null;
逻辑运算符:
10. selectemployee_id,last_name,salary from employees where salary>=4200
and salary<=6000;
11. SELECT last_name, salary, department_idFROM employeesWHEREsalary>10000 AND
department_id in (60,90);
12. SELECT last_name,salary, department_id FROM employeesWHERE salary>10000
OR department_id in (60,90);
13. SELECT last_name, job_id, salary FROMemployees WHEREjob_id
NOT IN('IT_PROG', 'ST_CLERK', 'FI_ACCOUNT');
运算符优先级
14. select last_name,job_id,salary,department_id fromemployees where job_id = ‘FI_ACCOUNT’ OR job_id = ‘AD_VP’ AND SALARY>16000;(查找职位是FI_ACCOUNT或工资超过16000的职位是AD_VP的员工)
15.SELECT last_name, job_id,salary, department_id FROM employees WHERE (job_id= 'FI_ACCOUNT' ORjob_id= 'AD_VP') AND salary >16000;(查找工作超过16000并且职位是FI_ACCOUNT或是AD_VP的员工)
ORDER BY的使用
15. Select last_name,job_id,salary,department_idfrom employees order by department_id DESC;(按照员工部门降序排列。)
16. Select last_name,job_id,salary*12annual,department_id from employees order by annual;(按列别名排序)
17. Selectlast_name,job_id,salary,department_id from employees order by job_id,salary desc;(多列排序)
18. Select last_name,job_id,hire_date fromemployees order by salary;(order by 子句可以出现在select子句中没有出现过的列)
19.SELECT last_name, job_id,salary, department_id FROMemployees ORDER BY 2, 3 desc;( ORDER BY子句后的列名,可以用数字来代替。这个数字是SELECT语句后列的顺序号。)
---oracle中不等于用“<>”表示
---字符及日期类型需要在两端用单引号
---字符类型大小写敏感
---日期类型格式敏感,默认格式“DD-MON-RR”
---Oracle里面通配符有%和_,其中%可以代替任意长度字符(包括长度为零),_可以代替一个字符
---数字升序排列小值在前,大值在后。即按照数字大小顺序由小到大排列。
---日期升序排列相对较早的日期在前,较晚的日期在后。例如:’01-SEP-06’在’01-SEP-07’前。
---字符升序排列按照字母由小到大的顺序排列。即由A-Z排列;中文升序按照字典顺序排列。
---空值在升序排列中排在最后,在降序排列中排在最开始。