sql 高级 (五)(create index(创建索引) drop)

SQL create index 语句

create  index语句用于在表中创建索引。

在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

用户无法看到索引,它们只能被用来加速搜索/查询。

更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。

理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

允许使用重复的值:

create index  index_name

ON table_name (column_name)

SQL create unique index 语法

在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。

create unique index index_name

ON table_name (column_name)

create index 实例

create index PersonIndex

ON Person (LastName)

以降序索引某个列中的值,添加保留字 DESC:

create index PersonIndex

ON Person (LastName DESC)

为多个列添加索引

create index PersonIndex

ON Person (LastName, FirstName)

SQL 撤销索引、表以及数据库

SQL   drop   index 语句

用于 Microsoft SQLJet (以及 Microsoft Access) 的语法:

drop   index   index_name ON table_name

用于 MS SQL Server 的语法:

drop   index   table_name.index_name

用于 IBM DB2 和 Oracle 语法:

drop   index   index_name

用于 MySQL 的语法:

alter   table   table_name   drop   index   index_name

SQL   truncate  table语句

除去表内的数据,但并不删除表本身

truncate   table  表名称

SQL ALTER TABLE 语句

alter  table语句用于在已有的表中添加、修改或删除列。

在表中添加列

alter table table_name

ADD column_name datatype

删除表中的列

alter table table_name

drop column column_name

注释:某些数据库系统不允许这种在数据库表中删除列的方式 (DROP COLUMN column_name)。

改变表中列的数据类型

alter table table_name

alter column column_name datatype

auto-increment

    Auto-increment 会在新记录插入表中时生成一个唯一的数字。

在每次插入新记录时,自动地创建主键字段的值。

MySQL 的语法

CREATE TABLE Persons

(

P_Id int not null auto_increment,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

 primary key(P_Id)

)

MySQL 使用 AUTO_INCREMENT 关键字来执行 auto-increment 任务。

默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。

        要让 auto_increment 序列以其他的值起始

alter table Persons auto_increment=100

 SQL Server 的语法

CREATE TABLE Persons

(

P_Id int primary key identity,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

MS SQL 使用 IDENTITY 关键字来执行 auto-increment 任务。

默认地,IDENTITY 的开始值是 1,每条新记录递增 1。

要规定 "P_Id" 列以 20 起始且递增 10,请把 identity 改为 identity(20,10)

要在 "Persons" 表中插入新记录,我们不必为 "P_Id" 列规定值(会自动添加一个唯一的值):

INSERT INTO Persons (FirstName,LastName)

VALUES (‘Bill‘,‘Gates‘)

 Access 的语法

CREATE TABLE Persons

(

P_Id int primary autoincrement,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

MS Access 使用 AUTOINCREMENT 关键字来执行 auto-increment 任务。

默认地,AUTOINCREMENT 的开始值是 1,每条新记录递增 1。

要规定 "P_Id" 列以 20 起始且递增 10,请把 autoincrement 改为 autoincrement(20,10)

Oracle 的语法

        必须通过 sequence 对创建 auto-increment 字段(该对象生成数字序列)。

请使用下面的 create sequence 语法:

create sequence seq_person

minvalue 1

start with 1

increment by 1

cache 10

上面的代码创建名为 seq_person 的序列对象,它以 1 起始且以 1 递增。该对象缓存 10 个值以提高性能。

cache 选项规定了为了提高访问速度要存储多少个序列值。

要在 "Persons" 表中插入新记录,我们必须使用 nextval 函数(该函数从 seq_person 序列中取回下一个值):

insert into Persons (P_Id,FirstName,LastName)

values (seq_person.nextval,‘Lars‘,‘Monsen‘)

上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"P_Id" 的赋值是来自 seq_person 序列的下一个数字。"FirstName" 会被设置为 "Bill","LastName" 列会被设置为 "Gates"。

时间: 2024-10-23 15:23:51

sql 高级 (五)(create index(创建索引) drop)的相关文章

SQL Server 查询性能优化——创建索引原则(二)

三:索引的建立原则 一般来说,建立索引要看数据使用的场景,换句话来说哪些访问数据的SQL语句是常用的,而这些语句是否因为缺少索引(也有可能是索引过多)变的效率低下.但绝不是所有的SQL语句都要建立索引,如果所有的SQL语句都建立索引,那么可能导致建立过多的索引. 我碰到过每秒钟新增记录超过千条的案例,虽然该数据表仅有聚集索引,但因为已存在的键值字段的值和新增数据键值字段的值并不是按顺序递增,每次新增记录时,肯定造成整体数据行的重新排列.在移掉聚集索引后,性能约提升20%.也曾经碰到过一个数据表上

SQL Server 查询性能优化——创建索引原则(一)

索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好.索引建少了,用WHERE子句找数据效率低,不利于查找数据.索引建多了,不利于新增.修改和删除等操作,因为做这些操作时,SQL SERVER除了要更新数据表本身,还要连带地立即更新所有的相关索引,而且过多的索引也会浪费硬盘空间.因此要建得恰到好处,这就需要经验了. 一:索引的基本目的 索引的基

FOREIGN KEY 外键约束; UNIQUE和PRIMARY KEY 主键约束、CREATE INDEX建立索引的使用

1)foreign key 是个约束,意思是说如果你给A字段设置了外键约束,以后你要往A字段插入数据,这个数据一定是要在foreign key 后面跟的那个字段中存在的值.这个的意义就是约束了数据的完整性,不会插入错误的数据. 修改添加t_topic外键约束: ALTER TABLE t_topic ADD CONSTRAINT fk_userTopics FOREIGN KEY (user_id) REFERENCES t_users(id) 删除表t_topic外键: ALTER TABLE

转换sql文件的create table语句为drop table语句

1 package com.csii.pweb.query.action; 2 3 import java.io.BufferedReader; 4 import java.io.FileNotFoundException; 5 import java.io.FileReader; 6 import java.io.IOException; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 11 public class Ja

SQL——CREATE、ALTER、DROP和VIEW

CREATE DATABASE - 创建新数据库    语法:CREATE DATABASE database_nameALTER DATABASE - 修改数据库    CREATE TABLE - 创建新表    语法:CREATE TABLE 表名称          (            列名称1 数据类型,            列名称2 数据类型,            列名称3 数据类型,            ....          )    部分数据类型:       

oracle sql 高级编程 历史笔记整理

20130909 周一 oracle sql 开发指南 第7章 高级查询 1.层次化查询select level,ttt.*,sys_connect_by_path(ttt.col1,',') from ttt start with .. Connect by prior -因为先建立树,再进行where过滤的.在where中过滤和在cooonect by中过滤是不一样的. 2.rollup cube高级查询 select grouping(col1) .. From ttt group by

创建索引和主键

一.      主建的创建与删除 1.       创建表时同时创建主键(加primary key) Create Table Book ( ID int identity(1,1) primary key, Name nvarchar(50) not null, StudentID int not null ) 2.       用SQL语句单独创建主键 1)创建主键同时会自动在该主键上创建聚集索引 语句:alter table [表名] add constraint PK_Book_ID p

MS SQL Server:分区表、分区索引 详解

1. 分区表简介使用分区表的主要目的,是为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性. ?        大型表:数据量巨大的表.?        访问模式:因目的不同,需访问的不同的数据行集,每种目的的访问可以称之为一种访问模式. 分区一方面可以将数据分为更小.更易管理的部分,为提高性能起到一定的作用:另一方面,对于如果具有多个CPU的系统,分区可以是对表的操作通过并行的方式进行,这对于提升性能是非常有帮助的. 注意:只能在 SQL Server Enterprise Editi

SQLServer 语句-创建索引

语法:CREATE [索引类型] INDEX 索引名称ON 表名(列名)WITH FILLFACTOR = 填充因子值0~100GO /*实例*/USE 库名GOIF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_TEST_TNAME')--检测是否已经存在IX_TEST_TNAME索引DROP INDEX TEST.IX_TEST_TNAME--如果存在则删除 --创建索引CREATE NONCLUSTERED INDEX IX_TEST_TN

MySQL创建索引、删除索引和查看查索引

1.索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍. 例如,有3个未索引的表t1.t2.t3,分别只包含列c1.c2.c3,每个表分别含有1000行数据组成,指为1-1000的数值,查找对应值相等行的查询如下所示. SELECT c1,c2,c3 FROM t1,t2,t3 WHERE c1=c2 AND c1=c3 此查询结果应该为1000行,每行包含3个相