目录
三、Oracle的表操作--主键约束(primary key)
七、Oracle的表操作--外键约束(foreign key)
一、Oracle的SQL
SQL:结构化查询语言(Structured Query Language),简称SQL。是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系型数据库系统的语言。
Oracle的SQL:
- DDL(Data Definition Language):数据定义语言。
- DML(Data Manipulation Language):数据操纵语言。
- DCL(Data Control Language):数据控制语言。
- TCL(Transaction Control Language):事务控制语言。
常用的DDL语句包括:
- create table:创建数据库表。
- create index:创建数据库表的索引。
- drop table:删除数据库表。
- drop index:删除数据库表的索引。
- truncate:删除表中的所有行。
- alter table:更改表结构,增加、修改、删除列。
- alter table add constraint:在已有的表上增加约束。
常用的DML语句包括:
- insert:添加数据到数据库中。
- update:修改数据库中的数据。
- delete:删除数据库中的数据。
- select:选择(查询)数据。
常用的DCL语句:
- grant:将权限或角色授予用户或其他角色(授予访问权限)。
- revoke:从用户或数据库角色回收权限(撤销访问权限)。
- lock:对数据库的特定部分进行锁定。
常用的TCL语句:
- commit:提交事务处理。
- rollback:事务处理回退。
- savepoint:设置保存点。
注意:使用SQLDeveloper工具进行两个用户的切换,不能用”conn 用户名/密码“这个命令来切换连接,connect命令是SQLPlus命令,在SQLDeveloper工具中的SQL执行窗口是无法执行的,并且SQLDeveloper工具没有提供执行SQLPlus命令的窗口,
如果想连接数据库,请使用图形化的操作方式
二、数据库表的操作--创建表
Oracle中常用的数据类型:字符类型、数值类型、日期时间类型、LOB类型。
字符类型:
- char:表示固定长度的字符串。列长度可以是1到2000个字节。
- varchar2:表示可变长度的字符串。最大长度为4000字节。
数值类型([]括号内的内容为可选项):number[(p[,s])]。p表示精度,s表示小数点的位数;可以存储整数、浮点数等数值类型;最高精度为38位。
LOB类型:
- CLOB:即Character LOB(字符LOB),能够存储大量字符数据。
- BLOB:即Binary LOB(二进制LOB),可以存储较大的二进制对象,如图形、视频剪辑和声音文件。
--创建表(以创建学生信息表为例)
create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50)
);
--注意:语法格式和SQL Server有点不一样,以下为SQL Server的格式:
create table admin_tab
(
adminID int primary key identity(1,1),
adminName varchar(50) not null unique,
adminPwd varchar(50) not null,
)
三、Oracle的表操作--主键约束(primary key)
什么是约束?
约束是Oracle提供的自动保持数据库完整性的一种方式,它通过限制字段中数据、记录中数据和表之间的数据来保证数据的完整性。
主键约束(primary key):用户定义基本表的主键,它是唯一确定表中每一条记录的标识符,其值不能为null,也不能重复,以此来保证实体的完整性。表中主键只有一个,但可以由多个列构成。
--修改表结构,为学生信息表添加主键约束
alter table student
add constraint sid_pk primary key(sid);
--创建表时添加主键约束
create table student(
sid number(8,0) primary key,
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50)
);
create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50),
constraint sid_pk primary key(sid)
);
四、Oracle的表操作--非空约束(not null)
--修改表结构,添加非空约束
ALTER TABLE student MODIFY (name varchar2(20) NOT NULL);
--创建表时添加非空约束
create table student(
sid number(8,0),
name varchar2(20) not null,
sex char(2) constraint nn_sex not null,
birthday date,
address varchar2(50),
constraint sid_pk primary key(sid)
);
--删除非空约束的方式
ALTER TABLE student MODIFY sex char(2) NULL;
--禁用主键约束(无效化约束)
ALTER TABLE student DISABLE CONSTRAINT sid_pk;
--激活主键约束
ALTER TABLE student ENABLE CONSTRAINT sid_pk;
--删除主键约束
ALTER TABLE student DROP CONSTRAINT sid_pk;
ALTER TABLE student DROP PRIMARY KEY;
五、oracle的表操作--唯一约束(unique)
唯一性约束:用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值。
唯一性约束的注意事项:
- 使用唯一性约束的列允许为空值。
- 一个表中可以允许有多个唯一性约束。
- 可以把唯一性约束定义在多个列上。
--创建表时添加唯一性约束
--create table student (
-- sid number(8,0),
-- name varchar2(20),
-- sex char(2),
-- birthday date,
-- address varchar2(50),
-- email varchar2(50) unique,
-- cardid varchar2(18),
-- constraint uk_cardid unique(cardid)
--);
--创建学生信息表
--create table student (
-- sid number(8,0),
-- name varchar2(20),
-- sex char(2),
-- birthday date,
-- address varchar2(50),
-- email varchar2(50) unique,
-- cardid varchar2(18)
--);
--更改表结构,添加唯一性约束
--alter table student add constraint uk_student_cardid unique(cardid);
--禁用约束
alter table student disable constraint uk_student_cardid;
--彻底删除
alter table student drop constraint uk_student_cardid;
六、Oracle的表操作--检查约束
--修改表添加检查约束的方式
--alter table student add constraint ck_sex check(sex='男' or sex='女');
--创建表时设置检查约束的方式:列级约束
--create table student (
-- sid number(8,0),
-- name varchar2(20),
-- sex char(2) check(sex='男' or sex='女'),
-- birthday date,
-- address varchar2(50)
--);
--创建表时设置检查约束的方式:表级约束
--create table student (
-- sid number(8,0),
-- name varchar2(20),
-- sex char(2),
-- birthday date,
-- address varchar2(50),
-- constraint ck_sex check(sex='男' or sex='女')
--);
--禁用约束
--alter table student disable constraint ck_sex;
--彻底删除
alter table student drop constraint ck_sex;
七、Oracle的表操作--外键约束(foreign key)
外键约束:用于建立和加强两个表数据之间的链接的一列或多列。外键约束是唯一设计两个表关系的约束。
外键约束的注意事项:
- 设置外键约束时主表的字段必须是主键列(或唯一列)。
- 主从表中相应字段必须是同一数据类型。
- 从表中外键字段的值必须来自主表中相应字段的值,或者为null值。
--主表
--create table department(
-- depid varchar2(10) primary key,
-- depname varchar2(30)
--);
--从表
--create table student (
-- sid number(8,0),
-- name varchar2(20),
-- sex char(2),
-- birthday date,
-- address varchar2(50),
-- depid varchar2(10)
--);
--修改表时添加约束
--alter table student add constraint fk_depid foreign key(depid) references department(depid) on delete cascade;
--创建列级约束
--create table student (
-- sid number(8,0),
-- name varchar2(20),
-- sex char(2),
-- birthday date,
-- address varchar2(50),
-- depid varchar2(10) references department(depid)
--);
--创建表级约束
--create table student (
-- sid number(8,0),
-- name varchar2(20),
-- sex char(2),
-- birthday date,
-- address varchar2(50),
-- depid varchar2(10),
-- constraint fk_depid foreign key(depid) references department(depid) on delete cascade
--);
--禁用约束
--alter table student disable constraint fk_depid;
--彻底删除
alter table student drop constraint fk_depid;
八、Oracle的表操作--修改和删除表
--添加列
--alter table student add tel varchar2(11);
--修改列
--alter table student modify tel number(11,0);
--删除列
--alter table student drop column tel;
--修改列名
--alter table student rename column gender to sex;
--修改表名
--rename studentinfo to student;
--删除表
--truncate table操作用于删除表中的全部数据,并不是把表删除掉,这种删除方式要比delete方式删除数据的速度要快,也叫截断表
--truncate
--truncate table emp_bak;
--drop
--drop table emp_bak;
九、Oracle的表操作--增删改查
--insert(添加数据)
--insert into student (sid,name,sex)values(20010001,'张珊珊','女');
--insert into student(sid,name,sex,address,birthday) values(20010002,'王五','男','北京市昌平区',to_date('19820909','YYYYMMDD'));
--insert into student values(20010003,'张三','女',to_date('19830808','YYYYMMDD'),'北京市昌平区');
--select(查询数据)
--select * from student;
--select sid,name from student;
--update(更新数据)
select * from student;
--update student set address = '北京市昌平区' where sid = 20010001;
--update student set address='北京市海淀区';
--delete(删除数据)
--delete from student where sid = 20010001;
delete from student;
十、Oracle的表操作--事务
什么是事务?
事务可以看成是由对数据库的若干操作组成的一个单元,这些操作要么都完成,要么都取消,从而保证数据满足一致性的要求。
事务的组成:
- 一条或多条DML
- 一条DDL
- 一条DCL
注意:DML语句需要使用commit提交事务或使用rollback回滚事务;DDL和DCL是自动提交事务的。
为什么要使用事务?
保证数据的安全有效。
当执行事务操作(DML语句)时,Oracle会在被作用表上加表锁,以防止其他用户改变表结构;同时还会再被作用行上加行锁,以防止其他事务在相应行上执行DML操作。
事务的控制命令:
- 提交事务(commit)
- 通过commit语句可以提交事务,当执行了commit语句后,会确认事务的变化、结束事务、删除保存点,释放锁。
- 当使用commit语句结束事务之后,其他会话将可以查看到事务变化后的新数据。
- 保存点(savepoint):是事务中的一点,用于取消部分事务,当结束事务时,会自动删除该事务所定义的所有保存点。当执行rollback时,通过指定保存点可以回退到指定的点。
十一、Oracle的数据字典
什么是数据字典?
- 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。数据库数据字典是一组表和试图结构。
- 数据字典的表是不能被直接访问的,但是可以访问数据字典中的试图。
数据字典的作用:通过数据字典,使我们了解数据库内部的信息。当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典查看详细的信息。
Oracle中常用的数据字典:Oracle中常用的数据字典分为三类,以三种前缀开头:
- user_*:该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)
- all_*:该视图存储了当前用户能够访问的对象的信息,(与user_*相比,all_*并不需要拥有该对象,只需要具有访问该对象的权限即可)
- dba_*:该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)
Oracle中常用的数据字典:
应用数据字典查看相应的数据库信息:
--查看当前用户下的用户信息
select * from user_users;
--当前用户有权访问的所有用户的基本信息
select * from all_users;
--访问数据库所有用户的用户信息(要求具有dba权限的用户使用此数据字典)
select * from dba_users;