常用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;
相关文章推荐
- mysql数据库的编译安装
- 象行中国2015 Let's Postgres
- jndi连接数据库
- SQL Server设置主键自增长列
- mysql多表及联合查询
- 初学Oracle UNPIVOT,PIVOT,WMSYS.WM_CONCAT三个函数
- sql
- sql关系型和no-sql非关系型数据库区别
- MySQL添加用户、删除用户与授权
- Mysql压缩包安装到windows&& 卸载命令(转)
- 数据库的事务隔离级别
- mysql随笔
- [OpenStack]Mysql中空用户名的问题
- MySQL的timeout那点事
- 第七篇 SQL Server安全跨数据库所有权链接
- sqlserver cte递归向上统计
- 将普通sql查询的将结果集转换指定的对象,然后对象存在list中并返回
- 数据库中存储过程与自定义函数之间的区别
- plsql
- t-sql