常用SQL語句收藏 <二>,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_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;
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。