创建表格

1.创建表格之identity

create table TableName(
id int not null primary key identity(1,1),
col_1 varchar(50),
col_2 nvarchar(50)
)

这是一个简单的表格创建,identity这个是指在创建表格时候,将表格的id这个列设置为自增的,第一个参数表示自增是从几开始,第二个参数表示的是自增的数量是多少。

这张是identity(1,1)的时候

这张是identity(1,4)的时候

2.创建表格之主键和外键

create table Student(
id int not null primary key identity(1,1), --主键的关键字是primary key。字段的后边跟着这个词就是创建一个自增的,自增长度为1的不为空的,主键是id的列
Sage int,
Sname nvarchar(50),
Ssex varchar(50),
Cid int
FOREIGN KEY (Cid) REFERENCES Class(Cid)         --这里是创建一个外键
)

什么是主键:可以这么理解,它是特别的,它是一种唯一标识。就像是身份证一样。比如说我们的名字,性别,年龄都是可以重复的,但是身份证号是绝对不可能重复的,它就代表了你这个人。在比如说是学籍号这个在你的学校里也是认定你这个人的唯一标识。

同理,主键也可以理解为认识这一行的唯一标识。查询它,就可以查询出这一行的其他数据。

1) 一个表中只能有一个主键。
2)主键的值不可重复,也不可为空。

创建主键应当遵循的规则:

1、主键对于用户来说没有太大意义。就像这个学生表的id,它除了能够快速的找到你这个人,并没有很大的意义。

2、尽量不要自己去更新主键,最好是自增的,计算机自动生成的

3、主键不要包含动态变化数据。如时间戳、创建时间列、修改时间列等。

什么是外键:外键是一种约束。它是关系的有效性检查。可以这么理解:

  id Sname Sage Cid
1 小明 16 1
2 小黑 18 2
3 小小 19 8

   

Cid Cname
1 一年级一班
2 一年级二班
3 一年级三班

 

这是两张表格,一张是学生表,一张是班级表。他们之间存在这联系。小明是所在的班级的cid是1所以可以很直观的看见他是一年级一班的学生,小黑是一年级二班的学生,小小的cid是8在班级表中并没有找到班级为8的班级。也就是说不存在八班的学生

这样的话数据容易出错,所以需要外键来对他们的关系进行约束。对cid进行约束的时候,不让学生表当中出现不存在班级表的id。总的来说就是只要班级表没有的Cid,你的学生表就不能填入这个不存在的Cid。

数据库艰难求生之路(基础:创建数据库表格)part1的更多相关文章

  1. 数据库艰难求生之路(基础:增删改查)part2

    一.数据库查询 由于这个点的东西实在是多的,我就和题目,知识点一起演示. 首先是创建数据库: create database ExampleInfo --创建数据库 use ExampleInfo - ...

  2. 数据库入门(mySQL):创建数据库

    基于JetBrains DataGrip创建数据库.SQL语句创建数据库 MySQL数据库存储引擎和数据类型 创建数据库表及基本操作 导出数据库.删除数据库.导入数据库 一.基于JetBrains D ...

  3. MySQL数据库实验:任务一 创建数据库和表

    目录 任务一 创建数据库和表 [实训目的与要求] [实训原理] [实训步骤] 一.熟悉MySQL环境 二.利用MySQL命令行窗口创建数据库及表 三.利用界面工具创建数据库及表 任务一 创建数据库和表 ...

  4. asp.net core 使用EF7 Code First 创建数据库,同时使用命令创建数据库

    1.首先下载vs2015的Asp.Net Core(RC2)的插件工具(https://www.microsoft.com/net/core#windows)2.创建一个asp.net Core的项目 ...

  5. 【Android】数据库的简单应用——创建数据库

    SQLiteOpenHelper是一个抽象类,要使用它必须写一个类继承它.SQLiteOpenHelper有两个抽象方法onCreate()和onUpgrade(),我们要在类里面重写这两个方法来实现 ...

  6. mysql数据库的基本操作:创建数据库、查看数据库、修改数据库、删除数据库

    本节相关: 创建数据库 查看数据库 修改数据库 删除数据库 首发时间:2018-02-13 20:47 修改: 2018-04-07:考虑到规范化,将所有语法中“关键字”变成大写;以及因为整理“mys ...

  7. MySQL数据库执行sql语句创建数据库和表提示The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to have it working

    MySQL创建数据库 只想sql文件创建表时候提示 The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to ha ...

  8. Android——SQLite数据库(一)创建数据库、创建表、初始化数据

    xml <Button android:layout_width="match_parent" android:layout_height="wrap_conten ...

  9. 云数据库 RDS 版怎么创建数据库和账号MySQL 5.7版

    若要使用云数据库RDS,您需要在实例中创建数据库和账号.对于MySQL 5.7版本的实例,您需要通过RDS控制台创建一个初始账号,然后可以通过数据管理(DMS)控制台创建和管理数据库.本文将主要介绍在 ...

随机推荐

  1. 使用Freemarker 实现JSP页面的静态化

    使用Freemarker 静态化网页 一.原理 Freemarker 生成静态页面,首先需要使用自己定义的模板页面,这个模板页面可以是最最普通的html,也可以是嵌套freemarker中的 取值表达 ...

  2. PCB设计检查

    一.资料输入阶段1.在流程上接收到的资料是否齐全(包括:原理图.*.brd文件.料单.PCB设计说明以及PCB设计或更改要求.标准化要求说明.工艺设计说明文件)2.确认PCB模板是最新的3. 确认模板 ...

  3. FreeSql 新的八大骚功能,.NETCore 你必须晓得的 ORM

    前言 FreeSql 目前版本号 0.5.5,预计明年元旦发布 1.0.0,切莫小看了版本号,目前单元测试方法1350+,并且每个方法内的涵盖面又比较广(不信的话见下图),每一次版本发布都作了较多的测 ...

  4. LeetCode算法题-Number of Lines To Write String(Java实现)

    这是悦乐书的第319次更新,第340篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第188题(顺位题号是806).我们要将给定字符串S的字母从左到右写成行.每行最大宽度为 ...

  5. Spring Boot 2.0 WebFlux 教程 (一) | 入门篇

    目录 一.什么是 Spring WebFlux 二.WebFlux 的优势&提升性能? 三.WebFlux 应用场景 四.选 WebFlux 还是 Spring MVC? 五.异同点 六.简单 ...

  6. DDD领域驱动设计理论篇 - 学习笔记

    一.Why DDD? 在加入X公司后,开始了ASP.NET Core+Docker+Linux的技术实践,也开始了微服务架构的实践.在微服务的学习中,有一本微软官方出品的<.NET微服务:容器化 ...

  7. 使用Springboot + Gradle快速整合Mybatis-Plus

    使用Springboot + Gradle快速整合Mybatis-Plus 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] MyBatis-Plus(简称 MP)是一个 MyBatis ...

  8. windows本地安全策略实验-远程桌面连接锁定账户

    windows本地安全策略实验-远程桌面连接锁定账户 实验环境: 服务端:Win7-1:10.10.10.136,开启远程桌面服务 客户端:win7-2:10.10.10.153 确保客户端和服务端能 ...

  9. Linux 桌面玩家指南:13. 使用 Git 及其和 Eclipse 的集成

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  10. 微信小程序页面跳转方法和携带参数详解

    1.页面跳转方式     (1)标签跳转   open-type的属性值对应api里的用法即wx.的用法   1 <navigator url="/page/navigate/navi ...