SQLserver相关笔记总结

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.namesys.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 '你的表名' ;
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值