数据库
格里芬阀门工
这个作者很懒,什么都没留下…
展开
-
游标
意义 个人理解是,游标能依次获得一个表的所有项,每次检查一项。利用游标,就不需要自己费时费力地一个个检查,就能快速检查表内是否有问题或者及时更新数据 语法 declare 游标名 cursor for select语句 open 游标名 fetch 游标名 into 变量 嵌入式sql语句 close 游标名 dellocate 游标名 end 解释 第二行的select语句,是声明游标的内容。游标可以粗暴的理解为最多只有一行的视图,类容就是select查询得到的。原创 2020-07-17 11:32:02 · 96 阅读 · 0 评论 -
事务/过程
语法 create or alter procedure 事务名 as 参数 begin 事务体 end 举例 create or alter procedure calculate_s @a int @b int begin if (@b>60) update student set status='Y' where no=@a else update student set status='N' where no=@a end calculate_s 1原创 2020-07-17 11:31:26 · 145 阅读 · 0 评论 -
数据库基本概念
函数依赖 设R(U)是属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等而在Y上的属性值不相等,则称X函数确定Y或Y函数依赖于X,记作X->Y 大白话就是,X值相同时,该行(即该元组)的Y值必定相同,若对于同一个X,能对应不同的Y,那就不构成函数依赖 完全函数依赖 在R(U)中,如果X->Y,并且对于X的任何一个真子集X',都不存在X'->Y,则称Y对于X完全函数依赖,记作X->Y(横杠上写一原创 2020-07-17 11:30:51 · 310 阅读 · 0 评论 -
范式
一范式 如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。 简单的说,就是每一个列(属性),不能再分割成多个列(属性) 二范式 一范式的基础上,一个关系模式R中每一个非主属性完全函数依赖于任何一个候选码,则R属于二范式 即不能存在部分函数依赖 三范式 一范式的基础上,关系模式R中不存在这样的码X,属性组Yuiji非主属性Z,使得X->Y,Y->Z成立,且Y不能函数确定X,则称R属于三范式 废话那么多,说白了就是不能存在传递依赖。另外原创 2020-07-17 11:29:19 · 121 阅读 · 0 评论 -
排序显示查找结果
在查询语句的最后加上order by 列名,就会按照这个列排序,默认升序 如果要规定升序,则在列名后面加上ASC。若要规定降序,则加上DESC 同时,order by后面可以有不止一个列,则先按前面的列排序,前面一列的值相同时按后面的列排序 例,有一个表为SG,内容如下 name grade NO 张 99 4 刘 98 5 李 99 3 select name from SG order by grade DESC,NO原创 2020-06-20 22:14:51 · 84 阅读 · 0 评论 -
通配符/模糊查找
假如查询时,不确定所要查的属性的具体值,可以加通配符进行模糊查找。 通配符一般用 '_'和'%' '_'能且只能取代一个字符 '%'则更灵活,可以取代一个,也可以取代多个,甚至可以不取代 如 select name from table1 where name like '刘%' 则查询效果为找到所有姓刘的人的名字。名字可能是两字,三字,四字,也可能只有一个刘字放在表内。但假如把'%'换成下划线,则只寻找姓刘且名字为两个字的人 ...原创 2020-06-20 22:13:13 · 596 阅读 · 0 评论 -
sql函数
sql内有一些函数,如count(*) count() avg() sum() 除了第一个内部有*,其余每一个都要根据实际情况往里面放列名。这些函数基本都紧跟在在select后面,然后用as给他们赋列名,如select count(*) as sum from table1,那么就只显示一列,列名为sum,值为table1中行的数目 count(*) 上面说了,统计行数,一般可以理解为统计主键数 count() 统计列的有效数。这里和count(*)不同的一点是,count(*原创 2020-06-20 22:12:38 · 147 阅读 · 0 评论 -
视图
基本语法 create 视图名 as select 列名(或虚拟列) from 表名 where 条件 with check point 解释 列可以有多个,而虚拟列是指进行一些运算,比如:2014-age,假如今年是2014年,那么底下算出来的数字就是出生年份 表可以有多个表,这也是视图的意义之一,可以封装要经常一起查看的来自不同表的信息 where以及底下的with可有可无,假如有的话,不满足条件的项就永远无法出现在视图里。加上with check point,那么原创 2020-06-20 22:11:20 · 81 阅读 · 0 评论 -
触发器
意义 在设计不太好的表内,一个数据的修改可能会影响其他项。比如把学号,系,系主任名字放在一个表内,转专业时,系要改,系主任名字也要改,假如修改时疏忽,就会造成错误。即使一个表满足高级的范式,也有可能会上面这种情况。比如,三门成绩和总成绩放在一个表内,修改一门成绩势必影响总成绩。 这时,可以设置触发器,在某个数据修改删除或插入后根据预设的方法修改某个特定值,使内容完整正确。 语法 create trigger 触发器名 on 表名 [before|after] 事件名 referenc原创 2020-06-20 22:04:46 · 89 阅读 · 0 评论