常用SQL语句收藏 <二>

来源:互联网 发布:软件运营方案 编辑:程序博客网 时间:2024/06/05 10:25

创建下表

create table dbo.class_bak(Name  nvarchar(25) NOT NULL DEFAULT 'abc' primary key,studentnumber int DEFAULT 0);insert into .class_bak (studentnumber) values(23)  :则插入的值col1的默认值就是abc.复制一个表的结构到一个新表.select * into class_bak from class where 1=2  :复制一个表为另一个表,如果不导数据,就将条件置为1=2即可.显示某表的建表语句:ORACLE: desc table_nameINFORMIX: dbschmea SQLSERVER:

修改:

Alter table class_bak add  monitor varchar(10)  ;:增加一列Alter table class_bak alter COLUMN montior nvarchar(10) :修改一列Alter table class_bak drop COLUMN monitor ;:删除一列删除表: Drop table class_bak

创建索引

用于在查询数据时,加快查询速度,create  UNIQUE  index idx1_class on class(class) 在字段class上创建唯一索引,即插入时,该字段不允许重复.名称为idx_classinsert into class (class,teacher) values('gaoer','lisi'); 此插入语句执行第二次将会失败.删除索引: drop index idx1_class on class索引的重新生成,重新组织:当一个表经过多次修改,插入,删除后,需要重建索引,以便以后可提高查询效率.但重建的过程是较为消耗资源的.在SCP等业务繁忙的机器上,一定要选择合适的时间段才能重建索引.ALTER INDEX idx_class on class REBUILD重新生成索引将会删除并重新创建索引。这将根据指定的或现有的填充因子设置压缩页来删除碎片、回收磁盘空间,然后对连续页中的索引行重新排序。 ALTER INDEX idx_class on class REORGANIZE 使用最少系统资源重新组织索引。 


索引技巧和调优:


查询语句中,对于字符串型的字段,一定要用单引号括起来,对于整型不要用引号,对于日期型的字段,目前暂无定论,是否会对性能有影响.可进一步跟踪.
尽量不要用in子句,那样的话无法使用索引,导致查询效率低下,可以改用UNION来连接多个查询.这样可以提高效率.
多个查询条件,应该将过滤多的带索引的字段的条件放在前面.
查询条件中尽量用等号,不要用大于,小于等,那样可能会用不上索引.
在全部查询出所有结果时,要求带上条件1=1,可以避免使用索引,提高效率.

创建存储过程

set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoCREATE PROCEDURE [dbo].[get_avage_age] -- Add the parameters for the stored procedure here@class_name nchar(10),@CheckDate [datetime]ASBEGIN-- SET NOCOUNT ON added to prevent extra result sets from-- interfering with SELECT statements.SET NOCOUNT ON;select avg(age) from student where class=@class_name and born<@CheckDate    -- Insert statements for procedure hereEND

执行:
USE [gaotest]GODECLARE@return_value intEXEC@return_value = [dbo].[get_avage_age]@class_name = 'gaosan',@CheckDate = '2009-01-01'SELECT'Return Value' = @return_valueGO删除存储过程:Drop procedure get_avage_age;




0 0