说实话oracle实在用不习惯,虽然已经使用近两年了。
可能是习惯问题吧!毕竟mysql和mssql使用的更频繁

1、oracle创建表

创建表还是比较简单的

-- oracle 创建数据库表
CREATE TABLE test_user (    id NUMBER(20,0) NOT NULL ENABLE,    name NVARCHAR2(50), mark NVARCHAR2(200),sort NUMBER(20,0)
);
## 向表中插入一条一句
insert into test_user values(1,'罗易','罗易'1);
insert into test_user values(1,'罗易','罗易'1);
insert into test_user values(1,'罗易','罗易'1);
### 切换到命令窗口查看操作过程
### 设置列宽度
SQL> col mark format a10;
SQL> col id format a10;
SQL> col name format a10;
SQL> col sortformat a10;
SQL> select * from test_user;ID NAME       MARK             SORT
---------- ---------- ---------- ----------1 罗易       罗易                11 罗易       罗易                11 罗易       罗易                1

我们连续插入几条都是同样的数据居然成功了,为了避免这种情况的发生我们要给数据库表中创建索引

2、oracle创建索引

针对上述问题我们为表创建索引。分别对id创建主键索引和对name创建唯一索引

SQL> alter table test_user add primary key(id);alter table test_user add primary key(id)ORA-02437: cannot validate (AMBASE.SYS_C0020453) - primary key violated### 因为存在主键冲突的数据了 所以先把表中数据清除了
SQL> delete test_user;3 rows deletedSQL> alter table test_user add primary key(id);Table altered SQL> create UNIQUE index un_name on test_user(name);Index created
### 再连续插入数据就不那么愉快了。。
SQL> insert into test_user values(1,'罗易','罗易',1);1 row insertedSQL> insert into test_user values(1,'罗易','罗易',1);insert into test_user values(1,'罗易','罗易',1)ORA-00001: unique constraint (AMBASE.SYS_C0020454) violatedSQL> insert into test_user values(2,'罗易2','罗易2',2);1 row insertedSQL> insert into test_user values(3,'罗易3','罗易2',2);1 row inserted
SQL> select *from test_user;ID NAME       MARK             SORT
---------- ---------- ---------- ----------1 罗易       罗易                12 罗易2      罗易2               23 罗易3      罗易2               2
  • 补充一下索引创建语法:

本段内容取自网友 【DSHORE】
方法一、使用add constraint 方法添加主键约束
alter table 表名 add constraint 主键名 primary key (列名1,列名2,…)
方法二、使用索引创建主键
(和方法一没有区别,可以将方法一理解为省略了using index)
alter table 表名 add constraint 主键名 primary key (列名1,列名2,…)
using index [index_name];
当省略using index后面的index_name时,创建主键的同时创建同名索引;当使用已有索引index_name创建主键时,注意索引列和主键列应该相同才能创建成功。
方法三、直接添加主键
alter table 表名 add primary key (列名1,列名2,…) ;
同样,创建主键的同时创建同名索引。

3、oracle创建自增长id

那么问题又来了,我每次插入数据都要算一下id太费事了,有没有简单点的办法呢?当然有啦!!!
不过有点繁琐,oracle创建自增id需要先创建序列 然后再拿到序列中的值再插入数据库
或者就是在序列的基础上创建一个触发器在插入数据前自动插入自增的id

  • 创建序列方式插入自增id
SQL>
###Oracle 序列(sequence)的创建、删除
###创建序列  自增步长为1 起始值为1
SQL> create sequence seq_test_user2  increment by 13  start with 14  nomaxvalue5  nocycle6  nocache;Sequence createdSQL> select seq_test_user.nextval from dual;NEXTVAL
----------1
###创建完成后插入数据方式
SQL>
###插入错误是因为自增的id与主键id冲突了  多执行几次至自增的序列号大于数据库的最大id即可
SQL> insert into test_user values(seq_test_user.nextval,'罗易5','罗易2',2);insert into test_user values(seq_test_user.nextval,'罗易5','罗易2',2)ORA-00001: unique constraint (AMBASE.SYS_C0020454) violatedSQL> insert into test_user values(seq_test_user.nextval,'罗易5','罗易2',2);1 row insertedSQL> insert into test_user values(seq_test_user.nextval,'罗易5','罗易2',2);insert into test_user values(seq_test_user.nextval,'罗易5','罗易2',2)
### 此处报错是因为 name违反了唯一约束
ORA-00001: unique constraint (AMBASE.UN_NAME) violatedSQL> select *From test_user;ID NAME       MARK             SORT
---------- ---------- ---------- ----------4 罗易5      罗易2               21 罗易       罗易                12 罗易2      罗易2               23 罗易3      罗易2               2
  • 完全自动生成自增id
    基于上一步骤的基础上新增一个触发器,具体请看sql过程
 SQL> CREATE or replace TRIGGER test_user_trig2      before insert on test_user3      referencing old as old new as new for each row4  declare5  begin6      select seq_test_user.nextval into :new.id from dual;7  end test_user_trig;8  /Trigger createdSQL> SQL> insert into test_user (name,mark,sort) values ('王小宝6','王小宝6',1);1 row insertedSQL> select *from test_user;ID NAME       MARK             SORT
---------- ---------- ---------- ----------4 罗易5      罗易2               21 罗易       罗易                12 罗易2      罗易2               23 罗易3      罗易2               26 王小宝6    王小宝6             1SQL> insert into test_user (name,mark,sort) values ('王小宝7','王小宝7',7);1 row insertedSQL> select *from test_user;ID NAME       MARK             SORT
---------- ---------- ---------- ----------4 罗易5      罗易2               21 罗易       罗易                12 罗易2      罗易2               23 罗易3      罗易2               26 王小宝6    王小宝6             17 王小宝7    王小宝7             76 rows selectedSQL> ###删除序列语句
SQL> drop sequence test_user;drop sequence test_userORA-02289: sequence does not existSQL> 

【oracle】oracle创建表、创建索引、创建自增id相关推荐

  1. Oracle 数据库创建表空间、创建用户指定表空间

    Oracle 数据库创建表空间.创建用户指定表空间 //创建临时表空间 create temporary tablespace user_temp tempfile 'D:\oracle\oradat ...

  2. Oracle创建表空间、创建用户以及授权

    原文地址:Oracle创建表空间.创建用户以及授权 作者:chinacoolsword Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库. 对于初学者来 ...

  3. Oracle 创建表空间,创建表、数据增删改

    Oracle 创建表空间,创建表.数据增删改 创建表空间 创建用户 用户授权 表的创建.修改与删除 创建表 数据类型 创建表的同时指定表空间 修改表 删除表 数据增删改 插入数据 修改数据 删除数据 ...

  4. 创建表的时候创建索引

    创建索引是指在某个表的一列或多列上建立一个索引,以便提高对表的访问速度.创建索引有3种方式,这3种方式分别是创建表的时候创建索引.在已经存在的表上创建索引和使用ALTER TABLE语句来创建索引.本 ...

  5. oracle12c创建表空间、创建用户、创建权限

    目录 1.基本概念 1.1.关于账号的概念 1.2.关于pdb和cdb的概念 3.创建用户 4.给用户创建权限 5.综合练习(很重要.正在写...) 6.参考资料 1.基本概念 1.1.关于账号的概念 ...

  6. MySQL 删除表数据,重置自增 id 为 0 的两个方式

    MySQL 删除表数据,重置自增 id 为 0 的两个方式: 1.truncate table table_name; truncate table `user`; 2.delete 配合 alter ...

  7. oracle创建表联合索引,Oracle创建索引的基本规则

    创建索引的基本规则 一.B-Tree索引 1. 选择索引字段的原则: 在WHERE子句中最频繁使用的字段 联接语句中的联接字段 选择高选择性的字段(如果很少的字段拥有相同值,即有很多独特值,则选择性很 ...

  8. oracle表空间更改用户,ORACLE创建表空间、创建用户、更改用户默认表空间以及授权、查看权限...

    ----创建表空间---- CREATE TABLESPACE UCITDB_data LOGGING DATAFILE '/home/app/oracle/app/oracle/oradata/UC ...

  9. Oracle 9i 数据库 创建数据库 Net 配置 创建表 SQL查询 创建存储过程 (图)

    创建数据库 用"数据库配置助手"创建数据库 创建数据库 选择 普通用途 输入名字,SID 在此我们选择专用服务器模式 典型 参数 含义 [最大并发连接用户数]文本框设置要在任意给定 ...

  10. oracle数据库迁移 增大空间,Oracle数据库迁移、创建表空间、创建数据表实例讲解-Oracle...

    数据库迁移 对于数据库迁移来说,如果源数据库与目标数据库版本一致,推荐使用Oracle导入或者pl/sql导入:如果版本不一致,则可以使用sql导入的方式. 创建表空间 create tablespa ...

最新文章

  1. (转)@ContextConfiguration注解说明
  2. Docker镜像的导入导出
  3. 8月25号王者荣耀服务器维护,8月25日体验服停机更新公告
  4. mysql忘记密码解决方法
  5. 深度学习 正则化 正则化率_何时以及如何在深度学习中使用正则化
  6. Bigtable的些许重点
  7. Hyperloop,让发布简洁高效
  8. session失效_Session的销毁方式到底有哪些?
  9. SSH dao层异常 org.hibernate.HibernateException: No Session found for current thread
  10. [HDU1754]I Hate It线段树裸题
  11. 安装无奈7和Linux,linux7安装teamViewer
  12. godot初体验,开源跨平台的神奇游戏引擎。支持python和rust,甚至推出了android端。
  13. 阿里云ECS安骑士离线修复步骤
  14. 计算机基础内容相关的论文,有关于计算机基础论文范文
  15. 解决运行uiautomatorviewer时报错-Djava.ext.dirs=/usr/local/android-sdk-
  16. 一文说明前端和后端的区别、职业发展以及就业前景!
  17. SwiftUI macOS 轻松搭建音乐Radio类App界面(教程含源码)
  18. 01 双重差分与三重差分分析法
  19. 任意数据库,一样快!——云和恩墨全新通用数据库一体机 zData X 上市
  20. vue自定封装的边框组件

热门文章

  1. 交互设计课程1.0课程介绍
  2. #Linux#进程间通信# 管道(pipe)-匿名管道pipe
  3. 齐供应TAPPI四碘化5,10,15,20-四(对-N,N,N三甲基苯胺基)卟啉敏化的钛酸盐纳米管(TAPPI-TNTs)高效的可见光催化剂岳
  4. 使用C语言编写三子棋小游戏
  5. 【思考一】Android程序员想做手机游戏开发
  6. 2021-07-14 深度学习基础与实践(二)
  7. idea下载插件方法
  8. 某程序员哀叹:做码农真的很悲哀,有的35岁就没人要了
  9. 简单入门排序算法(直接插入排序,折半插入排序,希尔排序,冒泡排序,堆排序,归并排序)
  10. 一文搞懂TCP/IP,入门计算机网络必看!