您的位置:首页 > 数据库

常用SQL语句收藏 <二>

2015-08-28 10:03 597 查看

创建下表

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_name
INFORMIX: 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_class
insert 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 ON
set QUOTED_IDENTIFIER ON
go
CREATE PROCEDURE [dbo].[get_avage_age]
-- Add the parameters for the stored procedure here
@class_name nchar(10),
@CheckDate [datetime]
AS
BEGIN
-- 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 here
END


执行:
USE [gaotest]
GO

DECLARE	@return_value int

EXEC	@return_value = [dbo].[get_avage_age]
@class_name = 'gaosan',
@CheckDate = '2009-01-01'

SELECT	'Return Value' = @return_value
GO
删除存储过程:
Drop procedure get_avage_age;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: