
数据库
非常基础的知识,汇总
Jaihk662
这个作者很懒,什么都没留下…
展开
-
结果计算与聚集计算
注:所有的下划线+斜体语句都是非必须语句结果计算:SQL语句:Select 表达式, … from… where…其中表达式中的值都是列名/常数示例①:表如下:执行语句:select 100-Score as Sccc from sc,得到当然这个列只是计算出来的,并不会加入原本的table中示例②:求有差额(差额>0)的任意两位教师的薪水差额Select T1.Tname as TR1...原创 2018-04-30 17:51:16 · 852 阅读 · 0 评论 -
关系运算总结
三种关系运算:关系代数:以集合为对象的操作思维,由集合到集合的变换元组演算:以元组为对象的操作思维,取出关系的每一个元组进行验证,有一个元组变量则可能需要一个循环,多个元组变量则需要多个循环域演算:以域变量为对象的操作思维,取出域的每一个变量进行验 证看其是否满足条件性质:三种运算之间是等价的,即一种形式的表达式可以被等价地转换为另一种形式非过程性:域演算>元组演算>关系代数(好→差)...原创 2018-04-25 18:11:42 · 1056 阅读 · 0 评论 -
数据库完整型概念与完整性约束
什么是数据库完整性(DB Integrity):数据库完整性是指DBMS应保证的DB的一种特性:在任何情况下的正确性、有效性和一致性广义完整性:语义完整性、并发控制、安全控制、DB故障恢复等狭义完整性:专指语义完整性,DBMS通常有专门的完整性管理机制与程序来处理语义完整性问题为什么会引发数据库完整性的问题呢?不正当的数据库操作,如输入错误、操作失误、程序处理失误等防止和避免数据库中不合理数据的出...原创 2018-05-03 23:34:31 · 1654 阅读 · 0 评论 -
利用SQL语言实现数据库的静态完整性
注:所有的下划线+斜体语句都是非必须语句静态约束:数据集合(O):列或者表谓词条件(P):需要定义触发条件(A):更新时检查(默认)响应动作(R):拒绝(默认)Col_constr 列约束/table_constr 表约束:创建表时增加约束:Create table 表名(列名1 not null unique 或 primary key 或 check (表达式) 或 ( references ...原创 2018-05-04 15:27:37 · 581 阅读 · 0 评论 -
SQL语言概述、MySQL Workbench安装
SQL语言概述:SQL语言是集DDL、DML和DCL于一体的数据库语言有交互式SQL → 嵌入式SQL → 动态SQL等SQL语言主要由以下9个单词引导的操作语句来构成,每一种语句都能表达复杂的操作请求DDL(数据定义语言)引导词:Create、Alter(修改)、Drop(撤销)模式的定义和删除,包括定义Database、Table,、View、Index、完整性约束条件等包括定义对象(...原创 2018-04-26 17:17:03 · 542 阅读 · 1 评论 -
利用SQL建立数据库
注:所有的下划线+斜体语句都是非必须语句数据库(Database)的创建:数据库是若干具有相互关联关系的Table/Relation的集合数据库可以看作是一个集中存放若干Table的大型文件SQL语句:create database 数据库名;注意SQL对大小写不敏感表(Table)的创建:SQL语句:Create table 表名(列名 数据类型 约束语句1, 列名 数据类型 约束语句...原创 2018-04-26 19:09:19 · 843 阅读 · 0 评论 -
Mysql触发器与动态完整性
注:所有的下划线+斜体语句都是非必须语句所有的大括号和"/"只是为了区分,并不属于sql语句什么是触发器(Trigger):如果想要在某些语句在事件发生前/后自动执行,那么就需要触发器,例如学生每选一门课,就让该同学选修课程的门数+1,或者在更新员工工资之前检查该员工工资是否仍然是最高工资等等,换句话说:Trigger是一种过程完整性约束 ( 相比之下,Create Table 中定义的都是非过程...原创 2018-05-06 16:58:29 · 999 阅读 · 0 评论 -
SQL基本查询
注:所有的下划线+斜体语句都是非必须语句Select简单语法:SQL语句:Select 用逗号隔开的一排列名From 表名Where 检索条件例如:检索教师表中所有工资少于1500元或者工资大于2000元,并且是03系的教师姓名:Select TnameFrom TeacherWhere(Salary<1500 or Salary>2000) and D#='03';如果投影...原创 2018-04-28 15:19:48 · 472 阅读 · 0 评论 -
SQL多表联合查询
注:所有的下划线+斜体语句都是非必须语句多表联合检索:SQL语句:Select 用逗号隔开的一排列名From 表名1,表名2, …Where 检索条件+连接条件相当于语句如果没有检索条件+连接条件,同理于笛卡尔积θ连接之等值连接:例如:按"001"号课成绩由高到低顺序显示所有学生的姓名(二表连接)Select Sname From Student, SCWhere Student.S# =...原创 2018-04-28 17:11:08 · 8866 阅读 · 0 评论 -
SQL的简单增、删、改
注:所有的下划线+斜体语句都是非必须语句元组新增Insert:单组新增SQL语句:Insert Into 表名(列名1, 列名2, ……)Values(值1, 值2, ……);批数据新增SQL语句:Insert Into 表名(列名1, 列名2, ……)子查询;其中子查询即Select-from-where语句例子:新建Table:SCt(S#, C#, Score),将检索到的成绩及格同...原创 2018-04-28 18:52:18 · 716 阅读 · 0 评论 -
数据库安全性概念与自主安全性机制
数据库安全性:DBMS应该保证的数据库的一种特性,通过一定的机制和手段免受非法、非授权用户的使用、泄露、更改或破坏数据的安全级别:绝密(Top Secret),机密(Secret),可信(confidential),无分类(unclassifed)数据库系统DBS的安全级别:物理控制、网络控制、操作系统控制、DBMS控制DBMS的安全机制:①自主安全性机制:存取控制(Access Control)...原创 2018-05-07 15:51:51 · 3373 阅读 · 0 评论 -
Mysql用户权限管理:Grank和Revoke
注:所有的下划线+斜体语句都是非必须语句所有的大括号和"/"只是为了区分,并不属于sql语句SQL语言的用户与权利:SQL语言包含了DDL、DML和DCL,数据库安全性控制是属于DCL范畴关系级别(不同用户)→ 账户级别(程序员用户)→ 超级用户(DBA)按等级划分:等级1:只读等级2:更新(Insert、Update、delete等对元组的操作)等级3:创建(Create、Alter、Drop即...原创 2018-05-07 16:36:36 · 2298 阅读 · 0 评论 -
利用SQL语言修正与撤销数据库
注:所有的下划线+斜体语句都是非必须语句修正数据库:修正数据库的定义,主要是修正表的定义修正基本表的定义:alter table 表名add 一排列名+属性 #增加新列drop 完整性约束名(列名)…… #删除指定列的完整性约束modify 一排列名+属性 #修改原有列的属性例如:...原创 2018-04-29 15:01:29 · 1093 阅读 · 0 评论 -
MySQL Workbench 使用 (3):数据库备份与恢复
步骤1:红色方框中上面那个就是数据库的备份,下面的是数据库的恢复/导入步骤2(数据库的备份):①处:选择你要备份的Table②处:选择你的备份路径③处:开始备份步骤3(数据库的导入/恢复):①处:选择你要导入的Table所在路径②处:选择你要导入的Table③处:开始导入注意:假设你想导入数据库"stc"中的Table,那么你必须先拥有数据库"stc"(没有就创建一个)...原创 2018-04-29 16:04:06 · 975 阅读 · 0 评论 -
IN子查询
注:所有的下划线+斜体语句都是非必须语句子查询:出现在Where子句中的Select语句被称为子查询(subquery) 子查询返回了一个集合,可以通过与这个集合的比较来确定另一个查询集合相当于嵌套查询SQL语句:表达式 not in (子查询)注意:子查询中当然只能映射一个列!不然无法作为一个"值"参与运算例子:①列出张三、王三同学的所有信息Select * From StudentWhere...原创 2018-04-29 17:11:28 · 4338 阅读 · 1 评论 -
θ Some 与 θ All 子查询
前置:https://blog.youkuaiyun.com/jaihk662/article/details/80144010注:所有的下划线+斜体语句都是非必须语句为什么需要子查询?现实中,很多情况需要进行下述条件的判断集合成员资格:某一元素是否是某一个集合的成员集合之间的比较:某一个集合是否包含另一个集合集合基数的测试:测试集合是否为空、测试集合是否存在重复元组θ some 子查询:SQL语句:表达式 ...原创 2018-04-29 18:55:32 · 432 阅读 · 0 评论 -
[not] exists 和 in
前置:https://blog.youkuaiyun.com/Jaihk662/article/details/80144010注:所有的下划线+斜体语句都是非必须语句在提到exist之前,先再看看 in 语句:现有两张表:第一张是学生信息(infer),第二张是学生选课及成绩(sc)执行语句如下:select * from inferwhere st in (select st from sc ...原创 2018-04-30 02:37:49 · 251 阅读 · 0 评论 -
用QBE语言实现关系代数
前置:https://blog.youkuaiyun.com/jaihk662/article/details/80081717① T = R∪S② T = R – S③ T = R×S④ 投影其中"i1, i2, …, im"表示一个下标序列⑤ 元组选择其中Condition Box中存储着选择运算中的选择公式...原创 2018-04-25 17:48:59 · 2865 阅读 · 2 评论 -
基于关系域演算的QBE语言
QBE(Query By Example)简介:操作独特,基于屏幕表格的查询语言,不用书写复杂的公式,只需将条件填在表格中即可是一种高度非过程化的查询语言特别适合于终端用户的使用QBE界面:关系名:填入要查询的关系表格属性名:用于显示对应关系名区关系的所有属性名操作命令区:用于书写查询操作的命令Print 或 P. → 显示输出操作Delete 或 D. → 删除操作Ins...原创 2018-04-25 17:35:17 · 7289 阅读 · 0 评论 -
分组聚集与分组过滤
前置:https://blog.youkuaiyun.com/Jaihk662/article/details/80150754注:所有的下划线+斜体语句都是非必须语句分组查询:SQL语句:Select… from… where…Group by 分组条件应用场景:如上表,你可以用Ave()求出所有成绩的平均,那么如何求出每个同学的平均分呢?语句与结果如下:select st, avg(score) fr...原创 2018-04-30 18:56:39 · 990 阅读 · 0 评论 -
数据库、数据库系统、数据库管理系统
数据库(DB):按照数据结构来组织、存储和管理数据的仓库相互有关联关系的若干"table"的集合"table"例子如下:数据库管理系统(DBMS):一种操纵和管理数据库的软件,用于建立、使用和维护数据库它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作它可使多个应用程序和用户用不同的方法在同时或不同时刻去建...原创 2018-04-23 20:03:33 · 5269 阅读 · 0 评论 -
用SQL表达并交差操作
注:所有的下划线+斜体语句都是非必须语句SQL语句:Select… From… Where…并运算(union) / 交运算(intersect) / 差运算(except) allSelect… From… Where… 文字描述:假设第一个子查询(S-F-W)得到的元组编号是①②⑤,第二个子查询(S-F-W)得到的元组编号是①②④那么union运算得出的元组就为①②④⑤,inter...原创 2018-04-30 22:32:51 · 1260 阅读 · 0 评论 -
数据库系统标准结构
模式与视图:模式:对数据库中数据所进行的一个结构性的描述视图:某一种表现形式下表现出来的数据库中的数据(例如信息表格)DBMS管理数据的三个层次:外部层次(用户层次) :某一个用户能够看到与处理的数据全局数据的某一个部分:全局层次,概念层次,逻辑层次(全局角度理解/管理的数据,含相应的关联约束)内部层次/物理层次:存储在介质上的数据,存储方式,索引方式,存储路径等三级模式:外模式(用户模式):某一...原创 2018-04-23 23:01:40 · 1514 阅读 · 0 评论 -
SQL处理空值
注:所有的下划线+斜体语句都是非必须语句SQL语句:Select… From… Where 列名 is not null…注意不允许"=null"现行DBMS的空值处理小结:除了is not null之外,空值不满足任何查找条件如果null参与算术运算,则该算术表达式的值为null如果null参与比较运算,则结果可视为0(在SQL-92中可看成unknown)如果null参与聚集运算,则除co...原创 2018-05-01 13:20:13 · 1193 阅读 · 0 评论 -
用SQL表达内连接和外链接
前置:https://blog.youkuaiyun.com/jaihk662/article/details/80072281https://blog.youkuaiyun.com/jaihk662/article/details/80136375注:所有的下划线+斜体语句都是非必须语句左外连接:SQL语句:select… from 表1 natural left outer join 表2on 连接条件 或 us...原创 2018-05-01 17:02:43 · 375 阅读 · 0 评论 -
关系的基本概念
表(Table):例子如下域(Domain):一组值的集合例如整数的集合,学生的集合等,集合中元素的个数称为域的基数上图中D2 = 女人集合 = {王芳,刘玉}一组域的笛卡尔积为所有可能的组合,例如图片中的笛卡尔积如下:笛卡尔积中的每个元素(d1, d2, …)称作一个n-元组,其中任意一个di叫做一个分量关系:一组域D1, D2, …, Dn的笛卡尔积的子集笛卡尔积中具有某一方面意义的那些元组被...原创 2018-04-24 16:31:38 · 1780 阅读 · 0 评论 -
候选码与外码
前置:https://blog.youkuaiyun.com/jaihk662/article/details/80066225候选码:关系中的一个属性组它可以唯一标识一个元组若从该属性组中去掉任意一个属性,他就不具备上一个性质例如性别年龄无法区分学生,但学号可以,因为每个学生学号一定互不相同,那么学号就单独作为一个候选码除此之外,名字不可以作为候选码,因为可能重名,但是名字+地址就可以了,因为这样就不可能重...原创 2018-04-24 17:01:27 · 16264 阅读 · 2 评论 -
关系代数与并相容性
关系代数:提供了一系列的关系代数操作关系代数操作以一个或多个关系为输入,结果是一个新的关系用对关系的运算来表达查询,需要指明所用操作,具有一定的过程性,例子如下并相容性:参与运算的两个关系及其相关属性之间有一定的对应性、可比性或意义关联性某些关系代数操作,如并、差、交等,需满足“并相容性"具体定义如下:关系R和关系S的属性数目必须相同对于任意i,关系R的第i个属性的域必须和关系S的第i个属性的域相...原创 2018-04-24 18:21:06 · 6059 阅读 · 0 评论 -
并操作、差操作、广义积操作
前置:https://blog.youkuaiyun.com/jaihk662/article/details/80068379并操作:对于关系R(参加体育队的学生),S(参加文艺队的学生)那么R∪S = (参加体育队或者文艺队的学生)差操作:对于关系R(大四学生),S(参加文艺队的学生)那么R-S = (大四不参加文艺队的学生)S-R = (参加文艺队的非大四学生)广义笛卡尔积:性质:R×S = S×R两个...原创 2018-04-24 19:23:43 · 2732 阅读 · 0 评论 -
θ连接、自然连接、更名操作
θ(theta)连接:情景:你有两张表①学生(学号,姓名,性别,班级,年级);②成绩(学号,算法成绩,C++成绩)你需要得到一个姓名+算法成绩的表,那么就需要连接操作数学描述:文字描述:关系R和关系S的笛卡尔积中,满足AθB条件的所有元组(A∈R,B∈S且具有可比性)(DBMS可以直接进行连接操作,而不用先求笛卡尔积)更名操作:θ连接操作会遇到特殊情况:自己和自己连接这个时候为了避免重名,需要进行...原创 2018-04-24 20:44:11 · 11221 阅读 · 2 评论 -
关系代数操作应用、关系元组运算应用
书写关系代数表达式的基本思路:检索是否涉及多个表,如不涉及,则可直接采用并、差、交、选择与投影,只要注意条件书写正确与否即可如涉及多个表,则检查:能否使用自然连接,将多个表连接起来如不能,能否使用等值或不等值连接还不行,使用广义笛卡尔积相关条件的书写连接完后,可以继续使用选择、投影等运算例子:①查询课程号001和002都学的学生的学号②查询不学习课程号为002的学生姓名和年龄关系元组运算应用:例子...原创 2018-04-24 22:21:32 · 3227 阅读 · 0 评论 -
选择操作、投影操作、交操作
前置:https://blog.youkuaiyun.com/jaihk662/article/details/80068379选择操作(σ):常用运算符及优先级:θ(≥, ≤, >, <, =, ≠) > ~ > ∧ > ∨(比较运算符>非运算>且运算>或运算)投影操作(π):交运算:对于关系R(参加体育队的学生),S(参加文艺队的学生)那么R ∩ S = (同时...原创 2018-04-24 20:06:40 · 5842 阅读 · 0 评论 -
除操作、外链接
除操作:数学描述:文字描述:设关系R(<a1,a2,…,an>)和关系S(<b1,b2,…,bm>)那么 R÷S 结果关系为元组<c1,c2,…,ck>的集合,其中元组<c1,c2,…,ck>满足下述条件:它与S中任意一个元组"b1,b2,…,bm"组合形成的一个新元组都一定是R中的某一元组例子如下:外链接(Outer Join):应用场景如上:在经...原创 2018-04-24 23:32:48 · 348 阅读 · 0 评论 -
SQL视图
注:所有的下划线+斜体语句都是非必须语句什么是视图:虚拟的表,表中的数据经过某种筛选后的显示方式,基本表数据发生了改变,视图也会跟着改变基本表是实际存储于存储文件中的表,基本表中的数据是需要存储的,而视图在SQL中只存储其由基本表导出视图所需要的公式,即由基本表产生视图的映像信息,其数据并不存储,而是在运行过程中动态产生与维护的一般使用视图还可以简化SQL操作,保护数据(只显示部分数据),对不同用...原创 2018-05-02 19:45:11 · 447 阅读 · 0 评论 -
域运算
既然有元组运算(一行一行判断)那么当然也有域运算(一列一列判断)域运算与元组运算的差别:元组运算的基本形式:{ t | P(t) }域运算的基本形式:{ <x1, x2, …, xn> | P(x1, x2, …, xn) }元组演算是以元组为变量,以元组为基本处理单位,先找到元组,然后再找到元组分量,进行谓词判断域演算是以域变量为基本处理单位,先有域变量,然后再判断由这些域变量组成的...原创 2018-04-25 16:26:50 · 1492 阅读 · 0 评论 -
教程:Visual Studio 连接 MySQL 数据库(包含常见错误及解决方法)
步骤①:确保 VS2012 和 Mysql 软件能正常运行VS2015/VS2010等其它版本应该都行,Mysql也是步骤②:添加<mysql.h>头文件到VS库之后添加包含目录如下一般的mysql都默认在C://program files里面,之后按照图中的路径选择mysql.h所在的文件夹即可,下同步骤③:添加库文件"libmysql.lib"步骤④:其实到这里就搞定了,不过还需要...原创 2018-05-08 20:03:14 · 25373 阅读 · 2 评论