uTools-Manuals/docs/sql/AUTO INCREMENT 字段.html
2019-05-07 10:15:08 +08:00

5 lines
5.2 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="m-bg">
<h1>SQL AUTO INCREMENT 字段</h1>
<p class="intro">Auto-increment 会在新记录插入表中时生成一个唯一的数字。</p> <h2>AUTO INCREMENT 字段</h2> <p>我们通常希望在每次插入新记录时,自动地创建主键字段的值。</p> <p>我们可以在表中创建一个 auto-increment 字段。</p> <h2>用于 MySQL 的语法</h2> <p>下面的 SQL 语句把 "Persons" 表中的 "ID" 列定义为 auto-increment 主键字段:</p> <div class="code notranslate"><pre><code class="language-sql"><div> CREATE TABLE Persons<br/> (<br/> ID int NOT NULL AUTO_INCREMENT,<br/> LastName varchar(255) NOT NULL,<br/> FirstName varchar(255),<br/> Address varchar(255),<br/> City varchar(255),<br/> PRIMARY KEY (ID)<br/> )</div></code></pre></div> <p>MySQL 使用 AUTO_INCREMENT 关键字来执行 auto-increment 任务。</p> <p>默认地AUTO_INCREMENT 的开始值是 1每条新记录递增 1。</p> <p>要让 AUTO_INCREMENT 序列以其他的值起始,请使用下面的 SQL 语法:</p> <div class="code notranslate"><pre><code class="language-sql"><div> ALTER TABLE Persons AUTO_INCREMENT=100</div></code></pre></div> <p>要在 "Persons" 表中插入新记录,我们不必为 "ID" 列规定值(会自动添加一个唯一的值):</p> <div class="code notranslate"><pre><code class="language-sql"><div> INSERT INTO Persons (FirstName,LastName)<br/> VALUES ('Lars','Monsen')</div></code></pre></div> <p>上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"ID" 列会被赋予一个唯一的值。"FirstName" 列会被设置为 "Lars""LastName" 列会被设置为 "Monsen"。</p> <h2>用于 SQL Server 的语法</h2> <p>下面的 SQL 语句把 "Persons" 表中的 "ID" 列定义为 auto-increment 主键字段:</p> <div class="code notranslate"><pre><code class="language-sql"><div> CREATE TABLE Persons<br/> (<br/> ID int IDENTITY(1,1) PRIMARY KEY,<br/> LastName varchar(255) NOT NULL,<br/> FirstName varchar(255),<br/> Address varchar(255),<br/> City varchar(255)<br/> )</div></code></pre></div> <p>MS SQL Server 使用 IDENTITY 关键字来执行 auto-increment 任务。</p> <p>在上面的实例中IDENTITY 的开始值是 1每条新记录递增 1。</p> <p><strong>提示:</strong>要规定 "ID" 列以 10 起始且递增 5请把 identity 改为 IDENTITY(10,5)。</p> <p>要在 "Persons" 表中插入新记录,我们不必为 "ID" 列规定值(会自动添加一个唯一的值):</p> <div class="code notranslate"><pre><code class="language-sql"><div> INSERT INTO Persons (FirstName,LastName)<br/> VALUES ('Lars','Monsen')</div></code></pre></div> <p>上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"ID" 列会被赋予一个唯一的值。"FirstName" 列会被设置为 "Lars""LastName" 列会被设置为 "Monsen"。</p> <h2>用于 Access 的语法</h2> <p>下面的 SQL 语句把 "Persons" 表中的 "ID" 列定义为 auto-increment 主键字段:</p> <div class="code notranslate"><pre><code class="language-sql"><div> CREATE TABLE Persons<br/> (<br/> ID Integer PRIMARY KEY AUTOINCREMENT,<br/> LastName varchar(255) NOT NULL,<br/> FirstName varchar(255),<br/> Address varchar(255),<br/> City varchar(255)<br/> )</div></code></pre></div> <p>MS Access 使用 AUTOINCREMENT 关键字来执行 auto-increment 任务。</p> <p>默认地AUTOINCREMENT 的开始值是 1每条新记录递增 1。</p> <p><strong>提示:</strong>要规定 "ID" 列以 10 起始且递增 5请把 autoincrement 改为 AUTOINCREMENT(10,5)。</p> <p>要在 "Persons" 表中插入新记录,我们不必为 "ID" 列规定值(会自动添加一个唯一的值):</p> <div class="code notranslate"><pre><code class="language-sql"><div> INSERT INTO Persons (FirstName,LastName)<br/> VALUES ('Lars','Monsen')</div></code></pre></div> <p>上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"ID" 列会被赋予一个唯一的值。"FirstName" 列会被设置为 "Lars""LastName" 列会被设置为 "Monsen"。</p> <h2>语法 for Oracle</h2> <p>在 Oracle 中,代码稍微复杂一点。</p> <p>您必须通过 sequence 对象(该对象生成数字序列)创建 auto-increment 字段。</p> <p>请使用下面的 CREATE SEQUENCE 语法:</p> <div class="code notranslate"><pre><code class="language-sql"><div> CREATE SEQUENCE seq_person<br/> MINVALUE 1<br/> START WITH 1<br/> INCREMENT BY 1<br/> CACHE 10</div></code></pre></div> <p>上面的代码创建一个名为 seq_person 的 sequence 对象,它以 1 起始且以 1 递增。该对象缓存 10 个值以提高性能。cache 选项规定了为了提高访问速度要存储多少个序列值。</p> <p>要在 "Persons" 表中插入新记录,我们必须使用 nextval 函数(该函数从 seq_person 序列中取回下一个值):</p> <div class="code notranslate"><pre><code class="language-sql"><div> INSERT INTO Persons (ID,FirstName,LastName)<br/> VALUES (seq_person.nextval,'Lars','Monsen')</div></code></pre></div> <p>上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"ID" 列会被赋值为来自 seq_person 序列的下一个数字。"FirstName"列 会被设置为 "Lars""LastName" 列会被设置为 "Monsen"。</p> <br/><div class="text-center padding-10 margin-t-5">
</div>
</div>