一、 主键(PrimaryKey)

1. 主键是数据行的唯一标识。不能重复,不可为空,主键建议选择一般不会修改的列!

2. 主键的作用:保证表中的每条数据的唯一性。

3. 主键的分类:

a) 逻辑主键:选择无实际意义的自动标号或GuId列为主键(建议使用)。

b) 业务主键:使用过程中有实际意义的列作为主键

4. 组合主键(复合主键):同时选择多列作为一个主键(一般不建议使用)

5. 选择主键的策略(选什么样的列作为主键):

a) 主键,建议选择那些一般不会被修改的列。

b) 选择单列,不要选择多列(不用组合主键)

c) 选择简单列(整数列(自动编号))

二、 外键(ForeignKey)

1. 两张表都有主键。商品表的主键是,商品Id。厂家表的主键是,厂家Id。但是,在商品表中需要引用厂家表。所以在商品表中增加一列,这一列是用来引用厂家表的主键(厂家Id)的。所以在商品表中增加的这列就叫外键。商品表就叫外键表,厂家表叫主键表。

三、 常见的数据类型

1. Varchar和char有什么区别:

Varchar是可变长度,最多可以存储十个字节,如果实际存储的长度不足十个字节,则会动态按照实际的长度。【节省空间】

char(10)是固定长度,表示数据库中存储的时候战十个空间,超过十个就报错,不够十个就会用空格补全

2. Nchar(10)和char(10)的区别:

a) Char用来存储数据的时候,英文占一个字节,中文占2个字节。Char或者varchar的小括号中的最大长度可以写8000

b) Nchar来存储数据的时候无论存储的是中文还是英文么个字符占两个字节z可以存储10个字符或10个汉字。最大可以写4000

3. 不建议使用text与ntext,推荐使用varchar(max)与nvarchar(max)

郝喜路

http://www.cnblogs.com/haoxilu/

【基础知识】Sql和Ado.Net第12天的更多相关文章

  1. 最基础知识 sql之left join、right join、inner join的区别

    sql之left join.right join.inner join的区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括 ...

  2. Java基础知识强化之网络编程笔记12:TCP之TCP协议上传文本文件并给出反馈

    1. 客户端: package cn.itcast_12; import java.io.BufferedReader; import java.io.BufferedWriter; import j ...

  3. 21.Nodejs基础知识(下)——2019年12月16日

    2019年10月04日16:56:23 7. 模块 7.1 暴露一个类,字段 var bar = require("./bar.js"); var msg = "你好&q ...

  4. 20.Nodejs基础知识(上)——2019年12月16日

    2019年12月16日18:58:55 2019年10月04日12:20:59 1. nodejs简介 Node.js是一个让JavaScript运行在服务器端的开发平台,它让JavaScript的触 ...

  5. Java基础知识强化之集合框架笔记12:Collection集合存储字符串并遍历

    1.  Collection集合存储字符串并遍历 分析: (1)创建集合对象 (2)创建字符串对象 (3)把字符串对象添加到集合中 (4)遍历集合 2. 代码示例: package cn.itcast ...

  6. Java基础知识强化之IO流笔记12:递归之递归解决问题的思想(图解)

    1. 使用递归计算5!的结果,递归思想的本质如下: 2. 下面就要使用代码实现这个递归: 递归实现分析: (1)做递归要写一个方法 (2)出口条件 (3)规律 代码实现如下: package com. ...

  7. 数据库学习笔记 - MySQL基础知识

    一.数据库基础知识 1.1 Whats's 数据库 数据库(Database,DB):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合.如:大型-银行存储的信息,小型-电话簿. 数据 ...

  8. SQL数据库基础知识-巩固篇<一>

    SQL数据库基础知识-巩固篇<一>... =============== 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用 ...

  9. 常见SQL语句和SQL基础知识

    引自:http://blog.csdn.net/u012467492/article/details/46790205 SQL语句考察(一) 1.查询出每门课都大于80 分的学生姓名 name   k ...

随机推荐

  1. HTML图像映射

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. vue-cli#2.0 webpack 配置分析

    目录结构: ├── README.md ├── build │ ├── build.js │ ├── check-versions.js │ ├── dev-client.js │ ├── dev-s ...

  3. objective c,copy, mutableCopy区别

    copy总是返回不能被修改的对象,mutableCopy返回可以被修改的对象 例: NSArray *array = @[@"test", @"test2"]; ...

  4. Django自定义分页、bottle、Flask

    一.使用django实现之定义分页 1.自定义分页在django模板语言中,通过a标签实现; 2.前段a标签使用<a href="/user_list/?page=1"> ...

  5. HTML基础第二天知识点整合

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  6. Linux网络编程-SIGPIPE信号导致的程序退出问题

    当客户端close关闭连接时,若server端接着发送数据,根据TCP协议的规定,server端会收到RST响应,当server端再次往客户端发送数据时,系统会发出一个SIGPIPE信号给server ...

  7. SeleniumIDE初级入门

    Selenium  IDE:它是使用Javascript 脚本语言与CS端的DOM对象进行交互,并且为修改测试用例提供了接口.录制功能是它最大的亮点,录制功能可以让测试人员对需要进行测试的功能流程进行 ...

  8. Angular.js参考

    http://www.cnblogs.com/popo123/p/5673955.html

  9. php包含(include/require)文件时的作用域

    当一个php脚本被require/include时,他的变量作用域根据其上下文环境决定. 1.如果是在一个函数中require/include一个文件,则此文件中的变量作用域是这个函数的范围.也就是说 ...

  10. socket方法

    // 创建一个Socket实例var socket = new WebSocket('ws://192.168.2.72:8430'); // 打开Socket socket.onopen = fun ...