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 数 ...
随机推荐
- This Gradle plugin requires a newer IDE able to request IDE model level 3. For Android Studio this means v3+
在项目的gradle.properties配置文件中加入以下这句: gradle.properties中:android.injected.build.model.only.versioned = 3
- 使用docker-compose部署nginx
1.新建docker-compose.yml文件,文件的基本模板如下:(由于yml格式比较严格,注意空格缩进) version: '2.0' services: nginx: restart: a ...
- C#语法糖(Csharp Syntactic sugar)
目录 一.C#语法糖大汇总 1. 经过简化的Property2. 经过两次变异的委托写法3. 集合类的声明4. 集合类各个项的操作5. using == try finally6. 可爱的var7. ...
- docker 基础之操作容器
Docker子命令分类 Docker 环境信息 info .version 容器生命周期管理 Create.exec.kill.pause.restart.rm.run.start.stop.unpa ...
- GlusterFS分布式文件系统部署及基本使用(CentOS 7.6)
GlusterFS分布式文件系统部署及基本使用(CentOS 7.6) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Gluster File System 是一款自由软件,主要由 ...
- Kafka技术内幕 读书笔记之(六) 存储层——服务端处理读写请求、分区与副本
如下图中分区到 日 志的虚线表示 : 业务逻辑层的一个分区对应物理存储层的一个日志 . 消息集到数据文件的虚线表示 : 客户端发送的消息集最终会写入日志分段对应的数据文件,存储到Kafka的消息代理节 ...
- C#设计模式(1)——简单工厂模式
1.什么是简单工厂 现实中的工厂负责生产产品,顾名思义,编程中的简单工厂就是一个生产对象的类,它的主要作用是创建具体的产品类实例.我们以一个生产鼠标为例来分析简单工厂的作用,鼠标有两种:戴尔鼠标和惠普 ...
- DirectX11 With Windows SDK--05 键盘和鼠标输入
前言 提供键鼠输入可以说是一个游戏的必备要素.在这里,我们不使用DirectInput,而是使用Windows的消息处理机制,不过要从头开始实现会让事情变得很复杂.DXTK提供了鼠标输入的Mouse. ...
- nodejs 下载远程图片
var express = require('express'); var request = require('request');var http = require('http');var ur ...
- EFCodeFirst示例
1.定义一个基础模板类 namespace WebApplication1.Models { /// <summary> /// 可持久到数据库的领域模型的基类. /// </sum ...