易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL——数据完整性


一.数据完整性
     就是为了防止数据库中存在不符合语义规定的数据,和防止因输入输出错误而造成的无效操作或者错误信息而提出的,制定的一些对元组、属性和域的一些约束和规定。
     解决办法由:规则,默认值,约束和触发器等。
二.约束
    用于增强数据完整性,防止合法用户使用数据库时,想数据库中添加不符合语义的数据。约束分为三种:与表有关的约束,域约束,断言约束。
   。与表有关的约束:行约束,列约束。
   。域约束:在域定义中被定义的,并且与在域中定义的任何列都有关系的一种约束。
   。.断言约束:在断言定义时定义的一种约束,可以与一个或者多个表有关。
下面是DEFAULT约束,CHECK约束,PRIMARYKEY约束,UNIQUE约束,FOREIGN KEY约束,NOU NULL约束,列约束,表约束。
1.DEFAULT约束
     主要就是针对表中的某个列,创建一个默认值,在用户插入值时,如果没有给定值,那就默认为此值。
    (1).创建数字类型的DEFAULT约束
     数字类型有:整数(bigint , int , smallint , tinyint),精确数字(decimal[p( , s)] , 
numeric[p( , s]),浮点数(float[(n)] , real),货币值(money , smallmoney)。
假设表goods,属性:gNO,gNAME,gCOUNT,gPRICE,gADDRESS,StartDate
现在为gCOUNT和gPRICE创建默认值:
ALTER TABLE goods ADD DEFAULT 0 FOR gCOUNT;
ALTER TABLE goods ADD DEFAULT 0 FOR gPRICE;
输入以下语句:INSERT INTO goods (gNO,gNAME,gADDRESS) VALUES('1001','毛巾','吉林长春','2010-1-20 15:25:30.120')。执行成功后,在擦看一下,你会发现结果中gCOUNT和gPRICE列的值为0。
注意:在执行插入语句时,一定要列出插入的列,要不然你会遇到插入数据列与表属性列不一致的错误。
    (2).设置DEFAULT日期型约束
     为goods表的货物到货日期StartDate设置默认值为系统当前日期。
     ALERT TABLE 


相关文档:

sql having 和where的区别

  最近在学习oracle的时候遇到一个问题,老是弄不清楚where 和having的区别,在网上查一查,感觉还可以,把以下我查的资料推荐给大家。
在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group&n ......

SQL子查询实例

子查询是在一个查询内的查询。子查询的结果被DBMS使用来决定包含这个子查询的高级查询的结果。在子查询的最简单的形式中,子查询呈现在另一条SQL语句的WHERE或HAVING子局内。 
    列出其销售目标超过各个销售人员定额综合的销售点。
SELECT CITY
from OFFICES
WHERE TARGET&nbs ......

SQl Cookbook学习笔记

1.select  * from A where a.a='a';
  执行顺序 先执行 from 在执行 where 中的东西 ,最后执行 select
2.列值连接 db2 oracle ||  , mysql concat(column1,'sss',column2) sqlServler使用+连接;
3. case when  表达式 then ''
           ......

SQL Group By Top 实现

DECLARE @temp TABLE(
id INT,
[name] VARCHAR(50),
class VARCHAR(50)
)
INSERT INTO @temp
SELECT 1,'a','A'
UNION ALL SELECT 2,'b','C'
UNION ALL SELECT 3,'c','B'
UNION ALL SELECT 4,'d','C'
UNION ALL SELECT 5,'e','B'
UNION ALL SELECT 6,'f','A'
SELECT * from @temp AS _temp WHERE [name] IN
( ......

sql语句优化原则

1.多where,少having
where用来过滤行,having用来过滤组
2.多union all,少union
union删除了重复的行,因此花费了一些时间
3.多Exists,少in
Exists只检查存在性,性能比in强很多,有些朋友不会用Exists,就举个例子
例,想要得到有电话号码的人的基本信息,table2有冗余信息
select * from table1;--(id,n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号