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 数 ...
随机推荐
- 降维方法PCA与SVD的联系与区别
在遇到维度灾难的时候,作为数据处理者们最先想到的降维方法一定是SVD(奇异值分解)和PCA(主成分分析). 两者的原理在各种算法和机器学习的书籍中都有介绍,两者之间也有着某种千丝万缕的联系.本文在简单 ...
- mybatis_异常
1.HTTP Status 500 - Request processing failed; nested exception is org.apache.ibatis.binding.Binding ...
- OS + CentOS 7 / firefox
s 一.安装firefox二.缺少so依赖如下步骤操作 1.缺少so依赖:下载firefox依赖so文件:libgtk-3.so.0.1400.13.libgdk-3.so.0.1400.13.lib ...
- IMDB影评倾向分类 - N-Gram
catalogue . 数据集 . 模型设计 . 训练 1. 数据集 0x1: IMDB影评数据 本数据库含有来自IMDB的25,000条影评,被标记为正面/负面两种评价 from keras.dat ...
- Java测试Junit
Junit就是做测试用的,想想平常我们是怎么测试我们的方法或者类的,是不是在main方法里面去调用?这样有缺点: 1.每次都要在main方法里面写测试,假如我要上线新系统,里面有1000个方法需要测试 ...
- C++回顾day02---<对象构造和析构,外加友元函数>
一:若没有显示写构造函数,默认会有一个默认构造函数(无参),若自己构造后,不会存在这个默认构造函数 二:类成员若是有const修饰,必须在对象初始化的时候,为该类成员赋值(或者一开始就定死,同C中) ...
- scrapy_splash模块解析动态js
一般遇到动态加载的网页就比较棘手,一般采用scrapy_splash和selenium这两种方式来解决.貌似scrapy_splash更强大,因为就从爬取美团这个网站而言,scrapy_splash可 ...
- Ruby on rails 项目启动流程
众所周知,我们可以通过rails s 这个命令来启动一个rails 项目,但是这条命令都干了哪些事呢?抽时间研究了下,同时感谢tomwang1013的博客.当我们输入rails s 这个命令的时候,项 ...
- mysql:insert插入数据过慢如何解决,设置innodb_flush_log_at_trx_commit为0就能解决
问题: 最近在做性能测试,造数据,发现insert好慢,只有几十条每秒,很奇怪,最后再网上找到了原因. 网文如下: MY SQL insert 速度过慢 最近在用MySQL做存储,测试中发现插入数据太 ...
- 51Nod - 1228 序列求和 (自然数幂和+伯努利数)
https://vjudge.net/problem/51Nod-1228 Description T(n) = n^k,S(n) = T(1) + T(2) + ...... T(n).给出n和k, ...