文章目录
1 数据库相关概念
- 数据:数据是对现实生活事务描述的符号.
- 数据库:数据库是用来存储数据的库.
- 数据库管理系统:用户直观用来操作数据库的软件.
- 数据库应用系统:在数据库管理系统之上的系统,专门给普通用户进行使用的系统.
- 数据库系统:用户+数据库管理系统+数据库+数据库应用系统+数据库管理员.
- 常见数据库存储结构:二维表结构存储:数据,数据的描述,数据的关系.
- 常见的数据库管理系统:Oracle,MySQL,SQL SEVER,DB2,Access.
2 数据库的发展阶段
- 网状数据库.
- 层次数据库.
- 关系数据库:
- 使用关系(二维表)结构存储与管理数据.
- 采用结构化查询语言(SQL)作为客户端与数据库服务器之间沟通的桥梁.
- 目前主流的数据库技术.
- 对象数据库:
- 把面向对象的方法和数据库技术结合起来.
- 可以使数据库系统的分析/设计最大程度的与人们对客观世界的认识相一致.
- NOSQL数据库:
- Not Only SQL数据库,泛指非关系数据库,如MongoDB.
3 Oracle相关介绍
3.1 软件相关介绍
- Oracle是市场目前很流行的大型数据库,适用于大型项目的数据存储.
- 作用:合理地管理数据的存储和读取.
- 版本:OracleXE,PLSQL.
- 安装内容:
- 一个数据库管理系统和多个数据库.
- SID:数据库的唯一标识符.
- 软件服务介绍:
- OracleServiceXE:相当于Oracle的开关.
- OracleXETNSListener:相当于Oracle的监听器.
3.2 软件目录结构介绍
- E:\app\ChenZhuJi:安装路径.
- E:\app\ChenZhuJi\oradata:数据库相关信息.
- E:\app\ChenZhuJi\product:数据库管理系统的相关信息.
- 11.2.0\dbhome_1\bin目录:数据库管理系统软件的启动目录.
- 11.2.0\dbhome_1\jdbc目录:数据库和java连接所需的jar包.
- 11.2.0\dbhome_1\netWork目录:数据库管理系统所需的网络配置目录.
- 11.2.0\dbhome_1\log目录:Oracle异常日志信息存储目录.
3.3 软件原理
3.3.1 软件体系架构
- B/S架构:Browser/Sever(浏览器模式).
- C/S架构:Client/Sever(客户端服务器模式).
- Oracle是基于C/S机构的,基本交互流程:Oracle客户端–(P,端口号,协议,库名)→Oracle服务器→数据库.
3.3.2 本地网络服务配置
-
本地网络服务配置文件目录为:
E:\app\ChenZhuJi\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
-
该文件存储的是键值对,Oracle客户端会自动加载其中的文件内容,连接配置好的数据库.
-
例如:设置一个名为ORCL的数据库
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
3.3.3 监听器配置
-
常见错误:ora-12514.
-
解决方式:在E:\app\ChenZhuJi\product\11.2.0\dbhome_1\network\admin\listener.ora文件中增加以下代码,再重启监听服务OracleXNETNSListener:
(SID_DESC= (GLOBAL_DBNAME=ORCL) (ORCALE_HOME=E:\app\ChenZhuJi\product\11.2.0\dbhome_1) (ORACLE_NAME=ORCL) )
3.4 Oracle账户介绍
- OracleXE自带账户:XE
- 账户名:
- System:系统用户(管理员).
- Sys:超级用户(工程师用).
- 区别:Sys账号比system账户的权限要多.
- 注意:
- OracleXE版本安装好后,不自带普通用户的;
- Oracle 11G和Oracle 10G自带一个普通用户scott,默认密码为tiger.
3.5 Oracle新建账户
-
必须使用System账户进行用户创建:打开plsql,使用System账户登录,注意登录身份选择sysdba.
-
新建SQL命令窗口(执行命令):
--创建用户 --create user 用户名 identified by 密码 create user scott identified by tiger; --给用户赋权限 --赋予数据库登录连接权限 grant connect to scott; --赋予数据库资源操纵权限 grant resource to scott;
3.6 Oracle忘记用户密码的解决方法
- cmd打开window命令窗口→输入命令:sqlplus/nolog→输入命令:conn/as sysdba→输入命令:alter user 要修改的用户名 identified by 新的密码
- 注意:可能提示sqlplus不是内部命令的错误,是因为Oracle的环境变量配置错误.
4 关系型数据库的基本概念
- 关系:整个二维表.
- 关系名:表格名称.
- 元组:行数据(记录).
- 属性:列数据(字段).
- 属性名:列名称(字段名).
- 主键:唯一确定元组的属性组(关键字).
- 域:属性的取值范围.
5 SQL语言简介
- 概念:结构化语句.
- 作用:操作数据,管理用户,管理事务.
- 分类:
- DQL(数据查询语言):select;
- DDL(数据定义语言):create,alter,drop;
- DCL(数据控制语言):grant,revoke;
- DML(数据操作语言):insert,update,delete;
- TCL(事务控制语言):SAVEPOINT,SET TRANSACTION,COMMIT.
6 SQL语句的单表查询
-
查询表的所有数据:
-
语法:select *from 表名;
-
select *from emp;
-
-
查询表中指定字段的值:
-
语法:select 字段名1,字段名2… from emp;
-
select empno from emp;
-
-
as:查询结果中的字段使用别名
-
语法:在字段名后使用关键字:字段名 as “别名”,as关键字可以省略不写,别名中没有特殊字符时双引号也可以省略.
- select 字段名1 别名1,字段名2 别名2 from 表名;
- select 字段名1 “别名1”,字段名2 “别名2” from 表名;
- select 字段名1 as “别名1”,字段名2 as “别名2” from 表名;
-
select empno "员工编号",ename 员工姓名,sal as "薪水" from emp;
-
-
连接符(||’’||)的使用:
-
语法:select 字段名||‘字符’||字段名||…from 表名;
-
注意:||为SQL语句的字符连接符,使用在select和from之间,字符连接格式为:字段名||‘字符’||字段名,一个拼接好的连接在结果集中是作为一个新的字段显式,可以使用别名优化字段显示.
-
select empno || '的姓名是'|| ename from emp; --输出结果14列:(员工编号)的姓名是(员工姓名)
-
-
distinct:去除重复
-
语法:select distinct 字段名1,字段名2,… from 表名;
-
注意:去除重复的规则是按照行进行去除的,多行数据完全相同只取其一.
-
select distinct job from emp; --输出结果5行.
-
-
order by:排序
-
语法:select 字段名,字段名,… from 表名 order by 字段名1,字段名2… desc/asc;
-
先按字段1排序,如果字段1相同,再按照字段2…进行排序.
-
注意:desc表示降序排列,asc表示升序排列,默认是asc.
-
select *from emp order by empno; --将员工表全部信息按照员工编号升序排列输出. select * from emp order by sal desc,empno; --先按工资降序排列,如果工资相同,按员工编号升序排列.
-
-
字段的逻辑运算:
select empno,sal+1000 from emp; --将员工编号和其工资加1000输出
-
where:筛选查询
-
语法:select 字段名,字段名,…from表名 where 筛选条件;
-
单筛选条件:
-
语法:使用运算符进行筛选=,>,>=,<,<=,<>.
-
注意:如果条件中的值为字符,必须使用单引号括起来.
-
select empno,ename,sal+comm as 薪资 from emp; --查询所有的员工的工资信息 select * from emp where ename='SMITH'; --查询SMITH的个人信息 select empno,ename,sal,sal+comm from emp where ename='SMITH'; --查询SMITH的薪资信息 select * from emp where sal > 1000; --查询工资大于1000的员工信息 select * from emp where sal <> 3000 order by sal; --查询工资不等于3000的员工信息 select * from emp where hiredate >= '01-1月-1981' order by hiredate; --查看入职日期在81年后的员工信息,按照入职时间升序排列. --注意:Oracle默认的日期格式为:日-月-年,示例'03-1月-1981
-
-
多筛选条件:
-
and:使用and关键字,多条件同时成立的筛选使用and关键字进行条件连接.
-
多个条件使用and关键进行连接,筛选的是符合所有条件的数据
-
语法:select * from 表名 where 筛选条件1 and 条件2 and …
-
select * from emp where sal >= 2000 and sal < 3000; --查询工资在2000-3000之间的员工信息 select * from emp where comm is not null and comm > 0; --查询奖金大于0且不为null的员工的全部信息
-
-
or:使用or关键字,进行或条件的筛选.
-
select * from emp where job='SALESMAN' or job= 'ANALYST' or job= 'MANAGER' order by job; --查询工作为SALESMAN,ANALYST,MANAGER的员工信息.
-
-
():使用小括号可以提升条件的执行级别,使用了小括号的级别是最高的.
-
and关键字的执行级别高于or.
-
select * from emp where (job = 'SALEMAN' or job = 'MANAGER') and sal > 2000; --查询工作为SALEMAN或MANAGER且工资大于2000的员工的全部信息.
-
-
-