SQLServer服务启动bat脚本
@echo off
for /f "skip=3 tokens=4" %%i in ('sc query MSSQLSERVER') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (
echo 已经发现该服务在运行,开始停止
net stop MSSQLSERVER
echo sc config MSSQLSERVER start = DISABLED 禁用服务
) else (
echo 该服务现在处理停止状态,开始启动
echo sc config MSSQLSERVER start = Manual 设置服务手动
net start MSSQLSERVER
)
pause
连接SQLserver 数据库
1、添加命名空间
using System.Data.SqlClient; //连接SQLServer 数据库专用
2、用SqlConnectio创建连接
SqlConnection lo_conn = New SqlConnection("Server=服务器名字或IP;Database=数据库名字;uid=用户名;pwd=密码");
3、打开连接,第2步并没有真正连接数据库
lo_conn.Open(); //真正与数据库连接
4、创建SqlCommand对象,使用SqlCommand向数据库发送SQL命令:
SqlCommand lo_cmd = new SqlCommand(); //创建命令对象
lo_cmd.CommandText = "这里是SQL语句"; //写SQL语句
lo_cmd.Connection = lo_con; //指定连接对象,即上面创建的
5、用ExecuteNonQuery()方法执行SQL命令或使用SqlDataReader 读取返回结果集
lo_cmd.ExecuteNonQuery(); //这个仅仅执行SQL命令,不返回结果集,实用于建表、批量更新等不需要返回结果的操作。
SqlDataReader lo_reader = lo_cmd.ExecuteReader();//返回结果集
6、以数据集的方式反回结果集
SqlDataAdapter dbAdapter = new SqlDataAdapter(lo_cmd); //注意与上面的区分开
DataSet ds = new DataSet(); //创建数据集对象
dbAdapter.Fill(ds); //用返回的结果集填充数据集,这个数据集可以被能操作数据的控件DataBind,其它的就自己发挥了吧
7、关闭连接
lo_conn.Close();
实例:
我电脑上装的就是 SQL 2008,以下是测试代码,具体参数换成自己的
SqlConnection conn = new SqlConnection("server=localhost;database=test;uid=sa;pwd=amei");
conn.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from pubbu", conn);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
创建索引的方法
http://jingyan.baidu.com/article/f3e34a1285d4b7f5eb6535c7.html
SQL用法
http://www.cnblogs.com/wywnet/p/4776306.html
SQL 删除一个字段
你要的答案:alter table aaa drop column name
alter table语句使用示例:
【例1】将表book的新增加的两个字段book_copy_no,publish_date删除
alter table book
drop column book_copy_no,publish_date
【例2】将表book的book_name字段的长度先改为32,再改回30。
alter table book
alter column book_name varchar(32) not null
alter table book
alter column book_name varchar(30) not null
【3】将表book增加两个字段:book_copy_no,publish_date
alter table book
add book_copy_no varchar(10),publish_date smalldatetime
使用ALTER TABLE语句可以为表添加或删除列,也可以修改列性质。
1. ALTER TABLE语句的语法形式:
ALTER TABLE table
{
[ ALTER COLUMN column_name
{ new_data_type [ ( precision [ , scale ] ) ]
[ NULL | NOT NULL ]}]
| ADD
{ [ < add_column_name add_data_type > ]} [ ,...n ]
| DROP COLUMN {drop_colum_name } [ ,...n ]
}
在以上语法形式中:
column_name:要修改的列名。
new_data_type :要修改列的新数据类型。
precision:是指定数据类型的精度。
scale:是指定数据类型的小数位数。
add_column_name :要添加到表中的列名。
add_data_type :要添加到表中的列的数据类型。
drop_colum_name :要从表中删除的列名
[ ,...n ]:可以有多个列。
alter table aaa drop column name
alter table语句使用示例:
【例1】将表book的新增加的两个字段book_copy_no,publish_date删除
alter table book
drop column book_copy_no,publish_date
【例2】将表book的book_name字段的长度先改为32,再改回30。
alter table book
alter column book_name varchar(32) not null
alter table book
alter column book_name varchar(30) not null
【3】将表book增加两个字段:book_copy_no,publish_date
alter table book
add book_copy_no varchar(10),publish_date smalldatetime
使用ALTER TABLE语句可以为表添加或删除列,也可以修改列性质。
1. ALTER TABLE语句的语法形式:
ALTER TABLE table
{
[ ALTER COLUMN column_name
{ new_data_type [ ( precision [ , scale ] ) ]
[ NULL | NOT NULL ]}]
| ADD
{ [ < add_column_name add_data_type > ]} [ ,...n ]
| DROP COLUMN {drop_colum_name } [ ,...n ]
}
在以上语法形式中:
column_name:要修改的列名。
new_data_type :要修改列的新数据类型。
precision:是指定数据类型的精度。
scale:是指定数据类型的小数位数。
add_column_name :要添加到表中的列名。
add_data_type :要添加到表中的列的数据类型。
drop_colum_name :要从表中删除的列名
[ ,...n ]:可以有多个列。
sql复制表
select * into EAB_Xport.dbo.tbl_usr_new from EAB_Xport.dbo.tbl_usr
如何查询 Oracle,Sql Server,MySQL 中的数据库名称、数据表名称、字段名称
查询数据库 (Databases) 名称:
SELECT name FROM master.dbo.sysdatabases WHERE status <> 512
查询数据表 (Tables) 名称:
SELECT name FROM dbo.sysobjects WHERE OBJECTPROPERTY(id,N'IsUserTable') = 1 AND name <> 'dtproperties'
查询带 Schema 的数据表 (Tables) 名称:
SELECT b.name + '.' + a.name AS name FROM sysobjects a INNER JOIN sys.schemas b ON a.uid=b.schema_id WHERE OBJECTPROPERTY(id,N'IsUserTable') = 1 AND a.name <>'dtproperties'
查询数据表 (Tables) 中的字段 (Columns) 名称:
SELECT * FROM dbo.syscolumns WHERE id=OBJECT_ID(N'[Production].[Product]') ORDER BY colid
或者
Select name from syscolumns Where ID=OBJECT_ID('tName')
获取 SQL 数据库中的数据库名、所有表名、所有字段名、列描述
1. 获取所有数据库名:
(1)、Select Name FROM Master.dbo.SysDatabases orDER BY Name
2. 获取所有表名:
(1)、Select Name FROM SysObjects Where XType='U' orDER BY Name
XType='U': 表示所有用户表;
XType='S': 表示所有系统表;
(2)、SELECT name FROM sysobjects WHERE type = 'U' AND sysstat = '83'
注意:一般情况只需要 type = 'U',但有时候会有系统表混在其中(不知道什么原因),加上后面一句后就能删除这些系统表了
3. 获取所有字段名:
(1)、Select Name FROM SysColumns Where id=Object_Id('TableName')
(2)、SELECTsyscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND "syscolumns.id = object_id('tableName')
注意点:
(a)这里为了重点突出某些重要内容,选取了其中几项信息输出。
(b)syscolumns 表中只含有数据类型编号,要获取完整的名字需要从 systypes 表中找,一般用户使用的数据类型用 xusertype 对应比较好,不会出现一对多的情况。
(c)syscolumns.length 得到的是物理内存的长度,所以 nvarchar 和 varchar 等类型在数据库中的显示是这个的一半。
4、得到表中主键所包含的列名:
SELECT syscolumns.name FROM syscolumns,sysobjects,sysindexes,sysindexkeys WHERE syscolumns.id = object_id('tablename') AND sysobjects.xtype = 'PK' AND sysobjects.parent_obj = syscolumns.id AND sysindexes.id =syscolumns.id AND sysobjects.name = sysindexes.name ANDsysindexkeys.id = syscolumns.id AND sysindexkeys.indid = sysindexes.indid AND syscolumns.colid = sysindexkeys.colid
注意:这是在 4 张系统表中寻找的,关系比较复杂,大致可以表示为:
syscolumns 中存有表中的列信息和表 id,sysobjects 表中存有主键名字(即 PK_Table 类似)和表 id,sysindexes 中存有主键名字和表 id 和 index 编号,sysindexkeys 中存有表 id 和 index 编号和列编号,一项一项对应起来后就能找到列名了,呼~
5、得到表中列的描述内容:
select a.name,g.value from syscolumns as a left join sysproperties g on a.id=g.id AND a.colid = g.smallid where a.id='表 id'
自己测试过的
获取表的基本字段属性
-- 获取 SqlServer 中表结构
SELECT syscolumns.name,systypes.name,syscolumns.isnullable,
syscolumns.length
FROM syscolumns, systypes
WHERE syscolumns.xusertype = systypes.xusertype
AND syscolumns.id = object_id('你的表名')
如果还想要获取字段的描述信息则
-- 获取 SqlServer 中表结构 主键,及描述
declare @table_name as varchar(max)
set @table_name = '你的表名'
select sys.columns.name, sys.types.name, sys.columns.max_length, sys.columns.is_nullable,
(select count(*) from sys.identity_columns where sys.identity_columns.object_id = sys.columns.object_id and sys.columns.column_id = sys.identity_columns.column_id) as is_identity ,
(select value from sys.extended_properties where sys.extended_properties.major_id = sys.columns.object_id and sys.extended_properties.minor_id = sys.columns.column_id) as description
from sys.columns, sys.tables, sys.types where sys.columns.object_id = sys.tables.object_id and sys.columns.system_type_id=sys.types.system_type_id and sys.tables.name=@table_name order by sys.columns.column_id
单独查询表的递增字段
-- 单独查询表递增字段
select [name] from syscolumns where
id=object_id(N'你的表名') and COLUMNPROPERTY(id,name,'IsIdentity')=1
获取表的主外键
-- 获取表主外键约束
exec sp_helpconstraint '你的表名' ;