SQL Server中identity(自增)的用法详解_MsSql

来源:脚本之家  责任编辑:小易  

使用 restore。格式为:restore database 数据库名称 from disk='备份文件路径'  例:restore database glkf from disk='D:\text.bak'需要注意:还原的时候需要关闭数据库的连接,如图红框部分,不能选择要还原的数据库。使用backup 可以执行数据库备份,如:backup database glkf to disk='D:\test.bak'  www.zgxue.com防采集请勿采集本网。

一、identity的基本用法

1.含义

select a.* from 学员表 a inner join 校区表 b on a.所在学校=b.所在学校 inner join 管理员表 c on b.区域=c.区域 where c.用户名=@用户名 and c.密码=@密码

identity表示该字段的值会自动更新,不需要我们维护,通常情况下我们不可以直接给identity修饰的字符赋值,否则编译时会报错

这个太简单了,在sql2000中选择数据库,右键-附加,在弹出的对话框中找到你的.mdf文件的位置加入,再点下确定,OK了。呵呵,看来是个新手,加油吧。

2.语法

sqlserver中varchar最大长度是8000,但是可以使用varchar(max),可以达到2G。 关于解释: 有var前缀的,表示是实际存储空间是变长的,varchar,nvarchar 所谓定长就是长度固定的

列名 数据类型 约束 identity(m,n)

入学时间为字符型: insert into school.student(学号,专业,入学时间) values(3222,'工商管理',convert(varchar(10),getdate(),120)) 入学时间为日期型: insert into scho

m表示的是初始值,n表示的是每次自动增加的值

ROUND() 是两个参数 ROUND(A,B) A 代表是要用到得字段 B是保留的小数 下面看别人的例子 ROUND的格式:ROUND(p1,p2,p3), 其作用是取四舍四入值P1:要被四舍五入

如果m和n的值都没有指定,默认为(1,1)

table id wc 1 fdf 2 'fdfd 3 dffd'dfdf select * from table where wc like "%''%"; 若外层为"",则不用转义。 请记住不要使用\'

要么同时指定m和n的值,要么m和n都不指定,不能只写其中一个值,不然会出错

select a.a_name as 名字,count(b.a_id) as 数量 from a inner join b on a.a_id = b.a_id group by a.a_name 名字 数量 me 3 wo 1 he 1 select a.a_name as 名字,count(b.a_

3.实例演示

以sqlserver2008为例。 1、登录SQL Server Management Studio。2、进入后,查看左边的树,找到要查找的表所在的库。3、依次点击数据库——系统数据库——表——系统表—

不指定m和n的值

我学这个时学了sql数据库9大数据类型,但其中有一部分我到现在也不明白究竟什么时候 7.位类型数据 bit 这个刚学不好理解,我给你打个比方吧。比如你的表中有一列放性

create table student1( sid int primary key identity, sname nchar(8) not null, ssex nchar(1))insert into student1(sname,ssex) values ('张三','男');insert into student1 values ('李四','女');--可以省略列名insert into student1 values ('王五','女');

格式: CONVERT(data_type,expression[,style]) 说明: 此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar) 相互转换的时候才用到.

指定m和n的值

alter table A add B VARCHAR(50) create table C (D varchar(10), E varchar(10), F varchar(10), G varchar(10), constraint pk_D primary key (D) )

create table student2( sid int primary key identity(20,5), sname nchar(8) not null, ssex nchar(1))insert into student2(sname,ssex) values ('张三','男');insert into student2 values ('李四','女');--可以省略列名insert into student2 values ('王五','女');

一、通过T-SQL代码.  代码如下:alter table 表名 add 列名 int IDENTITY(1,1) NOT NULL 这里用到了identity关键字:indentity(a,b),a b均为正整数,a表示开始数,b表示步

4.删除一条记录接着插入

默认密码是在安装的时候设定的。用windows验证进入就是管理员了,改密码是绝对没问题的,或许是你修改的时候没有遵循密码规则。 这里你的信息不太全,如若不行可截图出

把sid为2的记录删除,继续插入,新插入的记录的sid不是2,而是3

比方说,你要创建一个表user_info,设置的主键名称是user_id,那么可以如下设置: create table user_info (user_id int primary key identity(1,1),//主键初值为1,每次自增1,数值可变

create table student3( sid int primary key identity, sname nchar(8) not null, ssex nchar(1))insert into student3(sname,ssex) values ('张三','男');insert into student3 values ('李四','女');delete from student3 where sid=2;--把sid为2的记录删除insert into student3 values ('王五','女');

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME='#temp') DROP TABLE #temp GO SELECT ID,XM,ADDDW INTO #temp FROM CKZD GO S

二、重新设置identity的值

1.语法

dbcc checkident(表名,reseed,n);

n+1表示的是表中identity字段的初始值(n的值可以为0)

也就是说:如果插入的是id为2的记录,则n的值是1

2.实例演示

create table student4( sid int primary key identity, sname nchar(8) not null, ssex nchar(1))insert into student4(sname,ssex) values ('张三','男');insert into student4 values ('李四','女');delete from student4 where sid=2;--把sid为2的记录删除dbcc checkident('student4',reseed,1);--把student4表中identity字段的初始值重新设置为1insert into student4 values ('王五','女');

三、向identity字段插入数据

1.语法

set identity_insert 表名 on;

insert into 表名(列名1,列名2,列名3,列名4) values (数据1,数据2,数据3,数据4);

set identity_insert 表名 off;

注意:插入数据时必须得指定identity修饰的字段的名字

2.实例演示

create table student5( sid int primary key identity(20,5), sname nchar(8) not null, ssex nchar(1))insert into student5(sname,ssex) values ('张三','男');insert into student5 values ('李四','女');insert into student5 values ('王五','女');set identity_insert student5 on;/*insert into student5 values ('黑六','男');--errorinsert into student5 values (21,'黑六','男');--error*/insert into student5(sid,sname,ssex) values (21,'黑六','男');set identity_insert student5 off;/*insert into student5 values (22,'赵七','女');--errorinsert into student5(sid,sname,ssex) values (22,'赵七','女');--error*/insert into student5 values ('赵七','女');

补充知识:SQL Server 添加与删除主键约束

PRIMARY KEY 约束唯一标识数据库表中的每条记录。主键必须包含唯一的值。主键列不能包含 NULL 值。每个表都应该有一个主键,并且每个表只能有一个主键。

主键约束操作包含了添加约束和删除约束,修改约束其实是添加约束或者删除约束。

添加主键约束比较 简单,但是删除一个没有约束名的主键约束则比较复杂,如果不是很不了解SQL Server的话则比很难实现该功能。

主键约束操作基本语句

如果是在新建表的时候添加主键约束比较简单,直接在列名后加入primary key即可,标准的添加主键约束的SQL脚本如下:

create table 表名 ( 字段名1 int not null, ..., [constraint 约束名] primary key (字段名1, …))

其中约束名可选(建议选择,否则系统会分配随机临时名称)。这种方法可以任意添加多个或一个主键约束。

对已有表添加主键约束,与上面的脚本类似,如下:

alter table 表名 [add constraint 约束名] primary key(字段名1,... )

其中约束名与上相同,可选,建议指定。

SQL Server删除主键约束与MySQL不同,需要主键的约束名称才能删除,SQL Server标准的删除主键的脚本如下:

ALTER TABLE 表名DROP CONSTRAINT 约束名

当然该语句只能删除已知约束名的主键约束。

删除未知主键约束名的约束

根据之前的语句判断,这个约束名如果之前已经指定了那还好,否则此次就没有办法删除了,重点在于如何获取表中的主键约束名,既然可以根据约束名,那么就说明约束名是存储在数据库中的,当然是存储在系统表中的,运行下SELECT * FROM SYS.OBJECTS 语句看看查询结果,数据库中所有的约束都 在里面了,name项以PK大头的都是主键约束,看看它的type_desc是不是PRIMARY_KEY_CONSTRAINT或者type是不是 PK?(当然指定的名称没使用PK前缀另当别论)。

既然已知表名,而且也知道主键约束存储位置,关键就是二者如何关联起来,使得使用表名就可以查询到主键 约束名称,这其中沟通的桥梁便是parent_object_id。

这里给出的只是object_id,那么又如何找出表的object_id呢?再仔细 看看刚才的搜索结果,原来数据库中的相关信息全在里面,表,函数等都在里面,而且有自身的object_id。

接下来整合下上面的思路,根据表名查询表ID,根据表ID找到主键约束名称,采用级联方式查询就可以查询出来。可以构造如下的查询语句:

SELECT NAME from SYS.OBJECTS WHERE TYPE_DESC ='PRIMARY_KEY_CONSTRAINT' ANDPARENT_OBJECT_ID = (SELECT OBJECT_IDFROM SYS.OBJECTS WITH(NOLOCK) WHERE NAME = '表名')

然后NAME就是我们需要的约束名称了。然后在构造一个上面的删除约束的SQL语句执行就可以了,典型的SQL如下:

ALTER TABLE 表名 DROP CONSTRAINT NAME(约束名)

其他约束都可以采用这种方法进行删除。

以上这篇SQL Server中identity(自增)的用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持真格学网。 您可能感兴趣的文章:SqlServer生成连续数字根据指定的数字操作SQL Server 开窗函数 Over()代替游标的使用详解SQL Server中row_number函数的常见用法示例详解SQL Server如何通过创建临时表遍历更新数据详解SQL Server 使用join all优化 or 查询速度

两种方式1、存放图片路径2、转换成2进制流(不过这样的话将很占用数据库空间)存路径的方式就很简单了,下面着重给出转换成2进制流的存入以及读取方法。存入: string FilePath=""; OpenFileDialog oFileDialog=new OpenFileDialog(); if(oFileDialog.ShowDialog()==DialogResult.OK) { FilePath=oFileDialog.FileName; FileStream fs=new FileStream(FilePath,FileMode.Open,FileAccess.Read); byte[] bytes=new byte[fs.Length]; string sql = "insert PicSave(FileName,FileType,FileData)values(@FN,@FT,@MF)"; SqlCommand com = new SqlCommand(sql,this.sqlCon); SqlParameter FN = new SqlParameter("@FN",SqlDbType.VarChar); FN.Value = "泳装妹妹"; com.Parameters.Add(FN); SqlParameter FT = new SqlParameter("@FT",SqlDbType.VarChar); FT.Value = "JPG"; com.Parameters.Add(FT); SqlParameter MF = new SqlParameter("@MF",SqlDbType.Image); MF.Value = bytes; com.Parameters.Add(MF); com.CommandType = CommandType.Text; sqlCon.ConnectionString = this.conStr; try { sqlCon.Open(); com.ExecuteNonQuery(); sqlCon.Close(); MessageBox.Show("存入成功!"); } catch(Exception ex) { throw ex; } finally { sqlCon.Close(); } }读出: int id=Convert.ToInt32(this.textBox1.Text.Trim()); string sql = "select FileData from PicSave where id ="+id+" "; sqlCon.ConnectionString = this.conStr; SqlCommand readComm = new SqlCommand(sql,this.sqlCon); SqlDataReader dr = null; FileStream fs = null; BinaryWriter bw = null; int bufferSize = 100; byte[] outbyte = new byte[bufferSize]; long retval; long startIndex = 0; try { sqlCon.Open(); dr = readComm.ExecuteReader(); while(dr.Read()) { fs = new FileStream("TakeOut.jpg",FileMode.OpenOrCreate,FileAccess.Write); bw = new BinaryWriter(fs); retval = dr.GetBytes(0, startIndex, outbyte, 0, bufferSize); while (retval == bufferSize) { bw.Write(outbyte); bw.Flush(); startIndex += bufferSize; retval = dr.GetBytes(0, startIndex, outbyte, 0, bufferSize); } bw.Write(outbyte, 0, (int)retval - 1); bw.Flush(); bw.Close(); fs.Close(); Image im = Image.FromFile("TakeOut.jpg"); this.pictureBox1.Image = im; } sqlCon.Close(); } catch(Exception ex) { throw ex; } finally { sqlCon.Close(); bw.Close(); fs.Close(); }内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • sqlserver数据库出现置疑的解决思路
  • sqlserver 2000中每个服务器角色的解释
  • .net+mssql制作抽奖程序思路及源码
  • sql server允许重复空字段不空字段值唯一
  • sql server2012中新增函数之字符串函数concat详解
  • sql server 索引结构及其使用(二) 改善sql语句
  • 使用sql语句去掉重复的记录【两种方法】
  • sqlview动态发布地图图层的方法
  • sql表连接查询使用方法(sql多表连接查询)
  • 编程经验点滴 动态sql的拼接技巧
  • 如何在sql server中存储图片
  • SQLServer2000中 如何用sql脚本还原数据库
  • sql server insert values 语句怎么写?
  • SQL server 中的@,@@、#,##分别代表什么?
  • SQL Server中三个表两两关联 怎么实现查询??急!!
  • sqlserver中的mdf文件怎么打开
  • sqlserver中 varchar 最大长度是多少?
  • 如何在SQL server insert语句中插入默认当前日期?
  • SQL SERVER中的ROUND()函数有三个参数,请问这三个参数分...
  • sql server中查询带单引号的列,如何查询
  • sqlserver多表联合查询
  • 在sql server中如何查看主键名并删除
  • sql server中创建表时各个数据类型时什么意思??
  • Sql server中CONVERT函数用法
  • sqlserver语句添加列(简单)
  • sql server中如何实现自增字段?
  • SQLserver2008中sa默认密码是什么
  • sql server 2005中怎么把主键设置为自增
  • sql server 中的 if exists
  • sql server 中如何插入一条时间记录
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页sqlserver生成连续数字根据指定的数字操作sql server 开窗函数 over()代替游标的使用详解sql server中row_number函数的常见用法示例详解sql server如何通过创建临时表遍历更新数据详解sql server 使用join all优化 or 查询速度sqlserver数据库出现置疑的解决思路sqlserver 2000中每个服务器角色的解释.net+mssql制作抽奖程序思路及源码sql server允许重复空字段不空字段值唯一sql server2012中新增函数之字符串函数concat详解sql server 索引结构及其使用(二) 改善sql语句sqlview动态发布地图图层的方法sql表连接查询使用方法(sql多表连接查询)编程经验点滴 动态sql的拼接技巧sql server 2012 安装图解教程(附sql server数据库入门学习总结microsoft sql server 2012 数据win7系统安装sqlserver2000的详细sql重复记录查询的几种方法sqlserver中distinct的用法(不重sql server错误代码大全及解释(sql-order by 多字段排序(升序、sql将一个表中的数据插入到另一个用sql语句添加删除修改字段、一些sql server 分页查询存储过程代码实例理解sql中truncate和delete的区别godaddy 导入导出mssql数据库的实现步骤sql 常用技巧整理sql server控制语句的基本应用获得sql数据库信息的代码ado.net ef中的实体修改方法ms-sql server 2005 其中三个版本的比较sql server的filestream和filetable深入剖编写sql需要注意的细节checklist总结
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved