必须会的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_表名_列
相关推荐
-
数据库高并发情况下重复值写入的避免 字段组合约束
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 注意:很多时候不能直接还原,因为
随机推荐
- jQuery文本框得到与失去焦点动态改变样式效果
- Java拆装箱深度剖析
- java struts2学习笔记之线程安全
- Python中Django发送带图片和附件的邮件
- Python中取整的几种方法小结
- Asp.net "对路径的访问被拒绝" 解决方法的分析
- ASP.NET在IIS上注册报0x800702e4错误解决方法
- asp.net 计划任务管理程序实现,多线程任务加载
- javascript中利用柯里化函数实现bind方法
- php根据年月获取季度的方法
- Python中无限元素列表的实现方法
- ASP运行出错:缺少对象: 'xmlDoc.documentElement'错误解决方法
- 详解web存储中的storage
- 详解Android自定义控件属性TypedArray以及attrs
- C语言中的函数指针基础学习教程
- 分页存储过程(三)在sqlserver中打造更加准确的分页结果
- 微信端开发--登录小程序步骤
- 详解CentOS7安装配置Apache HTTP Server
- 详解centos7虚拟机安装elasticsearch5.0.x-安装篇
- 详解Spring中的JavaConfig注解