SQL Server用表组织数据

一.主键

主键作为表中的唯一标识,标识这一列不允许出现重复数据
    如果两列或多列组合起来唯一标识表中的每一行,该主键叫“复合主键”

选择主键的原则
     最少性
      尽量选择单个键作为主键
     稳定性
      尽量选择数值更新少的列作为主键
二.默认值

设置列默认值的前提是这一列必须是允许为空的,否则设置默认值无效
    如果在插入数据或者更改数据时,这一列不输入的话那么会按照默认值进行绑定

三:标识列

将想要设置的标识列设置成主键,保证这一列的数据类型为int,然后在此列的标识规范改为是,标识种子代表从几开始,标识增量表示每次加几

四:创建主外键

外键表找主键表

五:主键表月外键表之间的注意事项
    1.当主表中没有对应的记录时,不能将记录添加到子表
     成绩表中不能出现在学员信息表中不存在的学号
    2.不能更改主表中的值而导致子表中的记录孤立
     把学员信息表中的学号改变了,学员成绩表中的学号也应当随之改变
   3. 子表存在与主表对应的记录,不能从主表中删除该行
     不能把有成绩的学员删除了
   4. 删除主表前,先删子表
     先删学员成绩表、后删除学员信息表

原文地址:https://www.cnblogs.com/1314Justin/p/9345481.html

时间: 2024-11-09 00:10:28

SQL Server用表组织数据的相关文章

Sql server 进行表中数据复制转移遇到的问题

前段时间的工作中,公司要求对sqlserver 中某些初始化的基础数据完全复制到另一个相同表表结构的数据表中,当时第一反应写 sql语句如下:Insert into Table1(Filed1,Filed2)select Filed1,Filed2 from Table2 .执行成功!!! 仔细一查看,数据全乱套了(Id是自增Id,但Id 不一定是连续的). 于是采用B方案: 把Table1 中Id的自增取消,先把数据插入进去再重新加上自增长(问题解决). 但是 当 Table1 是存储过程动态

sql server 更新表,每天的数据分固定批次设置批次号sql

按表中的字段 UpdateTime 按每天进行编号,每天的编号都从1开始编号,并附带表的主键 cid,把数据存入临时表中 WITH temp AS (SELECT cid,updatetime, ROW_NUMBER() OVER (PARTITION BY CONVERT(varchar(10), UpdateTime, 20) ORDER BY updatetime) AS Row_Num FROM Customer_Transfer ) 从临时表中根据主键cid进行更新 BatchNo,给

Oracle与Sql Server复制表结构及数据

1.Oracle create table 新表名 AS SELECT * FROM 源表名 2.Sql Server SELECT * into 新表名 from 源表名 Oracle与Sql Server复制表结构及数据

sql Server中临时表与数据表的区别

sql server 中临时表与数据表的区别 1.如何判断临时表和数据表已生成 --如何判断临时表是否已创建--- if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Temp_Student')) begin print '存在临时表'; end else begin print '不存在临时表'; end --如何判断数据表是否已创建--- if exists(select * from sys.ta

千万级SQL Server数据库表分区的实现

千万级SQL Server数据库表分区的实现 2010-09-10 13:37 佚名 数据库 字号:T | T 一般在千万级的数据压力下,分区是一种比较好的提升性能方法.本文将介绍SQL Server数据库表分区的实现. AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验 最近使用SQL SERVER一个的缓存,数据量一天100w的速度增长,同时接受客户查询,速度由于数据量越来越大越来越慢,这里感谢  KillKill 和 邀约, 最近读了一套书不错,感兴趣的同学可以读读

SQL Server系统表sysobjects介绍与使用

原文:SQL Server系统表sysobjects介绍与使用 关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器.你可以一个一个地检查表格,但是如果你有500个表格的话,这可能会消耗相当大的人工. 这就让sysobjects表格有了用武之地.虽然我不建议你更新这个表格,但是你当然有权对其进行审查. sysobjects 表 在数据库内创建的每个对象(约

SQL SERVER 报:由于数据移动,未能继续以 NOLOCK 方式扫描错误的解决办法。

比如在某个表中使用 select xxx from xxx with(nolock) where xxxx 查询. 提示出错:由于数据移动,未能继续以 NOLOCK 方式扫描. 它有可能某些条件出错,某些条件不出错. 原因是有可能该表在物理文件存储中某一块数据损坏了.或者该表中的索引和表的数据不一致了. 解决办法-如果是整个库出错可以使用: 1.快速修复DBCC CHECKDB ('数据库名', REPAIR_FAST)     2.重建索引并修复DBCC CHECKDB ('数据库名', RE

SQL Server 基础 03 查询数据基础

查询数据 简单的查询 1 create table stu_info 2 ( 3 sno int not null 4 ,sname varchar(20) not null 5 ,sex varchar(2) not null 6 ,birth varchar(20) not null 7 ,email varchar(20) not null 8 ,telephone int not null 9 ,depart varchar(20) not null 10 ) 11 12 13 sele

sql server 复制表从一个数据库到另一个数据库

sql server 复制表从一个数据库到另一个数据库 /*不同服务器数据库之间的数据操作*/ --创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例 select * from ITSV.数据库名.dbo.表名 --导入示例 select * into 表 f