- 浏览: 1277882 次
- 性别:
- 来自: 常州
文章分类
- 全部博客 (499)
- java (101)
- linux (82)
- mysql (30)
- javascript (45)
- Oracle (12)
- ext (14)
- 虚拟机 (1)
- 搜索引擎 (2)
- struts2 (11)
- 设计模式 (9)
- nginx (17)
- tomcat (12)
- 随想 (10)
- spring (18)
- svn (1)
- flash (3)
- UML (1)
- 数据结构 (7)
- 算法 (2)
- 网摘 (9)
- 数据库 (15)
- ibatis (3)
- jquery (31)
- lucene (1)
- hibernate (14)
- Myeclipse (4)
- 线程 (7)
- jbpm (4)
- 重构 (1)
- mantis (3)
- MediaWiki (4)
- ExtMail (1)
- MDaemon (1)
- egit (1)
- dwr (7)
- sitemesh (2)
- mybatis (1)
- ico (1)
- hadoop (5)
- jsoup (1)
- urlrewrite (2)
- jstl (1)
- spring3 (2)
- aop (2)
- 定时器 (1)
- Quartz (2)
- apache (1)
- php (1)
- security (1)
- iptables (2)
- QQ (1)
- mysqldump (1)
- vim (1)
- memcached (4)
- jad (1)
- 微博 (1)
- html5 (1)
- css3 (1)
- httpclient (10)
- google (1)
- shortUrl (1)
- json (2)
- virtualBox (1)
- mantisBT (2)
- htmlunit (1)
- selenium (2)
- mail (1)
- 正则表达式 (4)
- html (3)
- css (2)
- jatoolsPrinter (1)
- 图片处理 (1)
- hql (1)
- webservice (1)
- 分词 (3)
- 短信 (1)
- VPS (1)
- 事务 (1)
- 广告 (1)
- 画廊 (1)
- git (3)
- github (1)
- openshift (1)
- 缓存 (1)
- web (3)
- android (3)
- c3p0 (1)
- 邮箱 (1)
- memcache (2)
- windows (2)
- js (14)
- 编辑器 (1)
- 打印 (1)
- centos (5)
- boneCP (1)
- 连接池 (1)
- sql (1)
- nosql (1)
- MongoDB (1)
- 浏览器 (1)
- node (1)
- node.js (1)
- backbone.js (1)
- lazyload (1)
- Switch Off (1)
- Titanium (1)
- 网站架构 (1)
- WebDriver (1)
- APJP (1)
- 代理 (1)
- comet (1)
- kendoui (1)
- UI (2)
- 互联网 (1)
- localStorage (1)
- 记录 (1)
- 微信 (2)
- Sphinx (1)
- netty (1)
- js,mvvm,Avalon (1)
- 安卓 (1)
- Tengine (1)
- 大数据 (1)
- 手机 (1)
- paypal (1)
- SaaS (1)
- gitlab (1)
- nodejs (1)
- React (1)
- shadowsocks (0)
- vpn (0)
- 验证码 (1)
- SSL (2)
- SEO (1)
- IntelliJ (1)
- 敏捷开发 (1)
- 项目管理 (1)
- 爬虫 (1)
- 正则 (1)
- owncloud (1)
- 云存储 (1)
- ajax (1)
- pjax (1)
- jdk (1)
- zookeeper (1)
- phantomjs (1)
- ELK (1)
- springcloud (1)
- IDEA (1)
- hexo (1)
- ss (1)
- letencrypt (1)
最新评论
-
peakandyuri:
这个是有BUG的,数字小体现不出来,数字大了就不对了,但是Ja ...
java十进制转换N进制并反转换的工具类 -
ginolai:
然后是相关配置:/etc/sysconfig/iptables ...
Linux中iptables设置详细 -
bzhao:
我测试没啥区别啊!
Thread.sleep()和Thread.currentThread().sleep()区别 -
zhl549342097:
match == false
Spring Security 3.1 中功能强大的加密工具 PasswordEncoder -
hellotieye:
renzhengzhi 写道drager 写道用jsoup后解 ...
jsoup select 选择器
好吧,今天面试有道题,要各个数据库怎么建立自增长字段,顺便复习一下吧,最近面试很多数据库问题。。。
一:Oracle
Oracle中创建自增长字段,要建序列和触发器, 1.先创建序列 通过创建序列来实现 ORACLE SEQUENCE的简单介绍 在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 1、Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, CREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10; 一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL CURRVAL=返回 sequence的当前值 NEXTVAL=增加sequence的值,然后返回 sequence 值 比如: emp_sequence.CURRVAL emp_sequence.NEXTVAL 可以使用sequence的地方: - 不包含子查询、snapshot、VIEW的 SELECT 语句 - INSERT语句的子查询中 - NSERT语句的VALUES中 - UPDATE 的 SET中 可以看如下例子: INSERT INTO emp VALUES (empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20); SELECT empseq.currval FROM DUAL; 但是要注意的是: - 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。明白? - 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。 2、Alter Sequence 你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create . Alter sequence 的例子 ALTER SEQUENCE emp_sequence INCREMENT BY 10 MAXVALUE 10000 CYCLE -- 到10000后从头开始 NOCACHE ; 影响Sequence的初始化参数: SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。 可以很简单的Drop Sequence DROP SEQUENCE order_seq; 2.创建触发器 -- CREATE OR REPLACE TRIGGER USERADD BEFORE INSERT ON MEMBERRG FOR EACH ROW BEGIN emp_sequence.NEXTVAL INTO :NEW.NUM FROM DUAL; END;
但是如果数据库表已经有数据了怎么办呢?又不能重新去插数据触发触发器,这样很繁琐,怎么办?
在表中增加一个列,为自增序列,然后执行: update 表 set 自增序列=rownum; 这样就把以前的3000多万行都编号了,然后再用Sequence做序列;
OK,下来举个具体的例子好了:
一、在Oracle中的没有自动增长的数据类型,但可以使用序列(Sequence)代替。具体步骤如下: 1、 创建一个t_user的用户表: create table t_user( id number primary key, userName varchar2(15) not null unique, userPass varchar2(20) ); 2、 创建一个序列seq_user_id: create sequence seq_user_id start with 1 –从1开始 increment by 1;--每次增量为1 3、 创建一个触发器使给id 赋值: create trigger tr_user_id before insert on t_user for each row begin select seq_user_id.nextval into :new.id from dual; end; insert into t_user (userName,userPass) values('handson','handson'); insert into t_user (userName,userPass) values('admin','admin');
接下来介绍一个通用一点的做法,使用存储过程:
二、创建一个存储过程来建立自动增长字段: 1、 Oracle中执行动态SQL时要显示授权(即使该用户拥有该相关权限) grant create any sequence to scott; grant create any trigger to scott; 2、建立一个创建自增字段的存储过程 create or replace procedure pro_addIncrement(tableName in varchar2 , columnName in varchar2) as strsql varchar2(1000); begin strsql := 'create sequence seq_'||tableName||'_'||columnName||' start with 1 increment by 1'; execute immediate strsql; strsql := 'create or replace trigger tr_'||tableName||'_'||columnName||' before insert on '||tableName||' for each row begin select seq_'||tableName||'_'||columnName||'.nextval into :new.'||columnName||' from dual; end;'; execute immediate strsql; end; 2、 调用存储过程建立自增字段并测试 create table t_user( id number primary key, userName varchar2(20) not null unique, userPass varchar2(20) ); exec pro_addIncrement('t_user','id'); insert into t_user (userName,userPass) values('handson','handson'); insert into t_user (userName,userPass) values('admin','admin'); insert into t_user (userName,userPass) values('yangdongxin','pass'); insert into t_user (userName,userPass) values('java','java');
二:mysql
创建表t_user create table t_user( id int primary key auto_increment,--auto_increment表示自动增长,增量为1 userName varchar(15) not null unique, userPass varchar(20) ); insert into t_user (username,userPass) values(‘handson’,’handson’) ,(‘admin’,’admin’);
三:sql server
create table t_user( id int primary key identity(1,1), userName varchar(15) not null unique, userPass varchar(20) ) identity(begin,increment) begin:从哪一个位置开始。increment:表示每次增长的大小 insert into t_user (username,userPass) values(‘handson’,’handson’) insert into t_user (username,userPass) values(‘admin’,’admin’)
发表评论
-
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
2014-10-11 16:15 794本文随手转自:http://josh-persistence ... -
MySQL事务隔离级别详解[转]
2013-03-22 09:49 1065SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定 ... -
c3p0配置详细介绍
2013-03-05 09:57 1227官方文档 : http://www.mchange.co ... -
[转]经典的sql语句
2011-11-18 14:41 1011一、基础 1、说明:创建数据库 CREATE DATABA ... -
oracle索引介绍
2011-11-16 21:15 1212今天用oracle表连接查询感觉太慢了,想了下应该是索引 ... -
[转]数据库分页大全
2011-11-12 15:35 1096数据库分页大全 Mysql分页采用limt关键字 ... -
在pl sql developer中打印存储过程结果
2011-11-11 11:11 1542使用developer的命令窗口,输入set serverou ... -
Oracle动态sql在存储过程中出现表或视图不存在的解决方法
2011-11-10 12:14 2133CREATE OR REPLACE PROCEDURE P_t ... -
oracle创建表空间
2011-10-28 22:28 961SYS用户在CMD下以DBA身份登陆: 在CMD中打sq ... -
oracle查找于dblink远程数据库表不一致并创建补齐表及数据
2011-10-27 14:15 1664select 'create table hfmis. ... -
oracle函数相关
2011-10-27 11:03 13991.nvl oracle的nvl函数的用法 通过 ... -
待处理问题:oracle创建用户密码要加双引号,账号不需要。。。
2011-10-23 21:17 2002不知道为何,我密码并没有空格之类的却不加双引号不让创建,但是用 ... -
使用expdp/impdp远程导入导出oracle数据
2011-10-23 21:09 10242--进入sqlplus,先建立一个目录用来dump数据库 c ... -
windows 7 安装oracle几个安装失败注意点
2011-10-21 17:27 12371.因为检测只检测到windows vista而windows ... -
视图的作用
2011-10-16 00:10 660视图有以下几方面的功 ... -
MySQL之alter语句用法总结
2011-10-15 16:09 11811:删除列 ALTER TABLE 【表名字】 DROP ... -
mssql2005后基于row_number()的分页语句
2011-10-11 17:01 1076select x.id,x.name from (sel ... -
mssql与mysql区别之四:存储过程
2011-10-06 21:39 1900mssql: create procedure pro ... -
java调用sql server存储过程示例
2011-10-06 21:23 1362比如SQL Server的一个存储过程: ... -
mssql与mysql区别之三:CASE多分支语句
2011-10-06 15:12 1761mssql: select xx.id,评价=case ...
相关推荐
Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_...
本教程涵盖了SQL在三大主流数据库系统——Oracle、MySQL和SQL Server中的应用,旨在帮助学习者掌握通用的SQL知识,从而能够高效地进行数据查询、更新、插入和删除等操作。 在Oracle数据库中,SQL被广泛应用于数据的...
在SQL Server中,表结构的定义包括列、约束、存储过程等元素。通过一键生成工具,这些信息可以被整合到一个统一的文档中,方便团队成员理解和维护数据库结构。 MySQL则是一款开源、免费的数据库系统,被广泛应用在...
Oracle 到 SQL Server 跨库查询是指通过网关工具将数据从 SQL Server 数据库中抽取到 Oracle 数据库中。这个过程需要安装和配置网关软件,并进行相应的设置和配置。 一、网关软件安装 网关软件的安装是跨库查询的...
在数据库管理领域,Oracle SQL和MySQL SQL是两种广泛使用的SQL方言,它们在语法和功能上存在一定的差异。当需要将一个基于Oracle SQL的应用程序迁移到MySQL环境时,就需要进行SQL语句的转换工作。本项目提供了一个...
迁移工具版本为hgdb-migration-v4.1.4,瀚高数据库迁移工具支持源端为Oracle、MySQL、SQL Server、DB2、KingbaseV7、KingbaseV8、DM7、DM8、HIGHGO数据库,目标端为HIGHGO、PostgreSQL数据库的自动化迁移,为了能更...
在IT领域,数据库管理系统(DBMS)如Oracle、MySQL和SQL Server 2000是处理大量数据的核心工具。这些系统对于大数据对象的操作至关重要,尤其是对于存储图像、音频、视频等非结构化数据的企业级应用。本文将深入探讨...
1. 数据库结构迁移:在转换过程中,工具会分析SQL Server的表结构,包括字段名、字段类型、主键、外键、索引等,并在MySQL中创建相应的表结构。理解这些元数据的重要性在于确保目标数据库能正确地存储源数据库的数据...
汉字,繁体字查询mysql和sql server数据库汉字,繁体字查询mysql和sql server数据库汉字,繁体字查询mysql和sql server数据库汉字,繁体字查询mysql和sql server数据库
使用这个库,开发人员可以在C#项目中快速实现对MySQL、SQL Server和Oracle数据库的连接和操作,提高了开发效率。同时,开放源码的特性允许开发者根据实际需求进行定制和扩展,增强了其灵活性和适应性。
SQL(Structured Query Language)是一种用于管理和操作数据库的强大语言,它被广泛应用于ORACLE、MYSQL、SQL Server等数据库管理系统中。本资源提供了50道SQL练习题,旨在帮助用户提升SQL技能,无论你是初学者还是...
在本文中,我们将深入探讨如何使用JDBC连接Oracle、MySQL和SQLServer这三种常见的数据库。 首先,让我们详细了解一下JDBC连接Oracle数据库的过程: 1. **添加驱动**:为了与Oracle数据库通信,你需要在Java项目中...
BDB是跨数据库平台的数据库设计和自动安装工具、 支持Oracle、MS SQLServer、Access、MySQL、SQLAnyWhere、Sybase数据库。 通过BDB可以快速建立数据库模型、并随时与实体数据库进行双向同步。 同时它还可以...
- 在 SQL Server 中,ROW_NUMBER() 函数与 Oracle 中的 ROWNUM 功能类似,但它们之间存在一些关键差异。 - **ROW_NUMBER()** 可以基于特定的排序规则为每行分配一个连续的数字,这使得它在处理有序数据时更为灵活...
添加表(CREATE TABLE)、删除表(DROP TABLE)以及更改表结构(ALTER TABLE)的操作在SQL Server中也是基本操作。此外,SQL Server提供了丰富的管理工具,如SQL Server Management Studio (SSMS),使得这些任务更为...
在SQL Server中,自增字段通常通过`IDENTITY`属性实现,它会自动为新插入的行生成一个唯一的序列号。然而,在Oracle数据库系统中,没有直接对应的`IDENTITY`功能,但可以通过其他方式来模拟这个行为。这里我们将讨论...
根据给定的信息,我们可以深入探讨SQL中的多表查询技术,特别是针对Oracle、MySQL以及SQL Server数据库系统的应用。这里我们将重点放在几个关键的概念上:笛卡尔积、连接(Join)的不同类型,尤其是内连接(Inner ...
Oracle到MySQL转换工具是一款专为数据库迁移设计的实用软件,主要功能是将Oracle数据库中的数据结构和SQL语句转换成MySQL兼容的格式,方便用户在不同的数据库系统间进行数据迁移。这款工具通常适用于那些需要从...
根据提供的文件信息,本文将详细解析“骂人脏字过滤mysql_oracle_sqlserver数据库”的相关知识点,主要包括数据库设计、敏感词库构建以及过滤机制等方面。 ### 数据库设计 #### 表结构定义 根据文件中的SQL语句,...
在数据库查询中,取前 10 条数据是非常常见的操作,无论是在 mysql, sqlserver,还是 oracle 中,都是如此。在这里,我们将详细介绍在这三种数据库管理系统中如何取前 10 条数据。 首先,在 mysql 中,我们可以使用 ...