关于SQL语句的一些细节

一、插入insert

1、主键对数据插入的影响
        主键是在同一张表中必须是唯一的, 如果在进行数据插入的时候指定的主键与表中已有
的数据重复的话则会导致违反主键约束的异常。

2、外键对数据插入的影响
外键是指向另一个表中已有数据的约束, 因此外键值必须是在目标表中存在的。 如果插
入的数据在目标表中不存在的话则会导致违反外键约束异常。

二、update更新:

1、非空约束对数据更新的影响
正如 “非空约束” 表达的意思, 如果对一个字段添加了非空约束, 那么我们是不能将这
个字段中的值更新为 NULL 的。

2、主键对数据更新的影响
主键是在同一张表中必须是唯一的, 如果在进行数据更新的时候指定的主键与表中已有
的数据重复的话则会导致违反主键约束的异常。

3、外键对数据更新的影响
外键是指向另一个表中已有数据的约束, 因此外键值必须是在目标表中存在的。 如果更
新后的数据在目标表中不存在的话则会导致违反外键约束异常。

三、检索

1、count(*) 和count(字段) 不相同

如果某字段为NULL,count 该列不会将空字段算入其中

时间: 2024-11-04 23:27:07

关于SQL语句的一些细节的相关文章

细心!SQL语句进行运算时使用字符串时缺失精度的细节!

昨天没有更新,特此来说明下原因,昨天回到家时已经甚晚,正逢公司这几天项目比较紧张(bug多,赶需求,看着bug单齐刷刷的转过来,心都颤抖了一下),没有及时准备素材,今天又加了一天班(现在还在公司,偷个空隙赶紧发博,哈哈哈),所以昨晚没有更博. 今天在改bug的时候发现了如图的小问题,来分享一下,主要还是要细心. 我们有一个页面,需要输入数字传入后台,然后进行相关的运算,再通过运算后的数进行查询,我们页面输入值传入后台的是String类型的,进行运算后得出一个缺失精度的值,而我们用来查询时把这个数

写sql语句连接的时候注意的一个小细节

我在写权限的查询的时候,用到了sql语句的链接写一下出错的时候的代码 $sqlpid="select auth_name from sw_auth where auth_level=0"; if(session('mg_id')!=5){ $sqlpid.="and auth_id in ($ids)"; } show($sqlpid); 出错的截图 根据图中的输出就能知道出错的原因了了,sql语句没写对 正确的代码 $sqlpid="select aut

【sql语句】好用的sql语句之项目数据库学习总结

转载请注明出处:http://blog.csdn.net/pearyangyang/article/details/41115491 这几天学习公司系统的数据流向.主要涉及到几个表的数据. 可是表中的数据有上百万条,所以假设出现sql语句没有带条件的.会导致查询卡死,甚至出现内存溢出的情况. 公司用到的数据库是sqlserver.所下面列的sql语句主要是针对sqlserver数据库的,其它数据库大同小异. 1.当我要熟悉数据库表结构的时候.我须要运行一个语句.这条语句可以查看数据库的非常多信息

【sql语句】好用的sql语句—适合自己熟悉陌生的数据库

这几天学习公司系统的数据流向.主要涉及到几个表的数据.但是表中的数据有上百万条,所以如果出现sql语句没有带条件的,会导致查询卡死,甚至出现内存溢出的情况.公司用到的数据库是sqlserver,所以下列的sql语句主要是针对sqlserver数据库的,其他数据库大同小异. 1.当我要熟悉数据库表结构的时候,我需要执行一个语句,这条语句能够查看数据库的很多信息,如列名,字段名,字段大小,字段类型等等....... select * from information_schema.columns w

MyBatis学习(二)、SQL语句映射文件(2)增删改查、参数、缓存

二.SQL语句映射文件(2)增删改查.参数.缓存 2.2 select 一个select 元素非常简单.例如: Xml代码   <!-- 查询学生,根据id --> <select id="getStudent" parameterType="String" resultMap="studentResultMap"> SELECT ST.STUDENT_ID, ST.STUDENT_NAME, ST.STUDENT_SEX

MyBatis学习(三)、动态SQL语句

三.动态SQL语句 有些时候,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息.使用Oracle的序列.mysql的函数生成Id.这时我们可以使用动态sql. 下文均采用mysql语法和函数(例如字符串链接函数CONCAT). 3.1 selectKey 标签 在insert语句中,在Oracle经常使用序列.在MySQL中使用函数来自动生成插入表的主键,而且需要方法能返回这个生成主键.使

《懒人Shell脚本》之六——一键构造待采集批量sql语句

1.需求 采集任务构造入库.实现200多个网站的标题.时间.内容等信息的采集信息配置,并插入mysql中. 2.实现步骤 步骤1:人工实现Excel表格配置. 定义好唯一索引,如第一列的序号.好处: 1)序号可以成为mysql中的索引. 2)序号规定后,可以实现分布式,1个人4个小时.真正可以实现4个人1小时完成任务.(真正的分布式) 这点,非常重要. 关于索引,实践表明,对于每个网站入口唯一值的定义unique索引,能更进一步防止冲突,确保唯一. 步骤2:将表格存入到txt中. 在linux环

mysql与oracle在groupby语句上的细节差异

前言 之所以去纠那么细节的问题,是因为之前有过一个这样的场景: 有个同学,给了一条数据库的语句给我,问,为啥这样子的语句在oracle语句下执行不了. select * from xx where xxx is not null group by yy; 拿到这条语句的第一时间,其实,我也并没有看出是什么错.仔细一想之后才想起,在基础的SQL中包含该group by的select语句,select语句部分是有限制的,一般是聚合函数和group by 的字段.随后,我就告诉他,这条语句本身是有错的

LINQ to SQL语句入门篇 纯属转载

Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形式.关系条件形式.First()形式.下面分别用实例举例下: 1.简单形式: 例如:使用where筛选在伦敦的客户 var q = from c in db.Customers where c.City == "London" select c; 再如:筛选1994 年或之后雇用的雇员: