欢迎转载,转载请标明出处:https://blog.csdn.net/qq_44333320/article/details/105754992
表结构和数据类型
表和表结构
表是日常工作和生活使用的一种表示数据以及关系的形式。如图为学生表。
数据类型
- 字符类型(char、varchar2)
- 数值类型(number)
- 日期和时间类型(date)
- LOB类型
- ROWID类型
最常用的是VARCHAR2、NUMBER、DATE和CLOB。
表结构设计
简而言之,表结构设计就是定义表结构以及设置表和列的属性。
创建和操作表空间
数据表空间 (Tablespace)
存放数据总是需要空间, Oracle把一个数据库按功能划分若干空间来保存数据。当然数据存放在磁盘最终是以文件形式,所以一盘一个数据表空间包含一个以上的物理文件。
- 创建表空间
格式: create tablespace 表间名 datafile '数据文件名' size 表空间大小
create tablespace BKJ --创建名为BKJ表空间
logging --默认产生日志
datafile 'F:\oracle data\BKJ.dbf' --自定义路径
size 50m --空间大小
autoextend on
next 50m maxsize 20480m --自动扩展至最大,每次扩展50M
extent management local; --创建本地化的可变表空间
- 创建用户并授权
格式: create user 用户名 identified by 密码 default tablespace 表空间表;
create user zzxy identified by zzxy default tablespace BKJ;
- 赋予权限
grant connect,resource to zzxy; //表示把 connect,resource权限授予zzxy用户
grant create tablespace to zzxy;//表示把create tablespace权限授予给zzxy
grant dba to zzxy;//表示把 dba权限授予给zzxy
1.grant connect,dba,resource,EXP_FULL_DATABASE,IMP_FULL_DATABASE to zzxy;
2.grant create session to 用户名 //允许用户连接;
grant select,insert,update on 表名 to 用户名 //允许用户对该表进行查询,插入,修改
4.删除用户及数据库
drop user zzxy cascade;或drop user zzxy ;
drop user xxx必须是这个用户下面没有任何对象;这样才可以使用这个命令,否则就会报错;如果用户下面有对象,就得用drop user xxx cascade来删除这个用户以及这个用户下的所有对象。
- 几个操作
select username from dba_users;//查询用户
select username,default_tablespace from dba_users order by username;//查询用户和用户所在的表空间
SELECT TABLE_NAME,TABLESPACE_NAME FROM USER_TABLES;//查询表所在的表空间
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;//删除表空间
创建和操作表
创建表
格式:create table 表名(
列名 数据类型;
。。。。。。;
。。。。。。
);
基本的增删改查
- 增
添加列:alter table 表名 add 列名 列的属性; --单列操作
alter table 表名 add (列名1 列1的属性,列名2 列2的属性,...) --多列操作
添加表注释:comment on table 表名 is '表注释';
添加字段注释:comment on column 表名.列名 is '列注释';
添加约束:
添加主键约束:alter table 表名 primary key(列名);
添加唯一约束:alter table 表名 constraint 约束名 unique(列名);
//主键约束和唯一约束的区别:主键约束:唯一标识,不能为空。唯一约束:唯一标识,只能有一个值为空
非空约束:alter table 表名 modify(列名 constraints);
数据的增加:
--单行操作
insert into 表名 values(所有列的信息); --数据类型必须与表结构里字段的属性一致
insert into 表名 values(部分信息); --会按表的字段顺序加入信息,后面没设置的为null(输入数据必须小于或等于列数)
--多行操作
insert into 表1
select 数据1 from dual
union
select 数据2 from dual; --dual 是一张伪表只是为了方便操作而存在,需要了解的请百度
- 删
清空表,truncate和delete.都是删除表中所有数据,保留表的结构,区别是TRUNCATE语句不能回滚. 但DELETE 语句删除数据,可以回滚。
删除列:alter table 表名 drop column 列名; --单列操作
alter table 表名 drop (列1,列2); --多列操作(多列不需要加column)
删除表:DROP TABLE 表名;//drop数据和结构都会被删除,事务被提交,索引被删除,无法回滚
数据的删除:
delete from 表名 --删除所有数据
delete 列名 from 表名 where 条件 --删除符合条件的某些数据
//删除某一列数据(该列必须可以为null):
1.update 表名 set 列名=null;
2.delete from 表名 where 列名 is not null ;
- 改
修改列:alter table 表名 rename column 原列名 to 列名;
修改数据类型:alter table 表名 modify 列名 新属性; --单列操作
alter table 表名 modify (列名1 列1的新属性,列名2 列2的新属性);--多列操作
插入数据:insert into(列名,……)values(数据,……);
//注意!!! oracle中不能直接写入日期函数
插入时间:to_date('2020-4-25 21:34:54','YYYY-MM-DD HH24:MI:SS')
插入当前时间:sysdate
update 表名 set 列名=数据 where 条件; --修改满足条件的数据
update 表名 set 列名=数据; --将该列全部修改
- 查
select * from 表名; --查看表的全部信息
select 列1,列2 from 表名; --查看表的列1,列2信息
敲敲知识点之总结:
create table:创建表
alter table:修改表结构
drop table:删除表
rename to:重命名表
truncate table:删除表中的所有数据,并释放存储空间