Oracle笔记--表的创建和修改

表的创建和修改

表的创建

表的概念:

表是数据库中最重要的对象,是数据库的基础,是基本存储单元,用来存储数据,由行(记录)和列(字段)组成。
一个数据库表,可以有多达1000个字段,表名和字段名必须符合命名规则。表在创建时没有数据,只是一个表结构,之后可以通过INSERT语句单行或多行添加数据 。

Oracle数据库的表和字段的命名规则:

如同Java语言变量有命名规则一样,

  1. 必须以字母开始
  2. 必须是1到30 个字符长度
  3. 只能包含字母、数字、下划线“_”、美元符“$”和井号“#”
  4. 不能使用Oracle的关键字
  5. 同一个用户所拥有的对象之间不能重名

创建表的语法形式:

CREATE TABLE [schema.]table
	(col1 type1 [DEFAULT1], col2 type1 [DEFAULT2]…coln typen [DEFAULTn])

schema(方案)是对象的集合,在Oracle中,一个用户一般对应一个方案,该用户的方案名等于用户名,并作为该用户缺省的方案。如果一个表不属于本用户,那么则必须通过方案名.表名访问这个表,也就是通过用户名.表名访问这个表
–其他用户访问scott用户的表,本用户访问自己的表可以省略
select * from scott.emp

创建表实例

–需求:新建一个部门表depts,该部门表有四个字段,分别是部门编号dept_id、部门名称dept_name、部门经理名字manager_fname和所在地dept_loc

create table depts(
       dept_id number(3),
       dept_name varchar2(32),
       manager_fname varchar(32),
       dept_loc varchar2(32) default '北京'        )

–需求:新建一个员工表,表中只包含雇员编号、雇员姓名、雇员的入职日期,数据来源于emp表

create table emp_temp(t_empno,t_ename,t_hiredate) as
select empno,ename,hiredate from emp

–**注意:**新建表后面的字段列表,如果有的话,字段的数目必须等于子查询所选字段的数目,
如果没有,则新建表的字段名使用子查询的字段名
另外,定义新表的字段属性,只能定义字段名和默认值,字段的类型引用子查询的列

create table emp_temp as
select empno,ename,hiredate from emp

–**注意:**若select语句中,包含组函数,需要指定列名或命名,否则报错。
组函数命名

create table emp_temp2 as
select deptno,avg(sal) sal_avg from emp group by deptno

指定新表的列名,可以指定新表某列的默认值,但不可以指定字段的类型。

create table emp_temp2(deptno default 10,sal_avg  default 3000) as
select deptno,avg(sal)  from emp group by deptno

–**注意:**只想复制表结构,不想要数据

create table emp_temp as
select empno,ename,hiredate from emp where 1!=1

数据库数据类型

   mysql                oracle

   int(4)               number(4)
   float                number(4,2)  --最多4位,2位小数
   varchar(32)          varchar2(32)--可变长度
   char(2)              varchar(2)   --定长
   date                 date 

修改表结构:ALTER TABLE语句

改变表的结构,需要添加或删除一个字段或修改某个字段的定义。

语法形式:

用ALTER TABLE语句添加字段、修改字段和删除字段的语法形式:其中,ADD、MODIFY和DROP是修改的类型。

ALTER TABLE table
	        ADD(col1 type1 [DEFAULT1], col2 type2 [DEFAULT2]…)
ALTER TABLE table
	        MODIFY(col1 type1 [DEFAULT1], col2 type2 [DEFAULT2]…)
ALTER TABLE table
	        DROP(col)

实例:

–需求:给之前创建的depts表中增加一个字段,部门编制人数num_limit,数据类型为数字型,默认值为10人。

ALTER TABLE depts
	        ADD(num_limit NUMBER(2) DEFAULT 10)

注意:添加的新字段在该表的最后一列,不能指定字段位置。同时如果被添加的表中已包含有行,则所有行的新字段被初始化为空或默认值。
–需求:depts表中部门所在地字段dept_loc的字符长度原先设定的30不够使用,需要调整为50。

ALTER TABLE depts
	       MODIFY(dept_loc VARCHAR(50))

注意:在ALTER TABLE语句后,可以用MODIFY子句修改一个字段,
字段的修改包括修改字段的数据类型(仅在列中只有空值时才可以修改),大小和默认值,
不过对默认值的修改只会影响后来插入表的数据,对之前的数据不会产生影响。
–需求:要删除刚刚创建的部门职数字段num_limit

ALTER TABLE depts
	       DROP(num_limit)

注意:在ALTER TABLE语句后,可以用DROP子句删除一个字段。删除一个字段时,不论表中已有行的这个字段是否有数据。
和添加字段、修改字段不同的是,删除字段一次只能有一个字段被删除

oracle中 null 不等于 null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值