DDL语句管理表 DML管理表数据
1)语法: 创建 和 删除 表空间 / 创建用户
create tablespace 表空间的名称
datafile '文件路径' //这个文件是存储在服务器端的电脑上的。
size 初始大小
autoextend on --打开自动扩容
next 每次扩容大小
例子:
– 创建表空间,前提是需要切换到管理员帐号,比如system,ps:root
create tablespace xiongan
datafile 'c:\xiongan.dbf'
size 100m
autoextend on
next 10m;
创建完表空间之后,是需要创建用户来管理和操作这个表空间的。
语法: 创建用户
create user 用户名
identified by 密码
default tablespace 表空间的名称
例子:
create user zhangsan
identified by zhangsan
default tablespace xiongan
创建完用户之后,现在还是不能够登录的,因为现在的用户是没有权限的,需要对用户进行授权
Oracle中已经存在三个重要的角色,connect角色,resource角色,dba角色
grant 角色 to 用户名
例子:
grant dba to zhangsan
因为我们的授予zhangsan用户的是dba的权限,所以可以访问和修改其他角色select * from scott.emp;
删除表空间 ,在逻辑上断开连接
drop tablespace xiongan;
2)创建表
create table 表名(
列名1 列的类型 [列的约束],
列名2 列的类型 [列的约束]
);
2.1)列的类型
number(总长度,小数长度) :数字 小数长度不能大于总长度number(2,3)
varchar2(长度) :可变长度字符 varchar2(10) hello , 只存5个字符
char(长度) : 固定长度字符 char(10) hello , 不够长度,用空格
varchar2(5) hellooooo
date : 年月日时分秒
timestamp : 时间戳, 更加精确,表示的时间更丰富
Long : 存放大文本 2G
Clob : 存放大文本 4G character large object ,大文本数据
Blob : binary large object 二进制大对象 ,存放音频视频
下面这两个可以查询时间和事件戳:
select sysdate from dual;
select current_date from dual; -- 2017/8/26 15:18:37
select current_timestamp from dual; -- 26-AUG-17 03.19.53.250000 PM +08:00
–前面两种的结果是一样的,current_timestamp显示的信息更加丰富
2.2)使用子查询创建表 / 修改表
-- 使用子查询创建表
create table emp as select * from scott.emp;
-- 复制表,只要结构,不需要数据
create table emp1 as select * from scott.emp where 1=2;
-- 添加列, add,注意添加列的时候,要求表是空表,否则会报错
alter table person add sex varchar2(20) not null;
-- 同时添加多列
alter table person add (
mobile varchar2(11),
address varchar2(20)
);
-- 重定义列的类型 - modify
alter table person modify sex number;
-- 删除列
alter table person drop column mobile;
-- 修改列名
alter table person rename column sex to gender;
-- 修改表名