`
jayghost
  • 浏览: 443926 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Oracle创建、修改表和主键自增

 
阅读更多

创建表:

create table tuser(

 id number(11) not null,

 name varchar2(20) not null,

 password varchar2(20),

 birthday date,

constraint tuser_pk primary key (id)

);

创建序列:

create sequence increase_seq increment by 1 start with 1 nomaxvalue nocycle cache 10;

创建trigger:

create or replace trigger tuser_trigger

before insert on tuser for each row

begin

select increase_seq.nextval into :new.id from dual;  关于dual表可以参看:http://wujay.iteye.com/blog/1836847

end; 

根据使用的工具,可能需要增加“/”来执行PL/SQL块。

测试:

insert into tuser(name,password,birthday) values('wujay','123456',null);

commit;

select * from tuser;

        ID NAME                 PASSWORD             BIRTHDAY

---------- -------------------- -------------------- --------------

         1 wujay                123456

修改表:

 alter table tuser rename column id to pk_tuser;

修改trigger:

 

转:http://www.cnblogs.com/linjiqin/archive/2012/02/01/2335035.html

五、oracle 表的管理

一、表名和列名的命名规则
1)、必须以字母开头
2)、长度不能超过30个字符
3)、不能使用oracle的保留字
4)、只能使用如下字符 a-z,a-z,0-9,$,#等

 

二、数据类型
1)、字符类
char 长度固定,最多容纳2000个字符。
例子:char(10) ‘小韩’前四个字符放‘小韩’,后添6个空格补全,如‘小韩      ’
varchar2(20) 长度可变,最多容纳4000个字符。
例子:varchar2(10) ‘小韩’ oracle分配四个字符。这样可以节省空间。
clob(character large object) 字符型大对象,最多容纳4g
char 查询的速度极快浪费空间,适合查询比较频繁的数据字段。
varchar 节省空间
2)、数字型
number范围-10的38次方到10的38次方,可以表示整数,也可以表示小数
number(5,2)表示一位小数有5位有效数,2位小数;范围:-999.99 到999.99
number(5)表示一个5位整数;范围99999到-99999
3)、日期类型
date 包含年月日和时分秒 oracle默认格式1-1月-1999
timestamp 这是oracle9i对date数据类型的扩展。可以精确到毫秒。
4)、图片
blob 二进制数据,可以存放图片/声音4g;一般来讲,在真实项目中是不会把图片和声音真的往数据库里存放,一般存放图片、视频的路径,如果安全需要比较高的话,则放入数据库。

 

三、怎样创建表

--创建表
--学生表
create table student (
   xh number(4), --学号
   xm varchar2(20), --姓名
   sex char(2), --性别
   birthday date, --出生日期
   sal number(7,2) --奖学金
);

--班级表
create table class(
  classid number(2),
  cname varchar2(40)
);

      

--修改表
--添加一个字段
sql>alter table student add (classid number(2));
--修改一个字段的长度
sql>alter table student modify (xm varchar2(30));
--修改字段的类型或是名字(不能有数据) 不建议做
sql>alter table student modify (xm char(30));
--删除一个字段 不建议做(删了之后,顺序就变了。加就没问题,应该是加在后面)
sql>alter table student drop column sal;
--修改表的名字 很少有这种需求
sql>rename student to stu;

          
--删除表
sql>drop table student;

           

--添加数据
--所有字段都插入数据
insert into student values ('a001', '张三', '男', '01-5 月-05', 10);
--oracle中默认的日期格式‘dd-mon-yy’ dd 天 mon 月份 yy 2位的年 ‘09-6 月-99’ 1999年6月9日
--修改日期的默认格式(临时修改,数据库重启后仍为默认;如要修改需要修改注册表)
alter session set nls_date_format ='yyyy-mm-dd';
--修改后,可以用我们熟悉的格式添加日期类型:
insert into student values ('a002', 'mike', '男', '1905-05-06', 10);
--插入部分字段
insert into student(xh, xm, sex) values ('a003', 'john', '女');
--插入空值
insert into student(xh, xm, sex, birthday) values ('a004', 'martin', '男', null);
--问题来了,如果你要查询student表里birthday为null的记录,怎么写sql呢?
--错误写法:select * from student where birthday = null;
--正确写法:select * from student where birthday is null;
--如果要查询birthday不为null,则应该这样写:
select * from student where birthday is not null;

         

--修改数据
--修改一个字段
update student set sex = '女' where xh = 'a001';
--修改多个字段
update student set sex = '男', birthday = '1984-04-01' where xh = 'a001';
--修改含有null值的数据
不要用 = null 而是用 is null;
select * from student where birthday is null;

        

--删除数据
delete from student; --删除所有记录,表结构还在,写日志,可以恢复的,速度慢。
--delete的数据可以恢复。
savepoint a; --创建保存点
delete from student;
rollback to a; --恢复到保存点
一个有经验的dba,在确保完成无误的情况下要定期创建还原点。

drop table student; --删除表的结构和数据;
delete from student where xh = 'a001'; --删除一条记录;
truncate table student; --删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快。

分享到:
评论

相关推荐

    powerdesigner创建oracle_数据库表,设置表主键列为自动增长

    ### PowerDesigner 创建 Oracle 数据库表并设置主键自动增长 #### 一、PowerDesigner与Oracle数据库集成概述 PowerDesigner是一款强大的数据库设计工具,它能够帮助开发者进行数据建模、概念设计以及物理数据库的...

    Oracle创建主键自增表(sql语句实现)及触发器应用

    在Oracle数据库中,创建主键自增表是一项常见的任务,这有助于确保每个新插入的记录都有一个唯一的标识符。下面将详细讲解如何通过SQL语句实现这一功能,并结合触发器的应用来自动增加主键。 首先,我们创建一个...

    Oracle中创建表,创建序列,创建自增字段,添加注释, 添加记录,添加触发器,提交

    Oracle 中创建表、序列、自增字段、添加注释、添加记录、添加触发器、提交的知识点总结 Oracle 中创建表是指在 Oracle 数据库中创建一个新的表结构,以存储特定的数据。在创建表时,需要指定表的名称、字段名称、...

    oracle创建表创建唯一索引

    以下将详细介绍如何创建学员信息表,创建唯一索引,以及如何修改表来添加主键和检查约束。 首先,我们来理解"创建学员信息表"。在Oracle中,我们可以使用`CREATE TABLE`语句来创建新的表。一个典型的学员信息表可能...

    oracle设置主键自动增长

    #### 二、创建表与自增主键 ##### 1. 创建表 首先,我们需要创建一张表。这里以 `example` 表为例,该表包含四个字段:`ID`(作为主键)、`NAME`、`PHONE` 和 `ADDRESS`。 ```sql CREATE TABLE example ( ID ...

    Oracle 创建主键自增表示例代码

    在Oracle数据库中,创建具有自增主键的表通常涉及到序列(Sequences)和触发器(Triggers)的使用。序列是一种特殊的数据库对象,用于生成唯一的整数序列,而触发器则是在特定数据库操作(如INSERT)发生时自动执行...

    oracle中如何实现ID自增

    在Oracle数据库中,实现ID自增的一种常见方法是通过结合使用序列(Sequence)和触发器(Trigger)。这种方法非常实用,特别是在需要为表中的记录自动生成唯一标识符的情况下。 ##### 创建序列(Sequence) 首先,...

    使用ODI处理没有主键的表全攻略

    在数据集成和ETL(提取、转换、加载)过程中,Oracle Data Integrator (ODI) 是一个强大的工具,但在处理没有主键的表时,ODI面临一些挑战。主键是数据库中用于唯一标识记录的关键字段,但在某些业务系统中,如...

    Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍

    Oracle 创建自增字段方法-ORACLE SEQUENCE 的简单介绍 Oracle SEQUENCE 是一种特殊的数据库对象,用于生成一系列唯一的数值,通常用于主键或其他需要唯一标识的字段。下面将详细介绍 Oracle 创建自增字段方法-...

    oracle自增序列

    在数据库应用中,序列是一种常用的数据对象,它能够自动产生唯一的数值,常用于实现表中的主键自增功能。Oracle数据库提供了强大的序列管理功能,可以方便地创建、管理和使用序列。本文将详细介绍如何在Oracle数据库...

    oracle迁移mysql自增序列问题

    在描述中,我们看到一个具体的例子,首先创建了一个名为`test`的MySQL表,包含两个字段:`id`(无符号整型,非空,主键)和`username`(可变长度字符串)。接着,填充了一些预设的数据,并尝试将`id`字段改为自动...

    MySql创建带解释的表及给表和字段加注释的实现代码

    gid INT PRIMARY KEY AUTO_INCREMENT COMMENT '设置主键自增', gname VARCHAR(200) COMMENT '列注释' ) COMMENT='\u8868\u6ce8\u91ca'; 2 修改现有列,加上解释 alter table test_data modify column test_desc ...

    Oracle创建自增字段sequence

    在Oracle数据库中,由于没有像SQL Server那样内置的自增字段功能,我们通常需要通过创建序列(SEQUENCE)和触发器(TRIGGER)来模拟这一效果。以下将详细讲解如何在Oracle中创建自增字段sequence,并讨论其相关知识...

    oracle向达梦数据库迁移

    这一步涉及复制Oracle数据库中的表结构,包括表名、字段、数据类型、主键、外键、唯一性约束、非空约束等,并在DM8中重建。同时,迁移索引以保持查询性能,以及字段的注释和序列,用于自增字段。 四、删除键,约束...

    Oracle的表结构转成Mysql的表结构

    ### Oracle的表结构转成MySQL的表结构 #### 功能概述 本文介绍了一种将Oracle数据库中的表结构转换为MySQL数据库表结构的方法。通过编写一个PL/SQL函数`fnc_table_to_mysql`来实现这一目标。该函数可以接受四个参数...

    表结构和数据

    总结来说,"表结构和数据"这一主题涵盖了创建和管理数据库表、插入和查询数据、以及使用Oracle提供的各种高级特性来实现高效、安全的数据存储和访问。熟悉这些概念和技能对于任何IT专业人士来说都是至关重要的,特别...

    oracle中添加删除主键的方法

    在Oracle中,创建自增主键的一种常见方法是结合序列和触发器。首先创建一个序列,然后在插入新行时,由触发器自动调用该序列获取新的值,赋给主键字段。 关于并发控制,Oracle数据库使用行级锁来保证多用户环境下对...

    oracle笔记 (创建、更改、删除[table,constraint,index,view,sequence])

    在Oracle数据库管理中,创建、更改和删除是数据库对象管理的核心操作。这篇笔记主要涵盖了创建、更改和删除四种常见的数据库对象:表(table)、约束(constraint)、索引(index)和视图(view),以及序列...

    数据库开发 Oracle数据库 SQL开发教程 第13章 创建和维护表(共37页).pdf

    Oracle数据库是世界上最广泛使用的数据库系统之一,...通过本教程的学习,读者将能够全面理解和掌握Oracle数据库中表的创建、修改、删除以及相关数据类型的使用,为进一步的SQL查询、数据库设计和管理打下坚实的基础。

    批量修改Oracle序列值的存储过程

    在Oracle数据库中,序列(Sequences)是一种自动递增或递减的数字生成器,常用于主键生成或者自增字段。批量修改Oracle序列值的需求可能出现在数据迁移、恢复或测试环境中,确保序列与实际数据匹配。这篇博客分享的...

Global site tag (gtag.js) - Google Analytics