sql总结-----数据表操作
数据表概述
表示一种最常见的组织数据的方式,一张表一般有多个列(即多个字段)。
oracle提供了多种内置的列的数据类型,常用的有以下五种:
1、字符类型
字符数据类型用于声明包含字母、数字数据的字段。对于字符数据类型细分又可以分为两种:
他们分别对应,CHAR数据类型以及CHAR2数据类型。 CHAR数据类型:
用于存储固定长度的字符串,当为该列的某个单元格赋值小鱼长度的数值后,空余部分oracle会用空格自动填充;
如果字段保存的字符长度,大于规定的长度,则,oracle会产生报错信息。
CHAR类型的长度范围为1-2000个字节。
CHAR2数据类型:
用于存储变长而非固定字长的字符串。 2、数值数据类型
数值数据类型用于存储带符号的整数或浮点数。
oracle中的NUMBER数据类型具有精度(precision)和范围(SCALE)两个参数。 3、日期时间数据类型
oracle提供的日期时间数据类型是DATE,他可以存储日期和时间的组合数据。 4、LOB数据类型
LOB数据类型用于大型的,未被结构化的数据,
例如二进制文件、图片文件和其他类型的外部文件。LOB数据类型分为BLOB、CLOB和BFILE等三种。 5、ROWID数据类型
被称为“伪列类型”,用于在oracle内部保存表中的每条记录的物理地址。
如果用户在自己的模式下创建一个表,则用户必须具有create table的系统权限;
如果要在其他用户模式下创建表,则必须具有create any table的系统权限。
创建数据表
1、创建一个学生档案信息表
create table students(
stuno number(10)not null, --学号
stuname varchar2(8), --姓名
sex char(2), --性别
age int, --年龄
departno varchar2(2) not null, --系别编号
classno varchar2(4) not null, --班级编号
regdate date default sysdate --建档日期
);
使用describe命令查看数据表的数据结构
SQL> describe students;
Name Null? Type
----------------------------------------- -------- ----------------------------
STUNO NOT NULL NUMBER(10)
STUNAME VARCHAR2(8)
SEX CHAR(2)
AGE NUMBER(38)
DEPARTNO NOT NULL VARCHAR2(2)
CLASSNO NOT NULL VARCHAR2(4)
REGDATE DATE
使用create table as select命令创建表副本:
create table students_2 as select * from students;
维护数据表
创建数据表后,如果对表的定义有不满意的地方,可以进行修改。普通用户只能对自己模式中的表进行修改,如果要对任何模式中的表进行修改,则必须具有alter any table的系统权限。
1、增加和删除字段
用户可以用alter table --- add语句向表中添加字段。
alter table students add (province varchar2(10));
用户可以用alter table --- drop语句删除表字段。但是,不能删除所有的字段,也不能删除sys模式中任意表的字段。
如果仅需要删除一个字段,则必须在字段前指定column关键字。
alter table students drop column province;
#一条语句删除多个列
alter table students drop (age,sex);
2、修改字段
修改字段 通常使用alter table modify语句。
用户在修改字段时,并不可以随意修改;
在有数据的情况下,把某种数据类型改为兼容的数据类型时,只能把数据的长度从低向高修改,而不能从高向低修改,否则会出现数据溢出的情况。
alter table students modify stuno number(20);
3、重命名表
用户只能对自己模式下的表进行重命名,重命名表通常使用alter table xxx rename to XXX语句。
alter table students rename to students_2;
在对表的名称进行修改时要格外谨慎。虽然oracle可以自动更新数据字典中的外键、约束定义以及表关系,但是他不能更新数据库中的存储过程、客户应用,以及依赖该对象的其他对象。
4、删除表
一般情况下用户只能删除自己模式下的表,如果要删除其他模式下的表,则必须具有drop any table的权限。
语法格式:
drop table table_name [cascade constraints];
如果该表存在约束、关联的视图和触发器等,则必须使用cascade constraints参数才能将其删除。
当时用delete语句进行删除时,只删除数据不删除表结构;drop语句会删除数据以及表结构。
一般情况下,当某个表被删除,它并没有被彻底删除,而是进入回收站中(依然占用存储空间),可以使用flashback table语句进行还原。
drop table students_2;
select * from students_2;
select object_name,original_name from recyclebin where ORIGINAL_NAME = 'students_2'---查看表是否在回收站
flashback table students_2 to before drop;
如果用户想在删除表时立即释放空间,并且不放在回收站,则可以使用以下语句:
drop table table_name purge;
5、修改表状态
用户可以将表置于read only状态,处于该状态的表不能执行DML和某些DDL操作。在11g之前,为了使某个表置于只读模式,只能将整个表空间置于read only状态。
alter table students read only;
alter table students read write;
可以通过数据字典user_tables查询表的状态,
select table_name,read_only from user_tables where table_name='STUDENTS';
数据完整性与约束性
sql总结-----数据表操作的更多相关文章
- SQL语句之表操作
SQL语句系列 1.SQL语句之行操作 2.SQL语句之表操作 3.SQL语句之数据库操作 4.SQL语句之用户管理 写在前面 在上一篇博文里面我整理了“行”级别的操作,分别是“增(insert).删 ...
- 孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数
孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 不同类型 ...
- MySQL之唯一索引、外键的变种、SQL语句数据行操作补充
0.唯一索引 unique对num进行唯一限制,表示num是独一无二的,uql是唯一索引名称 上面为联合索引:num和xx不能完全一样 1.外键的变种 a. 用户表和部门表 用户: 1 alex 1 ...
- mysql数据表操作&库操作
首先登陆mysql:mysql -uroot -proot -P3306 -h127.0.0.1 查看所有的库:show databases; 进入一个库:use database; 显示所在的库:s ...
- sql复制数据表和表结构
SQL复制数据表 (select * into 与 insert into) select * into 目标表名 from 源表名 insert into 目标表名(fld1, fld2) sele ...
- [SQL]SQL Server数据表的基础知识与增查删改
SQL Server数据表的基础知识与增查删改 由张晨辉(学生) 于19天 前发表 | 阅读94次 一.常用数据类型 .整型:bigint.int.smallint.tinyint .小数:decim ...
- MySQL 数据表操作
MySQL 数据表操作 创建MySQL数据表需要以下信息: -表名: -表字段名: -定义每个表字段: 一.创建数据表 1)mysql> create table table_name (c ...
- mysql 数据表操作 目录
mysql 数据表操作 存储引擎介绍 mysql 使用存储引擎 mysql 数据表的增删改查 mysql 数据类型 mysql 约束条件
- Mysql之数据表操作
数据表操作: 查看当前数据库中所有的表: show tables; 查看当前使用数据库: select database(); 使用数据表: use 表名; 创建数据表: create table 数 ...
随机推荐
- C#语法糖(Csharp Syntactic sugar)
目录 一.C#语法糖大汇总 1. 经过简化的Property2. 经过两次变异的委托写法3. 集合类的声明4. 集合类各个项的操作5. using == try finally6. 可爱的var7. ...
- Hadoop生态圈-Ranger数据安全管理框架
Hadoop生态圈-Ranger数据安全管理框架 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Ranger简介 Apache Ranger是一款被设计成全面掌握Hadoop生 ...
- MySQL mysqldump与source导入慢的解决方法
Jquery中文网 > 数据库 > mysql > 正文 MySQL mysqldump与source导入慢的解决方法 MySQL mysqldump与source导入慢的 ...
- 再次回归 Spark-- 转
原文地址 combineByKey 三个参数 val scores = sc.parallelize(Array(("jake",80.0),("jake",9 ...
- sqlalchemy数据库分层操作
在学习sqlalchemy操作中,最常见的就是如下的示例,一个文件基本上包含了数据库的增删改查.sqlalchemy的具体操作我就不再详细说明了.流程大概是: 定义表 创建数据库引擎 创建表 插入数据 ...
- redis基本操作
''' pip install redis redis 可以看成内存中的大字典 redis五大数据类型 --> 指的是第一层的value值的类型 - 字符串 "k1" - 列 ...
- maven构建项目时硬编码中文乱码问题解决
场景:1. 项目采用maven作为构建工具.2. 前端页面为jsp,由前端团队独立完成,添加编码配置:<%@ page contentType="text/html;charset=u ...
- maven多模块依赖源码调试
Maven多模块项目中,通常存在摸个模块同时依赖其他多个基础模块的情况.在eclipse中使用run-jetty-run插件调试时,常常会出现找不到被依赖模块对应源码的错误提示.举个例子,模块A同时依 ...
- Install Ubuntu Server
进入引导程序以后, 选择Install Ubuntu Server, 安装主菜单如下: 依次配置: 接着 https://www.youtube.com/watch?v=gqLaT01yei0
- [Windows] [DLL] [动态链接库技术]
cppblog.com 天空的博客 http://www.cppblog.com/API/archive/2011/03/10/141506.html cnblogs.com 吴秦的博客 http:/ ...