
数据库
1. 数据 Data
软件测试的对象是 软件
软件的组成 程序 + 文档 + 数据
数据的类型: 数字 字符 二级制 文本 图形 声音 视频
2. 数据库 DataBase --DB
通俗地说 就是用来存放数据的仓库
物理形态 -- 计算机上的文件
磁盘 -- 硬盘
3. 数据库管理系统 DBMS -- 软件(程序)
通俗地说 就是管理和维护数据库的软件。
主流的数据库管理系统有哪些:
MySQL, Oracle, SQL Server, DB2 , Sybase ...
关系型数据库管理系统 RDBMS
关系 --- 表 table ( ) 行 列
-- 层次型 --- 网状型 --- 关系型 --- 对象型
Oracle 数据库管理系统 ---甲骨文
版本
Oracle 8i , 9i, 10g, 11g, 12c
i internet
g grid
c cloud
Oracle 11g 安装
将其安装到windows7 64bit
虚拟机 -- Vmware 15
安装Vmware 虚拟机
安装oralce数据库管理系统
Oracle home
全局数据库名字: orcl.localdomain
口令: tiger
Database Control URL 为 https://localhost:1158/em
管理资料档案库已置于安全模式下, 在此模式下将对 Enterprise Manager 数据进行加密。加密密钥已放置在文件
D:/app/Administrator/product/11.2.0/dbhome_1/localhost_orcl/sysman/config/emkey.ora 中。请务必备份此文件, 因
为如果此文件丢失, 则加密数据将不可用。
数据库管理员 DBA
普通计算机 ---安装oracle11g软件 并且启动了数据库--- 数据库服务器 DB Server
客户端服务器模型 client server mode C/S
Demon 守护进程 --- 服务
数据库最基本的两个服务
OracleOraDb11g_home1TNSListener 数据库监听服务
OracleServiceORCL 数据库基本服务
oracle 也是一种网络应用层的协议, 在传输层 使用的是TCP协议 端口号是 1521
MySQL 端口号 3306
客户端工具:
SQL Plus 是oracle自带的一个连接到oracle数据库服务器的一个工具
总结:
数据 data 数据库 database 数据库管理系统 dbms 数据库管理员DBA
oracle11g 关系型数据库管理系统 安装 数据库名字 orcl 口令 tiger
客户端工具sqlplus
回顾:
data ,database, DBMS, DBA
计算机 --- 服务器 -- 数据库服务器 DB Server
客户端工具 -------- 连接到数据库服务器
自带的工具sqlplus 命令行的方式
启动sqlplus 方式 :
开始--运行--cmd--sqlplus /nolog
连接到数据库指令格式(语法)
SQL> connect 用户名/口令 [as 连接身份] ;
connect sys/tiger as sysdba;
connect 可以缩写 conn
连接身份: 表示用户连接到数据库之后拥有的权利。
数据库管理员 sysdba
数据库操作员 sysoper
普通用户 normal (默认)
内置用户 sys 必须以SYSDBA或SYSOPER身份登录
system 可以用普通身份登录
Oracle用户模式 user schema
用户zhangsan 表sales
用户lisi 表student 表score -- zhangsan.sales
在Oracle数据库中创建用户指令:
创建用户的指令
create user 用户名 identified by 口令 [account lock|unlock] ;
create user jerry identified by tom account unlock;
给用户授权的指令
grant 权限|角色 to 用户;
角色 role : 一个或多个权限的集合
默认有三种角色:
CONNECT 角色 : CREATE SESSION
RESOURCE 角色 : 可以创建数据库对象 比如 表
DBA 角色 : 管理员级别权限
建议普通用户 授予 connect 和 resource 角色的权限
grant connect to jerry;
grant resource to jerry;
撤销用户的权限的指令
revoke 权限|角色 from 用户;
revoke connect from jerry;
修改用户的指令:
alter user ...
修改用户的口令:
alter user 用户名 identified by 新口令 ;
alter user jerry identified by tom123;
修改用户的锁定状态:
alter user 用户名 account lock|unlock;
alter user jerry account lock;
alter user jerry account unlock;
SQL 简介
Structuered Query Language 结构化查询语言,关系型数据库对数据存取、数据更新及数据库操作管理等语言。
ANSI 标准 SQL --- 增删改查
SQL分类:
数据定义语言DDL : create 创建 , alter 修改 , drop 删除 等
数据操作语言DML : insert 插入 , update 更新, delete 删除 等
数据查询语言DQL : select 查询 order by 排序 group by 分组 等
事务控制语言TCL : commit 提交 savepoint 保存点 rollback 回滚
数据控制语言DCL : grant 授权 revoke 撤销
目前主流的关系型数据库都支持SQL , -- nosql
数据类型
年龄 21 --数字 21+4
姓名 谢睿 --字符
oralce数据库基本数据类型:
字符
char(length) 固定长度 char(5) 'hello' char(6) 'hello_' char() 默认 2000 字节
varchar2(length) 可变长度 varchar2(6) varchar2() 4000 字节
数字
number(p,s) p 数字的最大位数,最大38位,s指小数位数
number 1234.567 1234.567
number(6,2) 1234.567 1234.57
number(4,2) 12345.67 超出精度,数据库不能存储
时间
date 存储日期和时间,纪元、4位年、月、日、时、分、秒
timestamp 年月日时分秒 精确到秒后6位 而且包含时区 东8区
文件
clob 存储大的文本,如 xml文档
blob 存储二进制对象, 图形、声音、视频等
文件的路径---字符串
计算机基本存储单位 --存储设备 内存RAM 磁盘HD
计算机底层是数字存储的 0 1 二进制数 01000001 表示字母A 编码 ASCII
一个二进制位 bit 比特
一个字节 byte = 8 bit 比特
1K = 1024 byte
1M = 1024 KB
1G = 1024 MB
在oracle 中有一些内置的函数
sysdate
systimestamp
select sysdate from dual ;
dual 是一个伪表 ,满足select语句的完成性
关系型数据库
二维表的方式 表 table 就是数据库里最基本对象
列 column 实体的属性 key 键
行 row 实体 记录 record
--一行数据 一条记录
表的代表的是实体的集合
满足第一 二 三 范式
模型: E-R 实体-关系 - 员工表 n---1 部门表
约束: 限制
主键 primary key 唯一地代表一个实体的键 唯一 不能为空
外键 foreign key 建立表与表之间的关系
非空 not null
唯一 unique
检查 check
使表包括数据能满足数据库完整性一致性
创建表
学生信息表 infos --表示注释
STUID varchar2(7) not null, --学号
STUNAME --姓名
GENDER --性别
AGE --年龄
SEAT --座位编号
ENROLLDATE -- 入学时间
STUADDRESS -- 住址
CLASSNO -- 班号
create table 表名 ( stuid , stuname .... ) ;
SQL> create table infos
2 (
3 stuid varchar2(7) not null ,
4 stuname varchar2(10) not null ,
5 gender varchar2(2) not null ,
6 age number(2) not null ,
7 seat number(2) not null ,
8 enrolldate date ,
9 stuaddress varchar2(50) default '地址不详' ,
10 classno varchar2(4) not null
11 )
12 /
设置约束:
1) 建表的时候指定约束
2) 建表后插入数据之前设置约束
alter table 表名 add constraint 约束名 关键字 (列名) ;
alter table infos add constraint pk_infos_stuid primary key(stuid) ;
案例1:创建一个学生信息(INFOS)表和约束
代码演示:Oracle创建表和约束
CREATE TABLE INFOS
(
STUID VARCHAR2(7) NOT NULL, --学号 学号=‘S’+班号+2位序号
STUNAME VARCHAR2(10) NOT NULL, --姓名
GENDER VARCHAR2(2) NOT NULL, --性别
AGE NUMBER(2) NOT NULL, --年龄
SEAT NUMBER(2) NOT NULL, --座号
ENROLLDATE DATE, --入学时间
STUADDRESS VARCHAR2(50) DEFAULT '地址不详', --住址
CLASSNO VARCHAR2(4) NOT NULL --班号 班号=学期序号+班级序号
)
/ ①
ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID) ②
/
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_GENDER
CHECK(GENDER = '男' OR GENDER = '女') ③
/
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_SEAT
CHECK(SEAT >=0 AND SEAT <=50) ④
/
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_AGE
CHECK(AGE >=0 AND AGE<=100) ⑤
/
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_CLASSNO
CHECK((CLASSNO >='1001' AND CLASSNO<='1999') OR
(CLASSNO >='2001' AND CLASSNO<='2999')) ⑥
/
ALTER TABLE INFOS ADD CONSTRAINTS UN_STUNAME UNIQUE(STUNAME) ⑦
/
案例2:创建一个成绩表(SCORES)表和约束
代码演示:Oracle创建表和约束
CREATE TABLE SCORES
(
ID NUMBER , --ID ①
TERM VARCHAR2(2), --学期 S1或S2
STUID VARCHAR2(7) NOT NULL, --学号
EXAMNO VARCHAR2(7) NOT NULL, --考号 E+班号+序号
WRITTENSCORE NUMBER(4,1) NOT NULL, --笔试成绩
LABSCORE NUMBER(4,1) NOT NULL --机试成绩
)
ALTER TABLE SCORES
ADD CONSTRAINT CK_SCORES_TERM CHECK(TERM = 'S1' OR TERM ='S2')
/
ALTER TABLE SCORES
ADD CONSTRAINT FK_SCORES_INFOS_STUID FOREIGN KEY(STUID) REFERENCES INFOS(STUID) ② --建立外键约束
/
-- 外键约束名字 关键字 (列名) 引用或参考 表(列)
-- 注: 先设置主键 再设置外键
student( --学生表
sno varchar2(3) not null, --学号
sname varchar2(28) not null, --姓名
ssex varchar2(8) not null, --性别
sbirthday date, --生日
sclass varchar2(5), --班级
constraint pk_student primary key(sno) --设置主键
)
SNO SNAME SSEX SBIRTHDAY SCLAS
--- ---------------------------- -------- --------- -----
108 zenghua male 01-SEP-77 95033
105 kuangming male 02-OCT-75 95031
107 wangli female 23-JAN-76 95033
101 lijun male 20-FEB-76 95033
109 wangfang female 10-FEB-75 95031
103 lujun male 03-JUN-74 95031
course( --课程表
cno varchar2(5) not null, --课程编号
cname varchar2(50) not null, --课程名
tno varchar2(3) not null, --教师编号
constraint pk_course primary key(cno)
)
CNO CNAME TNO
----- -------------------------------------------------- ---
3-105 Introduction to Computers 825
3-245 Operating System 804
6-166 Digital Circuit 856
9-888 Advanced Mathematics 831
score( --成绩表
sno varchar2(3) not null, --学号
cno varchar2(5) not null, --课程编号
degree number(4,1), --分数
constraint pk_score primary key(sno,cno) --主键
)
SNO CNO DEGREE
--- ----- ----------
103 3-245 86
105 3-245 75
109 3-245 68
103 3-105 92
105 3-105 88
109 3-105 76
101 3-105 64
107 3-105 91
108 3-105 78
101 6-166 85
107 6-166 79
108 6-166 81
teacher( --教师表
tno varchar2(3) not null, --教师编号
tname varchar2(28) not null, --教师姓名
tsex varchar2(8) not null, --教师性别
tbirthday date, --教师生日
prof varchar2(50), --职称
depart varchar2(15) not null, --系别
constraint pk_teacher primary key(tno) --主键
)
TNO TNAME TSEX TBIRTHDAY PROF DEPART
--- ---------------------------- -------- --------- -------------------------------------------------- ---------------
804 licheng male 02-DEC-58 associate professor cs
856 zhangxu male 12-MAR-69 lecturer ee
825 wangping female 05-MAY-72 assistant cs
831 liubing female 14-AUG-77 assistant ee