数据库

本文介绍了数据库的基础知识,包括数据库的概念、安装、常见数据库类型和分类。重点讲解了Oracle数据库,涉及表的理解、Scott用户表的查看、三范式原理以及SELECT查询、Oracle函数和多表查询的操作。通过实例展示了如何使用DML语言进行数据库管理,为初学者提供了一个全面的Oracle数据库学习路径。
摘要由CSDN通过智能技术生成

第一章 数据库 3

一、认识数据库 3

1.1概念 3

1.2安装 3

1.3知识点 4

1.4使用客户端链接数据库PLSQL 5

二、关系数据库(database manager system) 5

三、DML语言:数据库管理语言 6

3.1Oracle基本操作 6

3.2用户管理 7

第二章 Oracle数据库 7

一、表(Tabel) 8

1.1理解表 8

1.2表结构 8

二、Scott用户表 9

2.1查看用户表 9

2.2查看表结构 9

三、数据库设计原则——三范式 10

四、SELECT 10

4.1查询语法 10

4.2查询列 10

4.3查询知识点 11

五、Oracle函数 16

5.1单行函数 16

5.2组函数 18

六、多表查询 21

6.1Oracle多表查询操作 21

6.2多表查询的笛卡尔积现象 21

6.3自连接 22

6.4子查询 23

6.5外连接 23

七、Oracle技术与符合查询 26

7.1分页技术 26

7.2合并查询 26

7.3数据库的DML操作 26

 

 

第一章 数据库

一、认识数据库

互联化+时代的到来,需要持久化数据呈现井喷式发展,常规io操作虽然可以满足持久化的需求,但是,对于持久化的目的,对数据的操纵,显然力不从心,且操作的复杂度很大,不利于大规模的发展,审时度势,数据库应运而生。

数据库是数据管理的重要技术,也是计算机的重要分支。由于数据库具有数据化结构,最低冗余度、较高的程序与数据独立性,易于扩展、易于编制应用程序等有点,较大的信息系统都是建立在数据库设计之上的。从一般管理扩大到计算机辅助技术、人工智能以及科技计算等领域。

随着数据库技术的发展,计算机技术也随着得到了很大的发展,数据库为我们提供了可以快速存储以及检索的便利,它也为近几年软件可以如此普及贡献不小的力量。

理解什么是数据库:当我们在写String s = “Hello world”时,程序运行时,数据存储在内存中,程序结束时,数据变消失不再存在。如果我们想下一次运行时,还能读取到这个数据,那么就会想办法将这个数据存储在磁盘文件上,用到我们之前学习的知识,我们学过IO,我们可以用序列化将数据存到本地磁盘文件上,取出时用反序列化,但是这只能存储小数据,所以这时候出现了——数据库。

本次教学中使用数据库:数据库软件:Oracle 11g XE 版本(大学通用版)。Oracle 11g EX与Oracle 11g的区别:本质上没有区别,区别是数据库的创建,XE默认给了一个数据库,企业版会由公司自行创建数据库,而XE不能创建。XE便于安装,而Oracle 11g一次没有安装成功就需要重装系统。

1.1概念

广义:存储数据的系统

狭义:利用磁盘文件进行有规律的存储数据。(数据不一定全部存储在磁盘文件中,还能存到内存数据库redis(所谓的缓存,也就是存到内存中去))

持久化:将内存中数据,永久的保存到磁盘中,这个过程称为持久化过程。

1.2安装

确保安装时账户是管理员(不是必须的)。

解压数据库,打开DISKI文件夹,setup.exe双击运行,管理员口令123。(尽量不要安装在C盘)

测试数据库是否安装成功:打开dos窗口,执行以下代码:

1.打开doe窗口 输入:sqlplus /nolog

sqlplus表示登录平台 /nolog表示无参数登录

2.创建scott用户,使用tiger密码登录。使用用户名登:conn scott/tiger@xe

语法结构:conn [用户名]/[密码]@xe;

conn是链接的英文缩写。为什么使用scott用户:因为在11g版本以前都会有一个scott用户,这个scott用户便是oracle数据库的开发人员。@是登录到某个数据库,xe是我们安装的Oracle 11g EX默认创建的数据库名称,以后如果要登录到xxx数据库,便是@xxx。

3.测试数据库是否链接成功(查询数据库中的表):selcet * from emp;

表格内容正常显示也就代表安装成功

4.完成

sqlplus /nolog

conn / as sysdba;

create user scott identified by tiger;

GRANT CONNECT,RESOURCE,UNLIMITED TABLESPACE TO SCOTT IDENTIFIED BY TIGER;

取消区分大小写:

alter system set sec_case_sensitive_logon=false;

导入scott.sql

@C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql

查询所有用户:

select username from all_users;

登录:

conn scott/tiger;

在上述成功的前提下:

conn scott/tiger@xe;

1.3知识点

1.3.1常见的数据库

Oracle、Mysql、DB2(很大,一般用于金融类型的公司),这三种数据库市场占有率90%以上,最核心的是Oracle和Mysql。

1.3.2数据库的分类

小型数据库access、foxbase:数据库本身容量小,操作结构简单,不安全。负载量小,用户大概100人以内(留言板、信息管理系统),成本在千元之内,对安全性要求不高。

中型数据库sqlservler、mysql:负载量,日访问在5000~10000,成本在万元以内(商务网站),满足日常安全需求。

大型数据库sybase、db2、oracle:海量负载,可以处理海量数据(sybase<oracle<db2海量处理能力),安全性高,相对贵。

1.3.3数据库选的原则

原则:考虑项目的负载量、经济成本、安全性。选择时不一定要选择最好的,但是需要选择最合适的。

1.4使用客户端链接数据库PLSQL

1.4.1更改配置

PLSQL\instantclient_11_2目录下的tensnames.ora文件,打开后除了注释,值保留一下代码,并匹配数据库IP和数据库实例名称。20.45.128.26数据库IP地址,OO数据库示例名称。

注意:这里更改配置后,我们在dos命令中输入的就不再是conn scott/tiger@xe;而是conn scott/tiger@127.0.01xe;

127.0.0.1XE =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = XE)

    )

  )

1.4.2配置环境变量

    NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK

    TNS_ADMIN = G:\PLSQLDeveloper\PLSQL\instantclient_11_2

1.4.3PL/SQL Developer 环境设置

位置:工具 -> 首选项 -> 链接

设置:

Oracle主目录名  = G:\PLSQLDeveloper\PLSQL\instantclient_11_2

OCI库 = G:\PLSQLDeveloper\PLSQL\instantclient_11_2\oci.dll

检测是否链接数据库,打开客户端,查看窗口左上角,是否为登录的数据库实例名,未链接成功左上角为:未登录。

二、关系数据库(database manager system)

关系数据库,是建立在关系模型基础上的数据库。借助于集合代数等数学概念和方法来处理数据库中的数据。标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。

标准数据查询语言SQL:”第四代语言”,更加接近人的自然语言。

关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说 Oracle 数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库解决方案。

三、DML语言:数据库管理语言

SQL(Structured Query Language)结构化查询语言,为数据库的语言,在1974年由Boyce和Chamberlin提出的一种介于关系代数与关系演算之间的结构化查询语言,是一个通用的、功能极强的关系型数据库语言。

对用户实现管理的语句,并不是SQL语言,而是DML语言。DML语言:数据库管理语言database manager language。对用户的添加、删除、解锁、锁定等。

3.1Oracle基本操作

3.1.1进入数据库服务

语句:sqlplus /nolog

说明:登录到数据库示例上

3.1.2数据库连接指令

关键词:conn-->connection

语法结构:conn 用户名/密码@网络服务名

语句:conn scott/tiger@xe;(不是SQL语句,只是一个数据库的登录语句) xe表示数据实例--数据库名称

3.1.3显示当前用户名

语句:show user;

示例:USER 为 “SCOTT”

3.1.4退出

语句:exit

3.1.5 & 占位符

说明:可以替代变量,而该变量在执行时,需要用户输入()。

SQL语句:select * from emp where job = &job;

  输入job的值:SALESMAN

SQL> select * from emp

2 ;  

//表示第二行 而不是只有2条数据。sql语句一定以“;”结束此句。当没有输入;,按了回车,就会显示一个2,代表第二行输入。

3.2用户管理

实现用户管理的账户,必须有管理用户的权限(Oracle对权限的控制非常严),才能实现用户管理。什么样的账户具有管理用户的权限——以下这两种登录方式都是以系统管理员身份(sys账户)登录数据库,是oracle系统超级管理员。具有用户创建的权利。

conn / as sysdba;

conn sys/123 as sysdba;

关于用户角色与权限详解:http://www.cnblogs.com/chinhr/archive/2011/10/10/2206631.htm。

用户创建:用有管理用户权限的账户创建一个新的账户,但是在没有给这个心账户权限的时候,还不能使用它登录。

create user [用户名称] identified by [密码];

用户已创建。

删除用户:一般以dba的身份去删除某个用户,如果用其他用户去删除用户则需要具有drop user的权限。注:如果该用户的账户下已有数据信息(已建表etc..)在删除的时候同时删除表数据信息,可以在后面加cascade,就可以删除这个需要删除的用户下的表数据信息。

drop user [用户名] [cascade];

用户已删除。

用户授权管理:给一个用户赋权限使用命令grant,回收权限使用命令revoke。grant dba to wb;,就是赋予dba权限给wb。

grant [权限] to [需要授权的用户名];

授权成功。

用户的状态:锁定用户、解锁用户。

alter user [用户名] account [lock/unlock];

用户已更改。

第二章 Oracle数据库

oracle数据库,关系型数据库,基于关系模型设计。oracle,关系是如何维护?通过数据库中的二维表进行维护。SQL:结构化查询语言。(查询、增加、修改、删除),最难点:查询(单表、多表查询)。

一、表(Tabel)

1.1理解表

ID

NAME

AGE

HOBBISE

S001

Daming

23

swimming

S002

Kitty

12

running

行:表示记录(实际中的数据),一行代表一条记录。列:字段(属性) 字段名 与 字段值。表中记录与java中实例化对象什么关系?——表中一条记录,等同于java中一个实例化对象。java中创建对象的四种方式:new 反射 反序列化 clone。

1.表是从属于用户的:select * from scott.emp;。查询表(用户名.表名),当前用户查询自己的表时,用户名可以省略,其他用户查询别的用户表,不能省略,同时必须存在权限。

2.表是逻辑表(概念表),不是物理表。块(最小的储存单位是块,8k)-->区(连续块)-->段(连续区)-->表(多个段),数据段不全是表,表一定是数据段。还有其他段:如索引段。数据库存储的基本单位:block(块)-->8k。不同的数据库中块的大小不一样。8k是oracle下的默认值,可以改。

1.2表结构

表名字段(字段名,类型,约束)、记录组成。

DB

JAVA

表名

类名

字段名

属性名

字段类型:

  1. varchar2(可变长度) 字符串型
  2. char(定长长度) 字符型
  3. number(长度,精度):number(5,2),数字型(小数、整数)
  4. date时间 日期
  5. temsetamp 时间 时分秒

属性类型:

基本类型

引用类型

记录:数据

对象:new

1.2.1char与varchar2区别

将”char”用varchar2类型的变量去存储,开辟了4个空间,这时候,我们想给这个变量重新赋值”ch”,只需要2个空间,那么varchar2会自动删除多余的空间。但是char不会。所以:varchar2可变字符串,char不可变。没有优劣之分,只有适用于不同的场合。

varchar2查询模式,在不确定长度下,查询数据需要按照长度变化进行比对——查询的时间复杂度提升。用时间换空间。

char查询模式:在定长下查询数据,时间复杂度降低,存在冗余,浪费空间,孔家你的复杂度提升。用空间换时间。

场景:

用户登录 手机号登录----->?

手机号定长,手机号属于设点数据(会经常查找),这时候应该选用char。

二、Scott用户表

2.1查看用户表

SQL:select tabel_name from tabs; 查看该用户下所有的表

  1. dept:部门表
  2. emp:雇员表
  3. salgrade:工资登记表
  4. bonus:奖金表

oracle命令不区分大小写(SELECT与select),存储数据内容,区分大小写。

2.2查看表结构

DML:desx [表名]; 查询表的结构

  1. dept部门表

表名

dept

主键

deptno

字段名

中文

类型

为空

默认值

其他说明

deptno

部门编号

number(2)

 

主键

dname

部门名称

varchar2(14)

 

 

 

loc

地址

varchar2(13)

 

 

 

备注

 

  1. emp雇员信息表

表名

emp

主键

empno

字段名

中文

类型

为空

默认值

其他说明

empno

雇员编号

number(4)

 

主键

ename

雇员名称

varchar2(10)

 

 

 

job

岗位工种

varchar2(9)

 

 

 

mgr

上级|经理人

number(4)

 

 

 

hiredate

雇佣日期

date

 

 

 

sal

工资

number(7,2)

 

 

 

comm

奖金|津贴

number(7,2)

 

 

 

deptno

部门编号

number(2)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值