澳门金沙vip 14

常用的SQL语句

基本的sql语句

  1. 创建数据库:CREATE DATABASE
    database-name
  2. 删除数据库:drop database
    dbname
  3. 创建表:create table
    tabname(字段属性)
  4. 删除表:drop table tabname
  5. 增加列:Alter table tabname add
    column col type
  6. 添加/删除主键:Alter table taname
    add/drop(删除) primary key(列名)
  7. 创建索引:create [unique] index
    idxname on tabname(col….)
  8. 创建视图:create view viewname as
    select statement
  9. 查询:select * from table1 where
    范围
  10. 插入:insert into
    table1(field1,field2) values(value1,value2)
  11. 删除:delete from table where
    范围
  12.  更新:update table1 set
    field1=value1 where 范围
  13.  模糊查找:select * from table1
    where field1 like ’%value%’
  14. 排序:select * from table order by
    field1,field2 [desc]
  15. 总数统计:select count(*) from
    table
  16.  求和:select sum(field) as sumvalue
    from table
  17. 平均:select avg(field) as avgvalue
    from table
  18. 最大最小:select max/min(field) as
    value from table
  19.  查询范围值: select * from table1
    where time between time1 and time2
  20. UNION 运算符:请转表的关联查询
  21. EXCEPT
    运算符:请转表的关联查询
  22. INTERSECT
    运算符:请转表的关联查询
  23. 外连接:请转表的关联查询
  24. 分组:select age,SUM(age) from
    BaseTable GROUP BY age
  25. 复制表(只复制表结构): select * into
    b from a where 1<>1
  26. 复制数据: insert into b(列名) select
    列名 from b;

转自http://www.cnblogs.com/0351jiazhuang/p/4530366.html

基础

索引

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

索引分为聚簇索引和非聚簇索引两种,聚簇索引
是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。

SQL是(Structured Query
Language)结构化查询语言的简称,下面赵一鸣随笔博客从基础知识、判断对象和应用技巧等方面,介绍了SQL的应用方法。

创建数据库

触发器

触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。

触发器分为after触发器,insert触发器, update触发器, delete触发器。

创建触发器语法:

create trigger tgr_name

on table_name

for  触发器类型

AS

数据库执行的语句

基础

创建之前判断该数据库是否存在
if exists (select * from sysdatabases where name=’databaseName’)
drop database databaseName
go
Create DATABASE database-name

触发器实例

在ado数据库创建BaseTable的插入触发器:

在向表BaseTable插入一条记录时,同时触发器会向Table表也插入一条数据作为记录触发器执行成功。

澳门金沙vip 1澳门金沙vip 2

ALTER TRIGGER [dbo].[tgr_name]

   ON  [dbo].[BaseTable]

   for INSERT

AS

BEGIN

    declare @name varchar(20),@id int;

    select @id = id, @name = name from inserted;

    set @name = @name + convert(varchar, @id);

    insert into [Ado].[dbo].[Table] values(@name, 18 + @id);



END

View Code

创建数据库

删除数据库

储存过程

存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。

储存过程的优点:存储过程允许标准组件式编程,存储过程能够实现较快的执行速度,存储过程减轻网络流量,存储过程可被作为一种安全机制来充分利用。

创建之前判断该数据库是否存在

drop database dbname

系统储存过程:

系统存储过程是系统创建的存储过程,系统存储过程主要存储在master数据库中,以“sp”下划线开头的存储过程,有些也会在创建新数据库的时候自动创建在当前数据库。常用的系统储存过程有:

exec sp_databases; –查看数据库
exec sp_tables;       
–查看表
exec sp_columns
student;–查看列
exec sp_helpIndex
student;–查看索引
exec sp_helpConstraint
student;–约束
exec sp_stored_procedures;
exec sp_helptext
‘sp_stored_澳门金沙vip,procedures’;–查看存储过程创建、定义语句
exec sp_rename student,
stuInfo;–修改表、索引、列的名称
exec sp_renamedb myTempDB,
myDB;–更改数据库名称
exec sp_defaultdb ‘master’,
‘myDB’;–更改登录名的默认数据库
exec
sp_helpdb;–数据库帮助,查询数据库信息

储存过程的示例调用:

重命名表的名字:exec sp_rename 'tablename', tablename1;

if exists (select * from sysdatabases where name=’databaseName’)

备份sql server

用户自定义储存过程

创建储存过程的语法:

Create proc|procedure proc_name

(

   @参数名 类型,

   ….

)

As

Sql执行语句和一写判断处理

 

创建示例:

澳门金沙vip 3澳门金沙vip 4

USE [Ado]

GO

/****** Object:  StoredProcedure [dbo].[proc_BaseTable]    Script Date: 05/25/2016 17:23:08 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[proc_BaseTable](@name varchar(50),@age int)



AS

BEGIN

select * from BaseTable where name=@name

select * from BaseTable where age=@age return 10

select * from BaseTable where name=@name and age=@age 

END

View Code

drop database databaseName

— 创建 备份数据的 device
USE master
EXEC sp_addumpdevice ‘disk’, ‘testBack’,
‘c:\mssql7backup\MyNwind_1.dat’
— 开始 备份
BACKUP DATABASE pubs TO testBack

视图

视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加
SQL 函数、WHERE 以及 JOIN
语句,我们也可以提交数据,就像这些来自于某个单一的表。

创建视图:create view view_BaseTable as select id,name from BaseTable

数据库文件有一个BaseTableView.Sql文件执行即是此示例。

go

创建新表

约束

在此功能上我只在BaseTable表的age字段添加check约束使年龄不能超过50.

Create DATABASE database-name

create table tabname(col1 type1 [not null] [primary key],col2 type2
[not null],..)
根据已有的表创建新表:
A:go
use 原数据库名
go
select * into 目的数据库名.dbo.目的表名 from 原表名(使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition
only

约束的属性介绍:

NOT NULL : 用于控制字段的内容一定不能为空(NULL)。

UNIQUE : 控件字段内容不能重复,一个表允许有多个 Unique 约束。

PRIMARY KEY: 也是用于控件字段内容不能重复,但它在一个表只允许出现一个。

FOREIGN KEY: FOREIGN KEY 约束用于预防破坏表之间连接的动作,FOREIGN KEY
约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

CHECK: 用于控制字段的值范围。

DEFAULT: 用于设置新记录的默认值。

删除数据库

创建序列

示例:

NOT NULL :Create table MyTable 

               ( 

                   id varchar(32) not null, 

               name varchar (32) 
               ) 

UNIQUE:Create table MyTable 

               ( 

                   id varchar(32) not null UNIQUE, 

                   name varchar (32) 

               ) 

           Create table MyTable 

                ( 

                    id varchar(32) not null, 

                    name varchar (32), 

                    unique (id,…..) 

                 ) 

PRIMARY KEY :Create table MyTable 

               ( 

                   id varchar(32) not null PRIMARY KEY, 

                   name varchar (32) 

               ) 

Foreign Key :Create table MyTable 

               ( 

                            id nvarchar(32) not null primary key, 

                   name nvarchar(32), 

foreign key(id) references myTB(id) 

               ) 

Check  :Create table MyTable 

               ( 

                 id nvarchar(32) not null,

                   age int not null,

check (age>15 and age <30)

               ) 

Default:Create table MyTable 

               ( 

                 id int, 

name nvarchar(32) default ‘celly’               

 ) 

drop database dbname

create sequence SIMON_SEQUENCE
minvalue 1 — 最小值
maxvalue 999999999999999999999999999 最大值
start with 1 开始值
increment by 1 每次加几
cache 20;

游标

游标是一种能从包含多条数据记录的结果集中每次提取一条记录的机制。将批操作变成行操作,对结果集中得某行进行操作。

数据库文件BaseTableCsr.sql是游标示例。查询BaseTable表的id与name字段循环打印出来。

备份sql server

删除新表

表的关联查询

— 创建 备份数据的 device

drop table tabname

内连接:

只根据表查找符合添加的,不返回所有表数据。

示例代码:

select * from BaseTable join tabname on BaseTable.id=tabname.id

效果图

 澳门金沙vip 5

USE master

增加一个列

左连接查询:

以左表为主第二张表加入有符合条件的则显示数据,没有则第二张表全部为空

示例代码

select * from BaseTable left join tabname on BaseTable.id=tabname.id

效果图:

澳门金沙vip 6

EXEC sp_addumpdevice ‘disk’, ‘testBack’,
‘c:\mssql7backup\MyNwind_1.dat’

Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

右链接查询:

以右表为主查找符合的数据,没有符合项左表显示为空

示例代码:

select * from BaseTable right join tabname on BaseTable.id=tabname.id

效果图:

 澳门金沙vip 7

— 开始 备份

添加主键

完全外连接:

查找的表所有的数据合并成一张表进行显示

示例代码:

select * from BaseTable full join tabname on BaseTable.id=tabname.id

效果图(tabname表只有一条数据):

 澳门金沙vip 8

BACKUP DATABASE pubs TO testBack

Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)

交叉连接:

没有where语句的交叉连接产生的是两张表行数的乘积数据,如果带where的结果与内连接的结果相同。

示例代码:

select * from BaseTable cross join tabname

效果图:

 澳门金沙vip 9

创建新表

创建索引

UNION运算:

分为UNION(检查重复)和UNION all(不检查重复)

检查重复示例代码:

select id from BaseTable union select id from  Tables

效果图:

 澳门金沙vip 10

不检查重复代码:

select id from BaseTable union all select id from  Tables

效果图:

 澳门金沙vip 11

create table tabname(col1 type1 [not null] [primary key],col2 type2
[not null],..)

create [unique] index idxname on tabname(col….)
删除索引:drop index idxname on tabname
注:索引是不可更改的,想更改必须删除重新建。

EXCEPT运算:

从左查询中返回有右查询中没有找到的不重复项

示例代码:

select id from BaseTable except select id from tabname

效果图:

澳门金沙vip 12

根据已有的表创建新表:

创建视图

INTERSECT运算:

返回两个表都有的非重复项

示例代码:

select id From BaseTable intersect select id from tabname

效果图:

 澳门金沙vip 13

A:go

create view viewname as select statement
删除视图:drop view viewname

ADO 

use 原数据库名

几个简单的基本的sql语句

连接字符串常用属性

1、    Data Source:数据源。计算机名称或者IP地址。

2、    Server:服务器。数据库所在计算机的名称

3、    Database:数据库名称。

4、    Initail Catalog:数据库的名称。

5、    User ID:用于连接数据库的用户名称。

6、    Password:用于连接数据库的用户密码。

7、    Pooling:标志是否使用数据库连接池(少客户访问启用可以提高性能)。

8、    Intergrated
Security:系统集成安全验证。标志登录数据库时是否使用系统集成验证。

9、    Connection
Timeout:连接超时的时间。系统再次尝试连接数据库时所经历的时间,单位为秒,默认值为15秒。

go

选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’
(所有包含‘value1’这个模式的字符串)—like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]

在程序中的事务操作

首先创建事物:SqlTransaction st = conn.BeginTransaction();

开始事物(即事物的赋值):cmd.Transaction = st;

提交事务:st.Commit();

回滚事务:st.Rollback();

假如要创建某个事物保存点可以使用:st.save();

根据事物操作可以做事物回滚的批量插入,修改操作,有一条不正确即可实现事物回滚,具体请看dome代码详细介绍。

select * into 目的数据库名.dbo.目的表名 from 原表名(使用旧表创建新表)

指定排序:select id from Table_1 order by case when id = 3 then 0 when
id=4 then 1 else 3 end,id
总数:select count(*) as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1[separator]

调用储存过程

使用在数据库创建的储存过程在dome中通过ado进行调用,并得到返回的表。

示例代码:

 澳门金沙vip 14

 

注意点:在调用储存过程中,加入你的存储过程涉及到大量的操作,查询什么的,而你只需要返回其中的某个一条查询记录,需要在储存过程中找到需要返回的语句加上return
,这样在程序中调用只会返回本条语句结果。

B:create table tab_new as select col1,col2… from tab_old definition
only

 

创建序列

几个高级查询运算词

create sequence SIMON_SEQUENCE

A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和
TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION
一起使用时(即 UNION
ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自
TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2
中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时
(EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2
中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT
一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。

minvalue 1 — 最小值

使用外连接

maxvalue 999999999999999999999999999 最大值

A、left outer join:
左外连接(左连接):结果集既包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a =
b.c
B:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

start with 1 开始值

判断对象是否存在

increment by 1 每次加几

判断数据库是否存在

cache 20;

if exists (select * from sys.databases where name = ‘数据库名’)
drop database [数据库名]

删除新表

判断表是否存在

drop table tabname

if not exists (select * from sysobjects where [name] = ‘表名’ and
xtype=’U’)
begin
–这里创建表
end

增加一个列

判断存储过程是否存在

Alter table tabname add column col type

if exists (select * from sysobjects where id =
object_id(N'[存储过程名]’) and OBJECTPROPERTY(id, N’IsProcedure’) =
1)
drop procedure [存储过程名]

注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

判断临时表是否存在

添加主键

if object_id(‘tempdb..#临时表名’) is not null
drop table #临时表名

Alter table tabname add primary key(col)

判断视图是否存在

说明:删除主键: Alter table tabname drop primary key(col)

–SQL Server 2000
IF EXISTS (SELECT * FROM sysviews WHERE object_id =
‘[dbo].[视图名]’
–SQL Server 2005
IF EXISTS (SELECT * FROM sys.views WHERE object_id =
‘[dbo].[视图名]’

创建索引

判断函数是否存在

create [unique] index idxname on tabname(col….)

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[函数名]’) and xtype in (N’FN’, N’IF’, N’TF’))
drop function [dbo].[函数名]

删除索引:drop index idxname on tabname

获取用户创建的对象信息

注:索引是不可更改的,想更改必须删除重新建。

SELECT [name],[id],crdate FROM sysobjects where xtype=’U’
/*
xtype 的表示参数类型,通常包括如下这些 C = CHECK 约束 D = 默认值或
DEFAULT 约束 F = FOREIGN KEY 约束 L = 日志 FN = 标量函数 IF = 内嵌表函数
P = 存储过程 PK = PRIMARY KEY 约束(类型是 K) RF = 复制筛选存储过程 S =
系统表 TF = 表函数 TR = 触发器 U = 用户表 UQ = UNIQUE 约束(类型是 K) V
= 视图 X = 扩展存储过程 */

创建视图

判断列是否存在

create view viewname as select statement

if exists(select * from syscolumns where id=object_id(‘表名’) and
name=’列名’)
alter table 表名 drop column 列名

删除视图:drop view viewname

判断列是否自增列

几个简单的基本的sql语句

if columnproperty(object_id(‘table’),’col’,’IsIdentity’)=1
print ‘自增列’
else
print ‘不是自增列’
SELECT * FROM sys.columns WHERE object_id=OBJECT_ID(‘表名’)
AND is_identity=1

选择:select * from table1 where 范围

判断表中是否存在索引

插入:insert into table1(field1,field2) values(value1,value2)

if exists(select * from sysindexes where id=object_id(‘表名’) and
name=’索引名’)
print ‘存在’
else
print ‘不存在

删除:delete from table1 where 范围

查看数据库中对象

更新:update table1 set field1=value1 where 范围

SELECT * FROM sys.sysobjects WHERE name=’对象名’

查找:select * from table1 where field1 like ’%value1%’
(所有包含‘value1’这个模式的字符串)—like的语法很精妙,查资料!

查找字段在哪个表

排序:select * from table1 order by field1,field2 [desc]

SELECT TABLE_NAME,COLUMN_NAME FORM USER_TAB_COLUMNS WHERE
COLUMN_NAME=’列名’

总数:select count(*) as totalcount from table1

 

求和:select sum(field1) as sumvalue from table1

提升

平均:select avg(field1) as avgvalue from table1

复制表

最大:select max(field1) as maxvalue from table1

(只复制结构,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a

最小:select min(field1) as minvalue from table1[separator]

拷贝表

几个高级查询运算词

(拷贝数据,源表名:a 目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;

A: UNION 运算符

跨数据库之间表的拷贝

UNION 运算符通过组合其他两个结果表(例如 TABLE1 和
TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION
一起使用时(即 UNION
ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自
TABLE2。

(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
例子:..from b in ‘”&Server.MapPath(“.”&”\data.mdb” &”‘ where..

B: EXCEPT 运算符

子查询

EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2
中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时
(EXCEPT ALL),不消除重复行。

(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b 或者: select a,b,c from
a where a IN (1,2,3)

C: INTERSECT 运算符

显示文章、提交人和最后回复时间

INTERSECT 运算符通过只包括 TABLE1 和 TABLE2
中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT
一起使用时 (INTERSECT ALL),不消除重复行。

select a.title,a.username,b.adddate from table a,(select max(adddate)
adddate from table where table.title=a.title) b

注:使用运算词的几个查询结果行必须是一致的。

外连接查询

使用外连接

(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

A、left outer join:

在线视图查询

左外连接(左连接):结果集既包括连接表的匹配行,也包括左连接表的所有行。

(表名1:a
select * from (Select a,b,c FROM a) T where t.a > 1;

SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a =
b.c

between的用法

B:right outer join:

between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2

右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

in 的使用方法

C:full outer join:

select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

删除主表中已经在副表中没有的信息

判断对象是否存在

两张关联表delete from table1 where not exists ( select * from table2
where table1.field1=table2.field1

判断数据库是否存在

四表联查问题

if exists (select * from sys.databases where name = ‘数据库名’)

select * from a left inner join b on a.a=b.b right inner join c on
a.a=c.c inner join d on a.a=d.d where …..

drop database [数据库名]

日程安排提前五分钟提醒

判断表是否存在

SQL: select * from 日程安排 where
datediff(‘minute’,f开始时间,getdate())>5

if not exists (select * from sysobjects where [name] = ‘表名’ and
xtype=’U’)

一条sql 语句搞定数据库分页

begin

select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order
by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by
a.排序字段

–这里创建表

前10条记录

end

select top 10 * form table1 where 范围

判断存储过程是否存在

选择排名

if exists (select * from sysobjects where id =
object_id(N'[存储过程名]’) and OBJECTPROPERTY(id, N’IsProcedure’) =
1)

选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb
where tb.b=ta.b)

drop procedure [存储过程名]

派生结果表

判断临时表是否存在

包括所有在 TableA 中但不在 TableB和TableC
中的行并消除所有重复行而派生出一个结果表
(select a from tableA except (select a from tableB) except (select a
from tableC)

if object_id(‘tempdb..#临时表名’) is not null

随机取出10条数据

drop table #临时表名

select top 10 * from tablename order by newid()

判断视图是否存在

随机选择记录

–SQL Server 2000

select newid()

IF EXISTS (SELECT * FROM sysviews WHERE object_id =
‘[dbo].[视图名]’

删除重复记录

–SQL Server 2005

Delete from tablename where id not in (select max(id) from tablename
group by col1,col2,…)

IF EXISTS (SELECT * FROM sys.views WHERE object_id =
‘[dbo].[视图名]’

列出数据库里所有的表名

判断函数是否存在

select name from sysobjects where type=’U’

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[函数名]’) and xtype in (N’FN’, N’IF’, N’TF’))

列出表里的所有的

drop function [dbo].[函数名]

select name from syscolumns where id=object_id(‘TableName’)

获取用户创建的对象信息

列示排列

SELECT [name],[id],crdate FROM sysobjects where xtype=’U’

列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select
中的case。
select type,sum(case vender when ‘A’ then pcs else 0 end),sum(case
vender when ‘C’ then pcs else 0 end),sum(case vender when ‘B’ then pcs
else 0 end) FROM tablename group by type
显示结果:
type vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3

/*

初始化表table1

xtype 的表示参数类型,通常包括如下这些 C = CHECK 约束 D = 默认值或
DEFAULT 约束 F = FOREIGN KEY 约束 L = 日志 FN = 标量函数 IF = 内嵌表函数
P = 存储过程 PK = PRIMARY KEY 约束(类型是 K) RF = 复制筛选存储过程 S =
系统表 TF = 表函数 TR = 触发器 U = 用户表 UQ = UNIQUE 约束(类型是 K) V
= 视图 X = 扩展存储过程 */

TRUNCATE TABLE table1

判断列是否存在

选择从10到15的记录

if exists(select * from syscolumns where id=object_id(‘表名’) and
name=’列名’)

select top 5 * from (select top 15 * from table order by id asc)
table_别名 order by id desc

alter table 表名 drop column 列名

数据类型转换

判断列是否自增列

declare @numid int
declare @id varchar(50)
set @numid=2005
set @id=convert(varchar,@numid)
通过上述语句完成数据类型Int转换成varchar,其他转换类似,可参看convert函数