新手C#SQL Server使用记录2018.08.10
主键(PrimaryKey):主键就是每个数据行(记录)的唯一标识,不会有重复值的列(字段)才能当做主键。一个表可以没有主键,但是这样会很难处理表,因此一般情况表都要设置主键。
主键有两张选用策略,分为业务主键和逻辑主键。
业务主键是使用有业务意义的字段做主键,例如身份证号、银行账号等。
逻辑主键是使用没有任何业务意义的字段做主键,完全用来给程序看,是业务人员不会看的数据,推荐使用逻辑主键。
逻辑主键设置方法为将设计页面中列属性栏的表示规范切换为是即可,在输入记录时,逻辑主键字段可以不输入,系统自动匹配。当你删除了最后一条记录,它的主键为4,若新增一条记录,他会直接变为5而不是4。因为删除了的那条记录仍存在在系统表中,属于软删除。
外键(ForeignKey):外键表的某一列的值必须与主键表的主键的值一致,外键表就相当于引用了主键表的主键值。用于记录表和表的关联。一个主键可以具有多个外键。

主键选择和Guid(全球唯一标识符):SQLServer中两种常用的主键数据类型:int+标识符;或者是uniqueidentifier(Guid)。
用标识列实现字段自增可以避免并发的问题,在insert的时候不用指定主键的值,将字段的“是标识列”设置为“是”,一个表只能有一个标识列。
Guid算法是可以产生唯一标识的高效算法,他使用网卡MAC、地址、纳秒级时间、芯片ID码等算出来,保证每次生成的GUID永远不会重复,无论是同一个计算机上还是不同计算机,在公元3400年以前产生的GUID均不相同。SQLServer中生成GUID的函数的语句为newid(),而.NET中生成GUID的方法是:Guid.NewGuid(),返回值是Guid类型。
用int自增字段的优点是:占用空间小,无需开发人员干预,易读。缺点是:效率低,数据导入导出的时候很慢。
Guid的优点:效率高、数据导入导出方便。缺点是:占用空间大、不易读。
目前业界主流更倾向于使用Guid。

数据类型:

(var)char为ASCII编码,一个字符占一个字节,而当输入中文时,一个汉字占两个字节,比较适合于英文字符。而n(var)char采用的是Unicode编码,输入一个字符无论是英文还是中文都占两个字节,当输入中文时最好采用该字符串类型,因为可以匹配长度。text用于存储长文本信息,是一个指针(2G)。



2018.08.10
新手C#SQL Server使用记录2018.08.10的更多相关文章
- (转)新手C#SQL语句的学习2018.08.13
1.创建数据库(create) CREATE DATABASE database-name 2.删除数据库(drop) drop database dbname 3.备份数据库 --- 创建 备份数据 ...
- oracle 、mysql、 sql server使用记录
oracle .mysql. sql server使用记录 mysql常用命令: mysqld --启动mysql数据库 show databases; -- 查看数据库 use database; ...
- 新手C#ListView使用记录2018.08.03
在使用C#的ListView时,感觉有一些部分需要自己注意. ListView1.Clear()这条指令在使用时,用于Click后在ListView中显示数据,应该放在输入数据的前面. 在ListVi ...
- 使用SQL Server Audit记录数据库变更
最近工作中有一个需求,就是某一个比较重要的业务表经常被莫名其妙的变更.在SQL Server中这类工作如果不事前捕获记录的话,无法做到.对于捕获变更来说,可以考虑的选择包括Trace,CDC. ...
- SQL Server转发记录指针的坏味道
什么是转发记录指针? 转发记录指针是堆表中特有的数据存储机制. 当你修改了某个数据页中的一行时,如果该行所在的数据页已经无法存放其修改后的行, SQL Server会把这行数据移动到一个新的数据页上面 ...
- SQL Server之记录筛选(top、ties、offset)汇总
一.TOP 筛选 如果有 ORDER BY 子句,TOP 筛选将根据排序的结果返回指定的行数.如果没有 ORDER BY 子句,TOP 筛选将按照行的物理顺序返回指定的行数. 1. 返回指定数目的行 ...
- SQL Server 表,记录 死锁解决办法
我自己的数据库表记录死锁后的 根据以下资料的 解决方案: 1. 先根据以下语句 查询 哪些表被 死锁,及 死锁的 spid SELECT request_session_id spid,OBJECT ...
- 【SQL Server 问题记录】A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible.
本文涉及的相关问题,如果你的问题或需求有与下面所述相似之处,请阅读本文 A network-related or instance-specific error occurred while esta ...
- 在SQL Server 2008上安装ArcSDE 10.1并实现远程连接
先安装SQL Server 2008 R2 X64(SP2),创建数据库实例,安装客户端. 再安装ArcSDE 10.1,ArcGIS Desktop 10.1,一切顺利. 由于Desktop是32位 ...
随机推荐
- 【python】实例-python实现两个字符串中最大的公共子串
由于python中的for循环不像C++这么灵活,因此该用枚举法实现该算法: C="abcdefhe" D="cdefghe" m=0 n=len(C) E=[ ...
- JDBC进行简单的增删改查
一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 (3)insert (4)up ...
- 动态修改css 规则
页面引用了两个样式表: <link href="css/mui.min.css" rel="stylesheet" /> <link href ...
- Spring IOC - 控制反转(依赖注入) - 创建对象的方式
a.通过类的无参构造方法创建对象 在入门案例中就是这种方式.当用最普通的方式配饰一个<bean>时,默认就是采用类的 无参构造创建对象.在Spring容器初始化时,通过<bean&g ...
- Java堆外内存之六:堆外内存溢出问题排查
一.堆外内存组成 通常JVM的参数我们会配置 -Xms 堆初始内存 -Xmx 堆最大内存 -XX:+UseG1GC/CMS 垃圾回收器 -XX:+DisableExplicitGC 禁止显示GC -X ...
- RF安装
参考: http://www.cnblogs.com/zlj1992/p/6357373.html https://github.com/robotframework/RIDE/wiki/Instal ...
- 绕过限制,在PC上调试微信手机页面
场景 假设一个手机页面,开发者对其做了限制,导致只能在微信客户端中打开.而众所周知手机上非常不利于调试页面,所以需要能在电脑上打开并进行调试.这里针对常见的三种页面做一下分析,一一绕过其限制,(当然不 ...
- Nginx的启动、停止、重启
启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /us ...
- sql server查看表占用索引空间(小技巧)
选择表右键—属性—存储—索引空间
- PS制作gif动图教程
之前做过一些动图,时间久了就忘记了,每次心血来潮想做的时候又要重新找资料,网上的教程都不够完整,因此整理了一份完整的教程,针对PS新手(对,没错,就是博主自己哈哈). 准备工作:photoshop.图 ...