常用SQL語句收藏

創建下表

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;




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章