`

oracle创建表语句注意事项

阅读更多
创建与管理表
  数据库中对象:有表、视图、索引、序列、同义词等。
表:基本的数据存储的集合,由行与列组成
视图:从表中抽出的逻辑上相关的数据集合。
序列: 提供有规律的数值
索引:提高查询效率
同义词:给对象起的别名。

Oracle数据库中的表
1、	用户自定义表
表名和列名的命名规范:
	必须以字母开头
	必须在 1–30 个字符之间
	必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
	必须不能和用户定义的其他对象重名 
	必须不能是Oracle 的保留字

创建表必须具备:
	 必须具备:
•	CREATE TABLE权限
•	存储空间
	必须指定:
•	表名
•	列名, 数据类型, 尺寸
创建表的语法
      CREATE TABLE [schema.]table
	    (column datatype [DEFAULT expr][, ...]);

数据类型如下:
数据类型	描述
VARCHAR2(size)	可变长字符数据
CHAR(size)  	定长字符数据
NUMBER(p,s)  	可变长数值数据
DATE 	日期型数据
LONG 	可变长字符数据,最大可达到2G
CLOB	字符数据,最大可达到4G
RAW (LONG RAW) 	原始的二进制数据
BLOB	二进制数据,最大可达到4G 
BFILE	存储外部文件的二进制数据,最大可达到4G 
ROWID	行地址
   创建表的分析:
       在数据库中必须遵循一定的规范 这些规范称为范式.目前关系数据库有6种方式,数据库只需要满足3NF即可,需要使用范式对数据库中表进行处理.

  下面我以学生信息为例分析:
   学号,学生姓名,出生日期,学生性别,所属班级,所属院系,系主任姓名,课程编号,成绩.
  分析:
   学号:sid          数据类型 varchar2
   学生姓名:sname
   出生日期:sbirth    date
   学生性别:ssex       
   所属班级:sclass
   所属院系:sdep
   系主任姓名:dname
   课程编号:cid
   成绩 grade         number(5,2)
创建学生信息表
根据如上信息可以创建存储的表 学生信息表  包含医以上的全部信息,但非规范。

分析设计过程:
       必须满足3NF范式 但前提必须满足1,2NF
1、	属性不可再分(1NF) ==一对多关系
学生信息表:Sid,sname,sbirth,ssex,sclass,sdep,dname
成绩表: sid cid grade
2、	(前提必须满足1NF )表中的所有非主属性都完全依赖于任一候选键。
注:这里说的不是部分依赖
Sid->Sname
sid->sbirth
sid->ssex
sid->sclass 
sdep->dname
--其他普通属性不应当存在部分依赖于主要属性->此普通属性应当被分离到新的表中去
s(sid,sname,sbirth,ssex,sclass,sdep)
d(sdep,dname)
g(sid,cid,grade)


3、	(前提满足2NF)表中的每一个非主属性都不传递依赖于任何候选键。

s(sid,sname,sbirth,ssex,sclass,sdep)
d(sdep,dname)
g(sid,cid,grade)

在满足2NF后 分析:
Sid->sclass 
Sclass->sdep 
Sid->sdep
s(sid,sname,sbirth,ssex,sclass)
cd(sclass,sdep)
d(sdep,dname)
g(sid,cid,grade)



2、	Oracle数据字典
 2.1查询用户自定义表
      //查询用户定义的表的名称
SQL> select table_name from user_tables;
//查询用户自定表的详细特征
SQL> select * from user_tables
//等效于
SQL> select * from tabs;

2.2查询用户定义的各种数据库对象
SQL> select distinct object_type from user_objects; 
OBJECT_TYPE
-------------------
SEQUENCE
TABLE
INDEX
2.3 查看用户定义的表、视图、序列和同义词
SQL> select * from user_catalog;
 
TABLE_NAME              TABLE_TYPE
------------------------------ -----------
USESS                       TABLE
ABC                          TABLE
DEPT                        TABLE
EMP                         TABLE
SALGRADE                 TABLE
PRODUCT_SEQ             SEQUENCE
ORDERS_SEQ               SEQUENCE
ORDERITEM_SEQ          SEQUENCE
USERS                       TABLE
PRODUCT                   TABLE
ORDERS                     TABLE
ORDERITEM                TABLE
TMP                         TABLE
PAGES                       TABLE
STUDENT                   TABLE
COURSE                     TABLE
SC                            TABLE
TEST                         TABLE
 
18 rows selected

用户自定表


使用 ALTER TABLE 语句可以:
	追加新的列
	修改现有的列
	为新追加的列定义默认值
	删除一个列

使用 ALTER TABLE 语句追加, 修改, 或删除列的语法.
追加
ALTER TABLE table 
ADD		   (column datatype [DEFAULT expr]
		   [, column datatype]...);
修改
ALTER TABLE table 
MODIFY	   (column datatype [DEFAULT expr]
		   [, column datatype]...);

删除
ALTER TABLE table 
DROP	column   (column_name);

修改列的名称
ALTER TABLE table_name rename column old_column_name 
to new_column_name 


案例:
//采用子查询创建customer表 表的结构域users表完全一致
SQL> create table customer as select * from users; 
Table created 
SQL> commit; //事务提交
Commit complete
//为customer表添加新的列 email 类型varchar2(20).
SQL> alter table customer add email varchar2(20);
Table altered
SQL> commit;
SQL> desc customer;
Name Type       Nullable Default Comments 
-------- ------------ -------- ------- -------- 
USERNAME VARCHAR2(20) Y                        
PASSWORD VARCHAR2(20)                           
NAME VARCHAR2(20)                           
ADDRESS VARCHAR2(20) Y                        
ZIP     NUMBER(6) Y                        
EMAIL VARCHAR2(20) Y
    
//修改某个字段的类型
SQL> alter table customer modify email number(4);
 
Table altered
 
SQL> commit;
 
Commit complete
 
SQL> desc customer;
Name Type       Nullable Default Comments 
-------- ------------ -------- ------- -------- 
USERNAME VARCHAR2(20) Y                        
PASSWORD VARCHAR2(20)                           
NAME VARCHAR2(20)                           
ADDRESS VARCHAR2(20) Y                        
ZIP     NUMBER(6) Y                        
EMAIL NUMBER(4) Y      
//删除某个字段
SQL> alter table customer drop column email;
Table altered
SQL> commit;
Commit complete
SQL> select * from customer;
//修改表的某个字段的名称
SQL> alter table customer rename column address to addr;
Table altered
SQL> commit;

删除表
	数据和结构都被删除
	所有正在运行的相关事物被提交
	所有相关索引被删除
	DROP TABLE 语句不能回滚

修改对象的名称
	执行RENAME语句改变表, 视图, 序列, 或同义词的名称
	必须是对象的拥有者
//修改对象的名称操作
SQL> rename customer to customers;
清空表
	TRUNCATE TABLE 语句:
•	删除表中所有的数据
•	释放表的存储空间
	TRUNCATE语句不能回滚
	可以使用 DELETE 语句删除数据
//清空表的操作
SQL> truncate table customers;

总结:您已经学会如何使用DDL语句创建, 修改, 删除, 和重命名表.
语句	          描述
CREATE TABLE 	创建表
ALTER TABLE 	修改表结构 
DROP TABLE 	删除表
RENAME 	     重命名表
TRUNCATE   	删除表中的所有数据,并释放存储空间

 
分享到:
评论

相关推荐

    oracle 外部表语法

    ### Oracle 外部表语法详解 #### 一、外部表概念 在Oracle数据库中,**外部表**是一种特殊类型的表,其数据存储于数据库之外,通常位于文件系统中。这使得用户能够在无需将数据导入数据库的情况下,直接使用SQL对...

    excel2003 生成oracle 建表语句

    标题"excel2003 生成oracle 建表语句"涉及到一个实用工具,它允许用户利用Microsoft Excel 2003来创建Oracle数据库的建表语句。这个工具基于Excel的宏功能,使得非编程背景的用户也能相对轻松地生成SQL脚本,这对于...

    Oracle中查询哪个存储过程中引用包含T-USER-INFO表语句的命令脚本

    Oracle中查询哪个存储过程中引用包含T_USER_INFO表语句的命令脚本 1. 深度扫描:此脚本不局限于表面查询,而是深入PL/SQL代码块,确保无遗漏地找出所有直接或间接引用"T_USER_INFO"表的存储过程及函数,无论是排查...

    oracle到mysql建表语句迁移

    oracle向mysql建表语句的迁移。 直接表结构的生成sql脚本

    excel动态创建hive表语句模板.xlsx

    excel 根据字段创建 hive表

    VB注册表语句应用示例

    API函数如`RegCreateKeyEx`, `RegOpenKeyEx`, `RegQueryValueEx`, `RegSetValueEx` 和 `RegCloseKey`等,用于创建、打开、查询或修改注册表键值。例如,`RegCreateKeyEx`可以用来创建新的注册表键,而`RegSetValueEx...

    SQL修复数据表语句

    #### 三、注意事项 1. **备份数据**:在进行任何修复操作之前,强烈建议先备份数据,以防意外发生导致数据丢失。 2. **测试环境**:在生产环境中执行此类操作前,最好先在一个测试环境中模拟整个过程,确保不会产生...

    中国省市城市sql表语句和xml语句

    首先,SQL表语句通常用来创建、更新、查询和管理数据库中的数据。在这个场景下,可能有一个或多个SQL表,每个表代表一个层级的行政区域,如“省份表”、“城市表”等。表的结构可能包括字段如“id”(唯一标识)、...

    K3 WISE-职员表和部门表语句相关的SQL语句.zip

    K3 WISE-职员表和部门表语句相关的SQL语句,方便大家提取职员与部门的相关信息的sql语句。

    C#操作Mysql创建数据库,数据表,增、删、改数据

    本教程将详细介绍如何使用C#与Mysql进行交互,包括创建数据库、数据表以及执行基本的CRUD(Create、Read、Update、Delete)操作。 首先,我们需要在C#项目中引入Mysql的数据提供者——`MySql.Data.dll`。这个库允许...

    表语从句练习与解析.pdf

    表语从句是一种复合句,它在句子中作为系动词(如be,seem,become等)的表语,通常用来解释或说明主语的性质、状态或特征。在给定的练习题中,我们可以看到多个关于如何正确使用表语从句的例子。 首先,我们来分析...

    idea创建ssm(spring+springMVC+mybatis+mysql+maven)基础登录框架源码含sql表语句

    在SSM基础登录框架中,开发者通常会创建用户实体类,设计用户表,编写对应的Mapper接口和XML配置文件,实现登录验证的Service和Controller。解压提供的源码后,根据自己的数据库信息修改配置文件(如...

    高中英语语法精讲之表语从句PPT课件.pptx

    表语从句可以是名词性从句的一种,可以充当复合句中的表语。 二、构成和特点 表语从句的构成通常为:主语 + 系动词 + 引导词 + 简单句。其中,系动词可以是be、feel、seem、look、appear、sound、taste、smell等,...

    高一英语表语从句讲解1PPT课件.pptx

    名词性从句是其中一种特殊的从句,它们在复合句中起到名词的作用,可以作为主语、宾语、表语或同位语。名词性从句分为四种类型:主语从句、宾语从句、表语从句和同位语从句。 **表语从句**是名词性从句的一种,它...

    定语从句注意事项-----一些细节性的知识

    本篇文章将深入探讨定语从句的一些注意事项,帮助读者更好地理解和运用这一语法概念。 首先,我们要了解关系词在定语从句中的角色。关系代词包括who(人,主语、宾语、表语)、whom(人,宾语)、which(物,主语、...

    HANA-SQL参考及Oracle对照-v0.6.docx

    HANA 和 Oracle 中的 update 表语句都是用于实现这个功能的。 8. 多表关联 update 语句 多表关联 update 语句用于更新多个表的数据。HANA 中的多表关联 update 语句都是使用 update 和 set 语句实现的。 HANA 和 ...

    SqlServer与Oracle差异

    - Oracle的全局临时表语法:`CREATE GLOBAL TEMPORARY TABLE aa(col number) ON COMMIT PRESERVE ROWS`,可以选择在事务处理结束后保留或删除数据。 - Sql server使用`SELECT * INTO #temptable FROM existed ...

    sqlite-create-table-parser:LL手写练习递归下降算法sqlte创建表语句解析器

    introduction LL handwriting practice recursive descent algorithm sqlite create table statement parser. See Bowen practicing handwriting a SQLite parser 简介 练习手写LL递归下降算法的sqlite create table...

    样式表语法总结_Qt样式表语法总结_Qt样式表_QT_

    **Qt样式表语法总结** Qt样式表(QSS,Qt Style Sheet)是Qt框架提供的一种强大的界面美化工具,类似于Web开发中的CSS,用于控制Qt应用程序的外观和布局。通过使用Qt样式表,开发者可以轻松地改变窗口、按钮、...

Global site tag (gtag.js) - Google Analytics