------- 目录 -------------
------- 一、修改表 -------------
------- 二、修改记录 ------------
--------------------------------------------------------------- 一、修改表 alter table ---------------------------------------------------------------------
--*** 添加列,注意:不允许空值的列只有在指定了默认值的情况下,才能用 ALTER TABLE 语句向表中添加。添加到表中的新列要么允许空值,要么必须指定默认值。
alter table 表名 add [列名1] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL default'',
[列名2] [char] (32) COLLATE Chinese_PRC_CI_AS NOT NULL default'',
[列名3] [char] (16) COLLATE Chinese_PRC_CI_AS NOT NULL default''
GO
EXEC sp_help 表名
GO
--*** 删除带有默认值的列 DROP COLUMN ----------------
--declare @name varchar(8000)
--select @name=b.name from syscolumns a,sysobjects b where a.id=object_id('你的表名') and b.id=a.cdefault and a.name='你的列名' and b.name like 'DF%'
--exec('alter table 你的表名 drop constraint '+@name)
--Alter Table 你的表名 Drop Column 你的列名
declare @name varchar(8000)
select @name=b.name from syscolumns a,sysobjects b where a.id=object_id('expr_blsy') and b.id=a.cdefault and a.name='sy_zyts' and b.name like 'DF%'
exec('alter table expr_blsy drop constraint '+@name)
ALTER TABLE expr_blsy DROP COLUMN sy_zyts
GO
EXEC sp_help expr_blsy
GO
-- *** 重命名列名方法 EXEC sp_rename '表名.列名','新列名','column'-------------
EXEC sp_rename 'expr_blsy.sy_zyts1','sy_zyts','column'
GO
EXEC sp_help expr_blsy
GO
-- *** 修改列类型及长度方法 ALTER COLUMN----------------------------
ALTER TABLE MyTable ALTER COLUMN NullCOl NVARCHAR(20) NOT NULL
-
-如果 ALTER COLUMN 中指定了 NULL 或 NOT NULL,那么必须同时指定 new_data_type [(precision [, scale ])]。如果不更改数据类型、精度和小数位数,请指定列的这些值的当前值。
-------------------------------------------------------------------------------------------------------
--如何用SQL获得数据库中所有表的表名??
select * from sysobjects where xtype = 'U' and name like '%CON%'
-------------------------------------------------------------------------------------------------------
--如何用SQL查看数据库中表的结构及存储过程信息?
sp_help 表名
sp_helptext [存储过程]
--SELECT 创建临时表
select * into #局部临时表 from 原始表
select * into ##全局临时表 from 原始表
---------------------------------------------------------------------------------------------------
create table [表名]
(
[自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,
[字段1] nVarChar(50) default '默认值' null ,
[字段2] ntext null ,
[字段3] datetim
e,
[字段4] money null ,
[字段5] int default 0,
[字段6] Decimal (12,4) default 0,
[字段7] image null ,
)
删除表:
Drop table [表名]
插入数据:
INSERT INTO [表名] (字段1,字段2) VALUES (100,'51WINDOWS.NET')
删除数据:
DELETE FROM [表名] WHERE [字段名]>100
更新数据:
UPDATE [表名] SET [字段1] = 200,[字段2] = '51WINDOWS.NET' WHERE [字段三] = 'HAIWA'
新增字段:
ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL
删除字段:
ALTER TABLE [表名] DROP COLUMN [字段名]
修改字段:
ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR (50) NULL
重命名表:(Access 重命名表,请参考文章:在Access数据库中重命名表)
sp_rename '表名', '新表名', 'OBJECT'
新建约束:
ALTER TABLE [表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] <= '2000-1-1')
删除约束:
ALTER TABLE [表名] DROP CONSTRAINT 约束名
新建默认值
ALTER TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT '51WINDOWS.NET' FOR [字段名]
删除默认值
ALTER TABLE [表名] DROP CONSTRAINT 默认值名
删除Sql Server 中的日志,减小数据库文件大小
dump transaction 数据库名 with no_log
backup log 数据库名 with no_log
foreign key references用法dbcc shrinkdatabase(数据库名)
exec sp_dboption '数据库名', 'autoshrink', 'true'
自增列不能直接修改,必须将原有ID列删除,然后重新添加一列具有identity属性的ID字段,语句如下
alter table 表名
drop column ID
alter table 表名
add ID int identity(1,1)
修改日期字段为Datatime类型,首先要保证表中无数据,或现有数据可以直接转换为datetime类型,否则修改字段类型就会失败。
alter table 表名
alter column 日期字段名 datetime
1, 使用一个数据库之前要引用他:use 数据库名
2, exists()判断子查询的结果是否存在,返回true or false
3, object_id('对象名') 返回该对象名对应的Id,该id存储在sysobjects表中。
4, 建表时自动建立主键约束:create table a(b char(4),c int,constraint 主键名 primary key(c))
或者:create table a(a char(4) cint primary key) 或者:create table a(a char(4) cint constraint 主键名 primary key)
5, 创建索引:create index 索引名 on 表名(字段名)
6, 为一个表添加外键:alter table 表名 add constraint 外键名 foreign key(字段)references 表名(字段)
7, identity(seed,range) 创建一个标识列,与null,not null并列。seed表示种子,即初始值;range表示增长幅度。
8, 局部临时表 #xxx ,只能被当前会话访问,在该会话结束后自动消失。
9, 全局临时表 ##xx , 可以供多个用户使用,在该会话结束后自动消失。
10,为表 添加/修改/删除列 :alter table 表名 add 列名 type/alter column 列名 newtype/drop 列名
11,可以通过多次安装sqlserv
er为其创建多个实例
12,用系统过程 sp_reZGXX_XM 重新命名表和列:
sp_reZGXX_XM 原表名,新表名
sp_reZGXX_XM "表名.原列名",新列名
13,如果想显示的在identity列中插入值,则需要先设置:set identity_insert 表名 on
插入完毕后最好设置:set identity_insert 表名 off
14, 利用writetext往text 或 image列中写入值:
declare @var varbinary(16)
select @var=textptr(c) from test where a=10
writetext test.c @var 'zhongguo '
注意:使用Writetext,一般需要首先这样设置:sp_dboption 数据库名,'SELECT into/bulkcopy',true
15, truncate table 表名 删除表格的所有数据,速度很快。
16,统计函数中除了count(*) 之外,都忽略空值(null).
17, 由于text和image类型数据很长,在查询之前可以通过设置全局变量textsize来指定返回数据的长度,set textsize 50
如果想查阅全局变量textsize的值:select @@textsize
18, 通过reaDtext 读取text的数据:
declare @var varbinary(16)
select @var=textptr(c) from test where a=10
readtext test.c @var 4 3
此例返回第5,6,7个字符。应为长度要求是3,起始是0,所以4表示从第五个字符读起。
其中textptr是返回指定的text,ntext,image列的指针,一般保存到varbinary类型的变量中
19, like 语句中,可以指定简单的正则表达式,[a-z]表示一个任意字母,[^a-z]表示一个非字母字符
20,like 也是唯一可以在text列上使用的操作符
21,逻辑操作符优先级:NOT > AND > OR
22, 在group by 一个记录集时,所有的null组成一组。
23,带有group by 子句的 select中可以有where子句,但是where 子句必须放在group by 前面。
24,如果group by 子句中用了all,即 group by all xxx ,则不符合检索条件的记录也显示,但不参与统计。
25,having 中,只能包含 group by子句中 指定的列,也可以包含统计函数。where中可指定任何列,但是不能用统计函数
26, having 子句从最终结果中将不满足该条件的分组去掉
27,不带group by子句时也可以使用having子句,并将整个查询结果作为一个组,但是,由于出现在选择列表中的列
和出现在having子句中的列必须是group by 子句中的列,所以,当不带group by子句时,不能在having子句和
选择列表中直接使用列名,只能使用统计函数。
28,当在group by子句后指定order by子句时,只能在order by子句中指定group by子句中的列或者统计函数
29,在进行union运算时,自动删除结果中的重复行,如果使用all选项 ,则可以将所有行显示在结果中:union all
30, 在union时,合并结果集中的列名有第一个查询给出,所以后面进行排旬时一定要注意order by 子句中的字段名
31,可以通过 select fieldslist into 新表名 from 表名,来创建一个新表,并将当
前表中的数据全部插入到新
表中,但是做这个操作之前需要保证数据库选项 select into/bulkcopy 设置为true。方法如下:
use master /*设置命令必须在master数据库中进行*/
sp_dboption 数据库a名,"select into/bulkcopy",true /*设置数据库选项*/
use 数据库a名
checkpoint /*使设置结果生效*/
如果要将统计结果或者计算结果插入到新表中,必须以标题的形式给出列名,如:
select a,b=avg(c) into mm from nn group by a
32, 随即取出N条记录的方法:select top N * from 表名 order by newid()
33,创建唯一约束:create table a(b int not nul constraint 约束名 unique,c char(10) null)
或者:create table a(b int,c char(10),constraint 约束名 unique(b))
34,在sql server表格选定一个单元格,ctrl+0即可将单元格的值置为null
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论