1. 如何用sql语句给表增加字段
通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数
增加字段: alter table [表名] add 字段名 smallint default 0 增加数字字段,整型,缺省值为0
alter table [表名] add 字段名 int default 0 增加数字字段,长整型,缺省值为0
alter table [表名] add 字段名 single default 0 增加数字字段,单精度型,缺省值为0
alter table [表名] add 字段名 double default 0 增加数字字段,双精度型,缺省值为0
alter table [表名] add 字段名 Tinyint default 0 增加数字字段,字节型,缺省值为0
alter table [表名] add 字段名 text [null] 增加备注型字段,[null]可选参数
alter table [表名] add 字段名 memo [null] 增加备注型字段,[null]可选参数
alter table [表名] add 字段名 varchar(N) [null] 增加变长文本型字段大小为N(1~255)
alter table [表名] add 字段名 char [null] 增加定长文本型字段大小固定为255
alter table [表名] add 字段名 Datetime default 函数增加日期型字段,其中函数可以是now(),date()等,表示缺省值
(上面都是最常用的,还有其他的属性,可以参考下面的数据类型描述)
删除字段: alter table [表名] drop 字段名
修改变长文本型字段的大小:alter table [表名] alter 字段名 varchar(N)
删除表: drop table [表名]
创建表:
sql="CREATE TABLE [表名] ([字段1,并设置为主键] int IDENTITY (1, 1) NOT NULL CONSTRAINT PrimaryKey PRIMARY KEY,"&
"[字段2] varchar(50),"&
"[字段3] single default 0,"&
"[字段4] varchar(100) null,"&
"[字段5] smallint default 0,"&
"[字段6] int default 0,"&
"[字段7] date default date(),"&
"[字段8] int default 1)"
conn.execute sql
有null 的表示字段允许零长
2. sql中写function是否可以将表名作为参数传入进行动态查询
看情况。
如果你的function里面,是固定的SELECT语句,只是想通过参数中更换表名的话,是不可以的。
如果你的function里面,查询的SQL是字符串拼接出来的,在function里面通过EXEC或其他类似语句动态执行的话,这是没有问题的。
3. sql中自定义的函数如何使用传入的表名
不行的,因为sql 要检查语法,它会把@tablename当成表名,而你没这个名字的表,就报错。
4. 在sql语句中,怎样将参数做为表名传递到查询语句中
今天为了提取出公共的fuction提高执行效率,需要传递表的字段作为参数,语法可以通过,但是查询结果不正确。
将表字段参数换成实际的字段就可以,问题出在如果将表名,字段名做为参数传递到Sql Server中
create function backtoCount(@tablename varchar(50))
returns intasbegindeclare @count int
select @count=count(*) from @tablename
return @countend但是这样的时候会报错,说变量@tablename要声明
对于表名作为变量,我们可以使用object_name(id)方法
create function backtoCount(@tablename varchar(50))
returns intasbegindeclare @count int
select @count=rows from sysindexes where indid in (0,1) and object_name(id)=@tablename
return @countendGO--查sysobjects表有多少行
select dbo.backtoCount( 'sysobjects ')
对于字段变量的话,必须执行动态语句,但是函数里边不能用exec,建议使用存储过程实现。
解决方法:动态SQL
create procere f_count(@tablename varchar(50))asdeclare @str as varchar(1000)
set @str= 'select count(*) as a from
5. Sql 中如何在函数中传递表名参数
我查遍网络找不到,2020.06.28 18:45原创一个目前你能找到的唯一权宜之计:
因sql的函数本身不支持对实体表进行增、删、改,所以对实体表进行的insert、update、delete均不可用、另外exec也被禁用了,因为动态表名和动态字段值不会太多,所以想到写枚举解决。
--如果函数返回表为@ab table (a1 varchar(100), a2 varchar(100))
--如果表名为@tableName
if @tableName='表1'
insert into @ab select a1,a2 from 表1 where ...
if @tableName='表2'
insert into @ab select a1,a2 from 表2 where ...
如果有字段名参数为@fieldName,字段值参数@fieldValue
if @fieldName='a1'
delete from @ab where a1 not like '%' + @fieldValue + '%'
if @fieldName='a2'
delete from @ab where a2 not like '%' + @fieldValue + '%'
--对@ab的其它业务逻辑
...
return
6. sql怎样把对字符串的函数应用在字段上
不一定要用函数,可以用like,作用都一样
where col1 like '%'+col2+'%'类似这样的形式,如果有分隔符再拼接进去就行了
7. 在SQL Server 语句中,如何将参数做为表名传递到查询语句中
可以使用动态sql来查询。
如:
declare@tablenamevarchar(20)
declare@sqlnvarchar(2000)
set@tablename='users'
set@sql=N'select*from'+@tablename+''
execsp_executesql@sql
结果
说明:
1、动态sql一般是这样传递参数:set @sql=N'select * from ' +@tablename+ ''
2、执行sql时以这种方式:exec sp_executesql @sql
3、定义动态sql变量时,要用nvarchar类型