主键(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的更多相关文章

  1. (转)新手C#SQL语句的学习2018.08.13

    1.创建数据库(create) CREATE DATABASE database-name 2.删除数据库(drop) drop database dbname 3.备份数据库 --- 创建 备份数据 ...

  2. oracle 、mysql、 sql server使用记录

    oracle .mysql. sql server使用记录 mysql常用命令: mysqld --启动mysql数据库 show databases; -- 查看数据库 use database; ...

  3. 新手C#ListView使用记录2018.08.03

    在使用C#的ListView时,感觉有一些部分需要自己注意. ListView1.Clear()这条指令在使用时,用于Click后在ListView中显示数据,应该放在输入数据的前面. 在ListVi ...

  4. 使用SQL Server Audit记录数据库变更

        最近工作中有一个需求,就是某一个比较重要的业务表经常被莫名其妙的变更.在SQL Server中这类工作如果不事前捕获记录的话,无法做到.对于捕获变更来说,可以考虑的选择包括Trace,CDC. ...

  5. SQL Server转发记录指针的坏味道

    什么是转发记录指针? 转发记录指针是堆表中特有的数据存储机制. 当你修改了某个数据页中的一行时,如果该行所在的数据页已经无法存放其修改后的行, SQL Server会把这行数据移动到一个新的数据页上面 ...

  6. SQL Server之记录筛选(top、ties、offset)汇总

    一.TOP 筛选 如果有 ORDER BY 子句,TOP 筛选将根据排序的结果返回指定的行数.如果没有 ORDER BY 子句,TOP 筛选将按照行的物理顺序返回指定的行数. 1. 返回指定数目的行 ...

  7. SQL Server 表,记录 死锁解决办法

    我自己的数据库表记录死锁后的 根据以下资料的 解决方案: 1. 先根据以下语句 查询 哪些表被 死锁,及 死锁的  spid SELECT request_session_id spid,OBJECT ...

  8. 【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 ...

  9. 在SQL Server 2008上安装ArcSDE 10.1并实现远程连接

    先安装SQL Server 2008 R2 X64(SP2),创建数据库实例,安装客户端. 再安装ArcSDE 10.1,ArcGIS Desktop 10.1,一切顺利. 由于Desktop是32位 ...

随机推荐

  1. ASM配置管理

    http://blog.chinaunix.net/uid-22646981-id-3060280.htmlhttp://blog.sina.com.cn/s/blog_6a5aa0300102uys ...

  2. MySqli 执行多条SQL语句

    使用multi_query();  去执行SQL语句,执行多条语句多个SQL语句用“;”分开 一:没有结果集的语句: $sql="insert into products (cid,name ...

  3. C#,SOAP1.1与1.2的发布与禁用(SOAP 1.2 in .NET Framework 2.0)

    来源:https://www.codeproject.com/Articles/11878/SOAP-in-NET-Framework SOAP 1.2 in .NET Framework 2.0   ...

  4. javascript 获取视口的高度和宽度

    //获取视口的高度和宽度. function windowHeight() { var de = document.documentElement; return self.innerHeight|| ...

  5. java操作Excel之POI(6)使用POI实现使用模板批量添加数据

    action是用struts2写的:前端界面easyUI写的, 前端: <!DOCTYPE html> <html> <head> <meta charset ...

  6. make -j [N] --jobs [=N] 增加效率

    阿里云的服务器,以前是最低配1核心cpu,make的时候非常慢.升级配置以后,发现make的效率丝毫没有增加.top命令查看发现cpu的利用率非常低,于是执行命令: make --help 在显示的结 ...

  7. Linux 期中架构 SSH

    为其他网络服务提供安全协议.替代Telnet SSH:   实现数据加密传输 22  默认支持root用户远程连接 类似sftp-server服务 nmap -p 22 10.0.0.41 nc 10 ...

  8. 部署mariadb数据库到linux(源码编译安装)

    各种库: apt install -y build-essential zlib1g-dev libpcre3 libpcre3-dev unzip cmake libncurses5-dev lib ...

  9. ICML论文|阿尔法狗CTO讲座: AI如何用新型强化学习玩转围棋扑克游戏

    今年8月,Demis Hassabis等人工智能技术先驱们将来到雷锋网“人工智能与机器人创新大会”.在此,我们为大家分享David Silver的论文<不完美信息游戏中的深度强化学习自我对战&g ...

  10. Spring中的ThreadPoolTaskExecutor

      在观察线上系统的运行情况下,发现在错误日志中有这类错误信息,org.springframework.core.task.TaskRejectedException,于是便对ThreadPoolTa ...