-- 问题:创建一个名为 hp 的表空间,指定数据文件为 hp.dbf,大小为 10m.
- create tablespace hp
- datafile 'C:\app\hp\hp.dbf'
- size 10M
- autoextend on next 5m
- maxsize unlimited;
drop tablespace hp;
删除表空间的时候,如何删除关联的数据文件??
- drop tablespace test_data including contents and datafiles;
-- 语法结构:create user 用户名 identified by 密码 【default tablespace 表空间名】【temporary tablespace temp】
- create user hope identified by 123456;
- create user hope1 identified by 123456 default tablespace users;
- create user hope2 identified by 123456 default tablespace users temporary tablespace temp;
-- 语法结构:alter user 用户名 identified by 密码
- alter user hope identified by 654321;
--drop user 用户名【cascade】
- drop user hope;
- drop user hope cascade;
-- 权限指执行特定类型 SQL 命令或访问其他对象的权利
-- 系统权限:允许用户执行某些数据库操作
-- 对象权限:允许用户对某一特定对象执行特定的操作
-- 角色是具有名称的一组权限的组合
--CONNECT:临时用户
--RESOURCE:更为可靠和正式的用户
--DBA:数据库管理员角色,拥有管理数据库的最高权限
-- 一般情况下,普通用户,有 connect 和 resource 的角色就够了。
-- 语法结构:grant 角色 1, 角色 2,。。。 to 用户
- grant connect to hope2 grant connect,
- resource to hope2;
-- 给 hope2 赋予查询 scott 的 emp 表的权限
- grant select on scott.emp to hope2;
- grant select,update on scott.emp to hope2;
-- 撤销角色和权限:
-- 语法结构:revoke 角色 1,角色 2,。。。from 用户
- revoke resource from hope2;
- revoke connect,resource from hope2;
类型 |
语法 |
描述 |
|
文本类型 |
char(n) |
定长 |
最大 2000 字符,默认 n=1 |
varchar2(n) |
变长 |
最大 4000 字符 |
|
nchar(n) |
定长 |
unicode 数据类型,最大 2000 |
|
nvarchar2(n) |
变长 |
unicode 数据类型,最大 4000 |
|
clob(character large Object) |
字符型大对象,最大 8TB |
||
blob(birnary large Object) |
二进制数据,可存放图片、声音,最大 8TB |
||
数值 |
number(p,s) |
变长 |
p - 有效位,s - 小数位;1<=p<=38,-84<=s<=127 |
日期 |
date |
默认格式:DD-MM-YYYY '16-05 月 - 2017' |
|
timestamp(n) |
--char: 可以存储定长的字符串 char(200)
--varchar: 可以存储变长的字符串
--varchar2: 可以存储变长的字符串 varchar2(200)
-- 什么时候用 char,什么时候用 varchar(2) @@
当已知字符串长度用 char 比较合适
-- 不确定字符串长度时,用 varchar2 比较合适。
--nchar 和 nvarchar2 可以存储 Unicode 字符集
-- 数值数据类型:numer
--number 等价于 number(38,0)
--number(15) 表示可以存储一个 15 位的整数
--number(22,7) 表示可以浮点数,整数部分有 15 位,小数点后有 7 位
-- 注意:不建议大家使用 varchar,integer,float,double
-- 与日期类型相关的函数
--sysdate: 日期函数:显示当前日期
select sysdate from dual;
--systimestamp: 比 Date 更精确的一个时间
select systimestamp from dual;
--to_date(字符串,格式): 将一个 Oracle 不认识的字符串,转成 Oracle 认识的日期格式
select to_date('2018-01-05','yyyy-mm-dd') from dual;
--Date:日期类型,存储日期和时间
--TimeStamp:比 Date 更精确的一种日期类型。
-- 默认日期格式:
-- 中文的 Oracle:日 - 月 - 年 比如 1998 年 7 月 1 日 ->'01-7 月 - 1998'
-- 英文的 Oracle:day-mon-year 比如 1998 年 7 月 1 日 ->'01-JUL-1998'
--Lob:
--BLOB:存储二进制对象,如图像、音频和视频文件
--CLOB:存储字符格式的大型对象
1. 使用 sql/plus 创建
create table 表的名称(字段名称 1 数据类型, 字段名称 2 数据类型…);
示例:创建学生表,字段和类型如下所示:
字段 |
字段类型 |
id |
number |
name |
varchar2(20) |
sex |
char(2) |
birthday |
date |
score |
number(4,2) |
create table student(
id number,
name varchar2(20),
sex char(2),
birthday date,
score number(4,2)
)
2. 使用 plsql developer 第三方工具创建
-- 创建表:实际上解决的是表结构的问题,表有几个字段,每个字段的长度是多少,每个字段是什么数据类型
--create table 表名 (字段名 1 数据类型 1(长度),字段名 2 数据类型 2(长度),。。。);
- create table student(stuno number(4), stuname varchar2(10), age number(2), addr varchar(50));
drop table student;
RENAME 旧的表名称 TO 新的表名称;
2. 添加列ALTER TABLE 表名称 ADD
(列名称 数据类型 [DEFAULT 默认值],
列名称 数据类型 [DEFAULT 默认值],
…);
3. 修改列ALTER TABLE 表名称 MODIFY
(列名称 数据类型 [DEFAULT 默认值],
列名称 数据类型 [DEFAULT 默认值],
…);
4. 删除列alter table 表名 drop column 列名;
alter table 表名 drop(列名 1, 列名 2,...);
5. 举例(1)给学生表添加班级编号
alter table students add(class_id number);
(2)学生姓名变成 varchar2(30)
alter table students modify(name varchar2(30));
(3)删除学生表的 score 字段
alter table students drop column score;
alter table students drop(score);
(4)把学生表名 students 修改成 stu
SQL>rename students to stu;
-- 问题:往表中插入数据的时候,可能出现一些问题,比如:重复插入数据,内容不对(性别)
-- 如何保证数据库表中数据的完整性和一致性呢?
-- 常见的约束:主键(primary key),外键(foreign key), 唯一(unique), 非空(not null), 默认(default), 用户自定义(check)
-- 什么是主键约束?主键约束就是给表定义一个主键,什么是主键?
-- 主键主要是用来保证表记录的唯一非空的。
-- 建表的时候添加主键
- create table student(stuno number(4) primary key, stuname varchar2(10), age number(2), addr varchar(50));
- insert into student values(1001, 'zhang', 18, 'luoyang');
-- 再次插入相同记录,违法主键约束,不允许插入
SQL> insert into student values(1001,'zhang',18,'luoyang');
insert into student values(1001,'zhang',18,'luoyang')
ORA-00001: 违反唯一约束条件 (SYS.SYS_C0010797)
-- 如果主键为 null 也不允许插入,同样是违反了主键约束
SQL> insert into student values(null,'zhang',18,'luoyang');
insert into student values(null,'zhang',18,'luoyang')
-- 创建一张课程表:
create table course(cno number(4) primary key,cname varchar2(20),cscore number(2));
-- 创建一张成绩表:学号和课程号共同作为一个主键,称为联合主键
-- 一张表只能有一个主键
create table score(sno number(4),cno number(4),score number(5,2),constraint pk_score primary key (sno,cno));
drop table course;
create table course(cno number(4) constraint pk_course primary key ,cname varchar2(20),cscore number(2));
作业:
drop tablespace test_data including contents and datafiles;
2. 复习本周所讲的所有内容,预习约束的相关内容,下周提问。
来源: http://www.bubuko.com/infodetail-2451668.html