必须会的SQL语句(八) 数据库的完整性约束

实体完整性
1.建表时定义主键

Create table 表名
   (
        Sno int identity(1,1),
        Sname nvarchar(20),
        --设置主键
        Primary key (Sno)
   )
 
2.添加主键

alter table 表名
    add constraint PK_表名_Sno
    primary key(id)
参照完整性1.建表时定义外键

create table 表名
  (
      sno int identity(1,1) primary key,
      cno int not null,
      foreign key(cno) References
      表名2(Cno)
      on Delete cascade     --级联删除
      on update cascade    --级联更新
      -- on delete on action  删除管制
  )
 
2.添加外键
   alter table 表名
   add constraint FK_表名_表名2
   Foreign key(cid) references 表名2(cid)
用户定义完整性1.非空约束
   alter table 表名
   alter column name varchar(20) not null
 
2.唯一约束
   alter table 表名
   add constraint UQ_表名_列名 unique(列)
 
3.检查约束
   alter table 表名
   add constraint CK_表名_列名 check(age>5)
 
4.默认约束
   alter table 表名
   add constraint DF_表名_列名 default('男')
   for gender
删除约束    --删除约束
   alter table 表名 drop constraint DF_表名_列

(0)

相关推荐

  • 数据库高并发情况下重复值写入的避免 字段组合约束

    10线程同时操作,频繁出现插入同样数据的问题.虽然在插入数据的时候使用了: insert inti tablename(fields....) select @t1,@t2,@t3 from tablename where not exists (select id from tablename where t1=@t1,t2=@t2,t3=@t3) 当时还是在高并发的情况下无效.此语句也包含在存储过程中.(之前也尝试线判断有无记录再看是否写入,无效). 因此,对于此类情况还是需要从数据库的根本

  • sql server建库、建表、建约束技巧

    下面给大家分享下sql server建库.建表.建约束技巧,下文介绍有文字有代码. --创建School数据库之前:首先判断数据库是否存在,若存在则删除后再创建,若不存在则创建-- --exists关键字:括号里边能查询到数据则返回'true' 否则返回'false' if exists(select * from sysdatabases where name = 'School') --exists返回'true'则执行删除数据库操作-- drop database School --exi

  • SQL Server约束增强的两点建议

    在许多情况下,对外键使用更复杂的逻辑表达式是非常有用的. 此外,在某些情况下能够在索引视图创建约束也将非常实用. 我将举例说明,同时我希望针对此文的投票链接会尽快加上.当外键中需要更为复杂的逻辑表达式时 考虑下面的简单常识: 您的设备的最大电流不能超过您插入到它的电路的最大电流. 假设下面的表存储电路和设备数据: 复制代码 代码如下: CREATE TABLE Data.Curcuits(CurcuitID INT NOT NULL CONSTRAINT PK_Curcuits PRIMARY

  • SQL Server创建数据库和数据表的相关约束实现方法

    本文分析了SQL Server创建数据库和数据表的相关约束实现方法.分享给大家供大家参考,具体如下: 创建约束语法如下: CREATE DATABASE [test] ON (NAME=N'test',FILENAME=N'd:\SQL2kt_Data\test.mdf',SIZE=3mb,MAXSIZE=UNLIMITED,FILEGROWTH=1MB) LOG ON (NAME=N'test_log',FILENAME=N'd:\SQL2kt_Data\test_log.ldf',SIZE=

  • sql脚本查询数据库表,数据,结构,约束等操作的方法

    1.查询当前数据库所有表 复制代码 代码如下: SELECT     O.object_id AS TableId,    TableName=O.name  ,    TableDesc= O.type FROM sys.columns C    INNER JOIN sys.objects O        ON C.[object_id]=O.[object_id]            AND O.type='U'            AND O.is_ms_shipped=0   

  • 数据库设计的完整性约束表现在哪些方面

    数据库设计的完整性约束表现哪些方面?主要就是下面写四个方面: 1.域的完整性:数据库表中的列必须满足某种特定的数据类型或约束.其中约束又包括取值范围.精度等规定.用Check来实现约束,在数据库设计工具中,对字段的取值范围进行定义时,有一个Check按钮,通过它定义字段的值城. 2.参照完整性:就是定义外码与主码之间的引用规则.用PK.FK.表级触发器来实现.原理规则就是若属性(或属性组)f是基本关系r的外码,它与基本关系s的主码ks相对应(基本关系r和s不一定是不同的关系),则对于r中每个元组

  • 必须会的SQL语句(八) 数据库的完整性约束

    实体完整性 1.建表时定义主键 Create table 表名    (         Sno int identity(1,1),         Sname nvarchar(20),         --设置主键         Primary key (Sno)    )   2.添加主键 alter table 表名     add constraint PK_表名_Sno     primary key(id) 参照完整性1.建表时定义外键 create table 表名   (

  • iOS开发中使用SQL语句操作数据库的基本用法指南

    SQL代码应用示例 一.使用代码的方式批量添加(导入)数据到数据库中 1.执行SQL语句在数据库中添加一条信息 插入一条数据的sql语句: 点击run执行语句之后,刷新数据 2.在ios项目中使用代码批量添加多行数据示例 代码示例: 复制代码 代码如下: // //  main.m //  01-为数据库添加多行数据 // //  Created by apple on 14-7-26. //  Copyright (c) 2014年 wendingding. All rights reserv

  • sql语句查询数据库中的表名/列名/主键/自动增长值实例

    sql语句查询数据库中的表名/列名/主键/自动增长值 ----查询数据库中用户创建的表 ----jsj01 为数据库名 select name tablename from jsj01..sysobjects where type='U' and name not in ('dtproperties') --查询表里的字段信息 ---docs为表名 ---- select * from syscolumns where id = object_id('docs') ----查询数据库中所有类型

  • 如何利用SQL语句创建数据库详解

    目录 前言 建立数据库 总结 前言 SQL语言是集DDL.DML和DCL于一体的数据库语言 SQL语言主要由以下9个单词引导的操作语句来构成,但每一种语句都能表达复杂的操作请求 DDL语句引导词:Create(建立),Alter(修改),Drop(撤销) 模式的定义和删除,包括定义Database, Table,View,Index,完整性约束条件等,也包括定义对象(RowType行对象,Type列对象) DML语句引导词:Insert,Delete,Update,Select 各种方式的更新与

  • 教你使用SQL语句进行数据库复杂查询

    目录 前言 前言 本篇可当做例题练习, 1.查询比”林红”年纪大的男学生信息语句: select * from Student where Sex='男' and year(Birth)-(select year(Birth)from Student--这里是需要告诉查询的表名,相当于嵌套 where Sname='林红')<0 2.检索所有学生的选课信息,包括学号.姓名.课程名.成绩,性别.语句: select sc.sno,sname, course.Cno,Cname,Grade,Sex

  • sql语句将数据库一条数据通过分隔符切割成多列方法实例

    目录 需求场景 应对措施 效果展示 具体代码 总结 sql语句,将数据库一条数据通过分隔符切割成多列 需求场景应对措施效果展示具体代码 需求场景 在实际场景之中,我们有时候会遇到一种情况,就是数据库中某一字段存了很长的一段字符串,里面用了分隔符进行分割,但是很不直观,你想查一下数据库把这个字段下的数据,按分隔符切割出来,并划分到下面几列上面,但又苦于只能写sql.这种情况下应该怎么办呢. 应对措施 首先这种情况下,sql是可以完全满足需求的.sql在代码中不仅可以用curd,更可以对数据的查询做

  • 用SQL语句查询数据库中某一字段下相同值的记录方法

    今天接到一任务,有一张学生信息表(Excel表),里面有一万多条记录,现在要把这张表导入到数据库中,并设置学生学号为主键,但是现在这张表中的学生学号有重复的记录,我必须先找出这些重复的记录,然后再进行筛选,经过研究问题终于得到解决.      以上问题实际上就是查询数据库表中某一字段值重复的记录,这里省略如何将Excel表导入到数据库步骤,只讨论用SQL查询数据库中某一字段下相同值的记录方法. 现在假设数据库表名为student,里面有字段Sno(学号),ID(身份证),这里提供两种查询的方法:

  • sql 语句 取数据库服务器上所有数据库的名字

    --取得所有数据库名 包括系统数据库 --SELECT name FROM master.dbo.sysdatabases --取得所有非系统数据库名 --select [name] from master.dbo.sysdatabases where DBId>6 Order By [Name] --取所有信息,包括数据库文件地址 --select * from master.dbo.sysdatabases where DBId>6 Order By [Name]

  • SQL语句查询数据库中重复记录的个数

    复制代码 代码如下: select a,b,c,count(*) from (select c.a,c.b,c.c from test c) having count(*) >= 2 group by a,b,c 或者 复制代码 代码如下: select zdbh,tdzl,zdmj,count(*) from ecaadmin.zdsx group by zdbh,tdzl,zdmj having count(*) >= 2

  • 通过SQL语句来备份,还原数据库

    eg: 复制代码 代码如下: /* 通过SQL 语句备份数据库 */ BACKUP DATABASE mydb TO DISK ='C:\DBBACK\mydb.BAK' --这里指定需要备份数据库的路径和文件名,注意:路径的文件夹是必须已经创建的.文件名可以使用日期来标示 /* 通过SQL语句还原数据库 */ USE master RESTORE DATABASE mydb FROM DISK='C:\DBBACK\mydb.BAK' WITH REPLACE 注意:很多时候不能直接还原,因为

随机推荐