Oracle
一.Oracle数据库
基本概念
一个Oracle服务器
是一个数据库管理系统(RDBMS),由一个Oracle数据库和多个Oracle实例组成
基于关系模式
关系型数据库:mysql sqlserver
noSql
Oracle数据库:
硬盘上实际存放数据的文件,这些文件组在一起,形成一个逻辑整体,即数据库
Oracle实例:
内存中的数据结构,用户通过实例读取数据库中的数据
用户是在实例下建立的。不同实例可以建相同名字的用户
表空间:
由多个数据文件组成。逻辑概念
一个数据库可以有多个实例,一个数据库实例可以有多个表空间,一个表空间下可以有多张表
Oracle数据库可以创建多个实例,每个实例可以创建多个表空间,每个表空间下可以创建多个用户(同时用户也属于表空间对应的实例)和数据库文件,用户可以创建多个表(每个表随机存储在一个或多个数据库文件中)
参考:
https://www.cnblogs.com/zjhs/p/3147905.html
安装过程中输入密码及确认密码:
侦听器端口: 1521
MTS 服务端口: 2030
HTTP 侦听端口: 8080
一般情况下,不创建实例,使用默认实例,XE版本的实例是XE,企业版的默认实例是orcl。
二.SQL
结构化查询语言
DDL:数据库定义语言,CREATE、DROP,用于创建、删除表,为表添加索引等。
DML:数据库操种语言,INSERT、DELETE、 UPDATE ,用于添加、删除、修改表中的行
DQL:数据库查询语言,SELECT
DCL:数据库控制语言,GRANT,REVOKE,COMMIT,ROLLBACK,对数据库安全性完整性等有操作的,可以简单的理解为权限控制等
三.Navicat连接Oracle
https://www.cnblogs.com/SummerinShire/p/5361449.html
使用system用户进入数据库
使用安装OracleXE版程序时的账号,密码(安装过程中填写的密码)连接数据库。连接成功,
进入navicat主面板
创建表空间
点击保存,填写表空间名。在磁盘中可以查看到表空间文件
新建用户
为用户分配权限
其实对于一般的用户,我们只需赋予connect、resource、create view这几个权限即可。 但是这里我们为了演示方便就选择“DBA”了
连接
测试用户是否可以连接Oracle数据库
四.创建表
create table 表名(
字段名 数据类型,
…
)
数据类型
修改表:
删除表:
DROP TABLE 表名;
五.约束
Oracle约束:
主键约束
唯一约束
非空约束
外键约束
检查约束
主键约束
字段内容不能为空,并且不可重复,用户标记一条记录
建表时用primary key指定
非空约束
字段中内容不能为空,必须有值
Not null
唯一约束
字段中的值不允许重复
Unique
检查约束:
约束字段取值的合法范围
Check
create table STUDENT(
id number primary key,–主键
sno varchar(30) unique,–唯一约束
sname varchar(30) not null,–非空约束
gender number check (gender in(1,2))–检查约束
);
外键约束:
多个表之间的约束,保证关联数据的完整性
–主表
create table orders(
id number primary key,
ono varchar(20)
)
–外键 :表之间的约束 数据参照完整性
–foreign key (oid) references orders(id)
–从表
create table ordersdetail2(
id number primary key,
goods VARCHAR(30),
oid number,
foreign key (oid) references orders(id) – 外键,参照另一张表的主键
)
删、 修改记录(表)都会受到外键的约束
六.查询
基本查询
语法格式
查询所有列
Select * from emp;
查询特定列
Select eno,enam from emp;
Sql支持运算
–查询当前用户
show user;
–当前用户下的表
select * from tab;
–查询表结构
desc emp;
–查询所有列
–* :所有列
select * from emp;
select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;
–sqL语句优化
–1.尽量使用列名
–查询指定;列
select empno,ename,job,sal from emp;
–运算 表达式
–查询员工信息:员工号 姓名 月薪 年薪 奖金 年收入
select empno,ename,sal,sal12,comm,sal12+comm from emp;
起别名
As
–起别名 as "包含特殊字符”
–起别名 引号与不带引号的区别
select empno,ename,sal,sal12 as “年薪” ,comm “奖 金”,sal12+comm 年收入 from emp;
空值查询:
空值是无效的,未指定的值,
空值不是空格或者0
包含null的表达式都为null
空值不等于空值 null!=null
–NULL查询
–null 未指定值 不是空格 也不是0 null不等于null 包含null值的表达式都是null
–通用函数
–nvl(a,b) 若a为null,替换为b nv