Mysql
学习笔记记录
名字真的很急用
“格拉条”阜阳乡镇街边的一种地道美食,每次回家都会来上一碗...老板多放辣椒多放醋呀...
展开
-
MySQL——一对多和多对多简单模型建表
一对多 和 多对多关系的建立创建班级表班级表和学生表是一对多关系。CREATE table sms_class(id int PRIMARY KEY auto_increment,name VARCHAR(20));– 创建学生信息表CREATE table sms_student(id int PRIMARY KEY auto_increment,name varchar(128),age int,class_id INT,CONSTRAINT fk_class_id F.原创 2021-09-21 17:56:47 · 1033 阅读 · 1 评论 -
MySQL——分组查询和分页查询
分组查询:group by格式:select 聚合函数(列名)from 表名[where条件] group by 列名 [having 条件];面试会问:where子句和having子句的区别?having子句:是对分组之后的结果进行筛选,即分组过后过滤数据,先分组,再过滤,having子句后面可以使用聚合函数。where子句:是对查询结果进行过滤分组,将不符合where条件的行数据进行去掉,即分组之前进行数据的过滤,先过滤,再分组,where子句后面不能使用聚合函数。DQL实现分页查询原创 2021-09-21 16:36:35 · 1350 阅读 · 1 评论 -
MySQL聚合函数会忽略NULL值这一行的问题解决
解决方法:ifnull(字段名,默认值)例如、我们查询学生的平均成绩select avg(ifnull(score,0)) from student;这样就不会忽略我们null值的哪一行,而是赋值一个默认值,需求才正确。原创 2021-09-21 15:44:39 · 471 阅读 · 1 评论 -
MySQL——用户管理
mysql默认使用的是root账户,超级管理员,拥有全部的无限权限创建用户create user '用户名'@'主机名' IDENTIFIED BY '密码'如何指定用户访问,那么主机名可以写用户的IP地址,如果任意的用户都可以登录那么主机名就用通配符%表示参数含义用户名创建的新用户的,登录名称主机名指定该用户在哪个主机上可以登录,本机登录localhost,如果想让该用户远程登录的话,通配符 %用户授权grant 权限1,权限2,权限3,...原创 2021-09-19 16:16:49 · 113 阅读 · 1 评论 -
MySQL——简单触发器的了解
什么是触发器?当我们执行一条SQL语句的时候,这条SQL语句的执行会自动的触发其他的SQL语句。触发器的四要素监视的地点(table)监视的事件(insert/update/delete)触发的时间(before/after)触发的事件(insert/update/delete)定义触发器的语法格式delimiter $ 定义触发器的结束符号create trigger 触发器的名称 定义触发器:在同一个数据库中,触发器的名字是唯一的before/after (insert/ upda原创 2021-09-19 15:59:21 · 134 阅读 · 1 评论 -
MySQL——存储过程
在我们的开发过程中,经常会遇到重复使用某一功能的情况,为此,MySQL引入了存储过程,存储过程就是一条或多条SQL语句的集合,当对数据库进行一系列复杂操作时,存储过程可以将这些复杂的操作封装成一个代码块,一便重复使用,大大减少了数据库开发人员的工作量,创建存储过程创建存储过程,需要使用CREATE PROCEDURE 语句,CREATE PROCEDURE sp_name(proc_parameter)routine_body上述语法中,create procedure 为用来创建存储过程的关键原创 2021-09-19 12:15:16 · 141 阅读 · 1 评论 -
MySQL——视图
1. 什么是视图?他也是数据库的一部分视图是一张虚拟表视图建立在已有表的基础上,这些原基础的视图被称为基表视图提供数据内容语句为select语句,可以将视图理解为存储起来的select语句视图向用户提供基表数据的另一种表现方式2. 视图的作用? 表权限控制的时候可以使用简化复杂的多表查询视图的概述:视图是一个或多个表中导出来的表,它是一种虚拟存在的表,并且表的结构和数据都依赖于基本表,通过视图不仅可以看到存放在基本表中的数据,并且还可以像操作基本表一样,对视图中存放的数据进行查询原创 2021-09-17 23:51:08 · 404 阅读 · 2 评论 -
mysql——索引
MySQL允许建立索引来加快数据表的查询和排序索引的概念:数据库中的索引好比新华字典的音序表,它对数据库表中的一列或多列的值进行排序后的一种结构,其作用就是提高表中数据的查询速度。普通索引:普通索引是由key或index定义的索引,它是MySQL中的基本索引类型,可以创建在任何数据类型中,其值是否唯一和非空由字段本身的约束条件所决定。主键索引:在我们添加主键的时候,就自带一个主键索引。唯一性索引:唯一性索引是由UNIQUE定义的索引,该索引所在的字段值必须是唯一的。全文索引:全文索引是由原创 2021-09-17 22:51:54 · 210 阅读 · 1 评论 -
MySQL多表查询练习题
一:准备数据#创建表及插入记录CREATE TABLE class ( cid int(11) NOT NULL AUTO_INCREMENT, caption varchar(32) NOT NULL, PRIMARY KEY (cid)) ENGINE=InnoDB CHARSET=utf8;INSERT INTO class VALUES(1, '三年二班'), (2, '三年三班'), (3, '一年二班'), (4, '二年九班');CREATE TABLE cou转载 2021-09-16 23:27:49 · 9470 阅读 · 6 评论 -
MySQL——多表操作
什么是外键:外键是指引用另一个表中的一列或多列,被引用的列应该具有主键约束或者唯一约束,外键用于建立和加强二个表数据之间的连接。为什么要使用外键:为了保证数据的完整性,避免产生垃圾数据和错误的数据。首先创建二个表,一个班级表,一个学生表,具体语句如下:create table grade( id int not NULL PRIMARY KEY, name VARCHAR(20));CREATE table student(sid int not NULL PRIMARY KEY,原创 2021-09-15 19:50:32 · 447 阅读 · 1 评论 -
MySQL——事务
事务什么是事务是由一条或者多条sql语句组成, 要么全部成功,要么全部失败(执行回滚)回滚(从哪来的回哪去)在事务运行的过程中发生了某个故障,事务便不再继续执行下去,系统对事物中数据所有已完成的操作全部撤销,滚回到开始时的状态CREATE TABLE zh( id INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(20), money DOUBLE )INSERT INTO zh VALUES(NULL,'原创 2021-09-14 22:37:13 · 102 阅读 · 2 评论 -
数据库-故障的种类
数据库系统中可能发生各种各样的故障,大侄可以分为一下几类。事务内部的故障事务内部的故障有的是可以通过事务程序本身发现的,有的是非预期的,不能由事务程序处理。如运算溢出,并发事务发生死锁而被选中撤销该事务,违反了某些完整性限制而被终止等。事务故障意味着事务没有达到预期的终点,因此数据库可能处于不正确的状态,恢复程序要在不影响其他事务运行的情况下,强行回滚该事务,即撤销该事务已经作出的任何对数据库的修改,使得该事务好像根本没有启动一下,这类恢复操作称为事务撤销系统故障系统故障是指造成系统停在运作的任原创 2021-04-08 21:42:15 · 2740 阅读 · 2 评论 -
数据库-多值依赖
多值依赖例如:学校中某一门课程由多个教师讲授,他们使用相同的一套参考书。每个教师可以讲述多门课程,没种参考书可以提供多门课程使用。教师t课程c参考书b如果对此规范化的二维表进行增删改很不方便,数据的冗余也十分的明显,仔细思考这类关系模式,发现它具有一种称为多值依赖的数据依赖。设R(U)是属性集U上的一个关系模式,X,Y,Z是U的子集,并且z=U-x-y。关系模式R(U)中的多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关原创 2021-03-29 19:54:43 · 1064 阅读 · 2 评论 -
数据库之Group By子句
数据库之GROUP BY子句group by字句将查询结果按某一列或多列的值分组,值相等的为一组。对查询结果分组的目的是为了细化聚集函数的作用对象。如果未对查询结果分组,聚集函数讲作用于整个查询结果。分组后聚集函数将作用于每一个组,即每一组都有一个函数值。例如:求各个课程号及相应的选课人数select con,count(son)from scgroup by con;该语句对查询结果按con的值分组,所有具有相同con的值的元组为一组,然后对每一个组作用聚集函数count进行计算,以求该组原创 2021-03-23 15:57:03 · 339 阅读 · 1 评论 -
数据库关于删除的操作
数据库关于删除的操作1:删除模式在sql中,删除模式语句如下:drop schema 模式名 <cascade|restrict>;其中cascade和restrict二者必选其一,选择了cascade(级联),表示在删除模式的同时把该模式中所有的数据库对象删除;选择了restrict(限制),表示如果该模式中已经定义了下属的数据库对象(如表,视图等),则拒绝该删除语句的执行。只有当该模式中没有任何下属的对象时才能执行drop schema语句。2:索引的删除drop index 索原创 2021-03-23 19:46:40 · 1139 阅读 · 1 评论 -
并发控制
数据库系统原创 2021-04-09 10:50:37 · 448 阅读 · 3 评论 -
数据库之审计
数据库之审计因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃,破坏数据的人总是想方设法打破控制,审计功能把用户对数据库的所有操作自动记录下来放入审计日记(audit log)中,审计员可以利用审计日志监控数据库的各种行为,重现导致数据库现状的一系列事件,找出非法存取数据的人,时间和内容等。1.审计事件服务器事件:审计数据库服务器发生的事件,包含数据库服务器的启动,停在,数据库服务器配置文件的重新加载。系统权限:对系统用有的结构或模式对象进行操作的审计,要求该操作的权限是通过系统权限获得的。语句原创 2021-03-24 15:53:15 · 675 阅读 · 2 评论 -
数据库-触发器
触发器是用户定义在关系表上的一类由事件驱动的特殊过程。一旦定义,触发器就被保存在数据库服务器中。任何用户对表的增,删,改操作均由服务器自动激活相应的触发器,在关系数据库管理系统核心层进行集中的完整性控制。定义触发器触发器又叫做事件-条件-动作规则,当特定的系统事件发生时,对规则的条件进行检查,如果条件成立则执行规则中的动作,否则不执行该动作。SQL使用create trigger命令建立触发器,其一般格式为:create trigger <触发器名>{before|after}<原创 2021-03-28 15:27:17 · 708 阅读 · 2 评论 -
数据库编程
嵌入式SQL语句与主语言之间的通信将SQL嵌入到高级语言中混合编程,SQL语句负责操纵数据库,高级语言语句负责控制逻辑流程,这时程序中含有二种不同的计算模式语句,他们之间如何通信呢?数据库工作单元与源程序工作单元之间的通信主要包括:1:向主语言传递SQL语句的执行状态信息,使主语言能够据此信息控制程序流程,主要用SQL通信区实现。2:主语言向SQL语句提供参数,主要用主变量实现。3:将SQL语句查询数据库的结果交给主语言处理,主要用主语言和游标cursor实现。SQL通信区SQL语句执行后,系原创 2021-03-31 16:29:14 · 184 阅读 · 1 评论 -
数据库完整性
数据库完整性1:提供定义完整性约束条件的机制。完整性约束条件也称为完整性规则,是数据库中的数据必须满足的语意约束条件,SQL标准使用了一系列概念来描述完整性,包括关系模型的实体完整性,参照完整性,用户定义完整性,这些完整性一般由SQL的数据定义语言语句来实现,他们作为数据库模式的一部分存入数据字典中。2:提供完整性检查方法。数据库管理系统中检查数据是否满足完整性约束条件的机制称为完整性检查,一般在insert,update,delete语句执行后开始检测。3:进行违约处理。数据库管理系统若发现用原创 2021-03-26 11:27:16 · 1125 阅读 · 4 评论 -
使用游标的SQL语句
使用游标的SQL语句必须使用游标的SQL语句有查询结果为多条记录的select语句,current形式的update和delete语句。查询结果为多条记录的select语句一般情况下,select语句查询结果为多条记录,因此需要使用游标机制将多条记录一次一条的送主程序处理,从而把集合的操作转换为对单个记录的处理,使用游标的步骤为:1:说明游标用declare语句为一条select语句定义游标:exec SQL declare <游标名> cursor for <select语句原创 2021-03-31 16:47:02 · 1982 阅读 · 1 评论 -
数据库-恢复策略
当系统运行过程中发生故障,利用数据库后背副本和日志文件系统就可以将数据库恢复到故障前的某个一致性状态。不同的故障其恢复策略和方法也不一样。事务故障的恢复事务故障是指事务在运行至正常终点前被终止,这时恢复子系统应利用日志文件撤销UNDO此事务已对数据库进行的修改。事务故障的恢复是由系统自动完成的,对用户是透明的,系统的恢复步骤是:1:反向扫描日志文件,即从最后向前扫描日志文件,查找该事务的更新操作。2:对该事务的更新操作执行逆操作,即将日志记录中更新前的值写入数据库。3:继续反向扫描日志文件,查找事原创 2021-04-05 15:15:46 · 1091 阅读 · 1 评论 -
数据库-数据字典
数据库–数据字典数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所定义的信息,包括关系模式定义,视图定义,索引定义,完整性约束定义,各类用户对数据库的操作权限,统计信息等。关系数据库管理系统在执行sql的数据定义语句时,实际上就是在更新数据字典表中的相应信息。在进行查询优化和查询处理时,数据字典中的信息是其重要依据。...原创 2021-03-23 08:46:30 · 1941 阅读 · 1 评论 -
数据库字符集
注意注意注意数据库字符集为ASCII时一个汉字需要二个_;当字符集为GBK时只需要一个_。例如我们查询名字中第二个字为"阳"的学生姓名和学号。select sname,snofrom studentwhere sname like ‘_阳’;原创 2021-03-23 09:23:12 · 262 阅读 · 1 评论 -
数据库安全性控制
数据库安全性控制数据库的安全性,主要包括用户身份鉴别,多层存取控制,审计,视图和数据加密等安全技术。用户身份鉴别用户身份鉴别是数据库管理系统提供的最外层安全保护措施。每个用户在系统中都有一个用户标识,每个用户标识由用户名和用户标记号uid二部分组成,UID在系统的整个生命周期内是唯一的。常用的用户身份鉴别方法有以下几种。1,静态口令鉴别这种方式是当前常用的鉴别方式,静态口令一般由用户自己设定,鉴别时只要按要求输入正确的口令,系统将允许用户使用数据库管理系统,这些口令是静态不变的,在实际应用中,用原创 2021-03-24 15:32:53 · 1062 阅读 · 2 评论 -
数据库物理结构设计
物理结构设计数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库管理系统 为一个给定的逻辑数据模型选取一个最合适的应用要求的物理结构的过程,就是数据库的物理设计。数据库的物理设计通常分为二部1:确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构。2:对物理结构进行评价,评价的重点是时间和空间效率。不同的数据库产品所提供的物理环境和存取方法,和存储结构有很大的差别能供设计人员使用的设计变量,参数范围也是很不相同的,因此没有通用的物理设计方法可遵循。对于数据库原创 2021-03-31 17:07:05 · 7271 阅读 · 1 评论 -
数据库层次模型的优缺点
数据库层次模型的优缺点层次模型的优点主要有:1:层次模型的数据结构比较简单清晰2:层次数据库的查询效率高,因为层次模型中记录之间的联系用有向边表示,这种联系在DBMS中常常用指针来实现,因此这种联系也就是记录之间的存取路径。3:层次模型提供了良好的完整性支持。层次模型的缺点主要有:1:现实世界中很多联系是非层次性的,如结点之间具有多对多联系,不适合用层次模型表示。2:如果一个结点具有多个双亲结点等,用层次模型表示这类联系就很笨拙,只能通过引入数据冗余或者创建非自然的数据结构来解决,对插入和删除原创 2021-03-20 17:21:16 · 5245 阅读 · 1 评论 -
数据库-事务的基本概念
1.事务所谓事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。例如,在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。事务和程序是二个概念。一般的讲,一个程序中包含多个事务。事务的开始和结束可以由用户显式控制。如果用户没有显式的定义事务,则由数据库管理系统按默认规定自动划分事务。在SQL中,定义事务的语句一般有三条:BEGIN TRANSACTION;COMMIT;ROLLBACK;事务通常是以BEGIN TRANSACTION开原创 2021-04-08 20:47:52 · 502 阅读 · 2 评论 -
关于数据库系统的查询处理
查询处理时关系数据库管理系统执行查询语句的过程,其任务是把用户提交给关系数据库管理系统的查询语句转换为高效的查询执行计划。查询处理步骤关系数据库管理系统查询处理可以分为四个阶段:查询分析,查询检查,查询优化和查询执行。1.查询分析首先对查询语句进行扫描,语法分析和词法分析,即判断查询语句是否符合SQL语句,关键词,语法结构。2.查询检查对合法的查询语句进行语义检查,即根据数据字典中有关的模式定义检查语句中的数据库对象,如关系名,属性名是否存在和有效,还要根据数据字典中的用户权限和完整性约束进行检原创 2021-04-01 21:30:27 · 2870 阅读 · 2 评论 -
封锁
封锁是实现并发控制的一个非常重要的技术。所谓封锁就是事务t在对某个数据对象例如表,记录等操作之前,先向系统发出请求,对其加锁????。加锁后事务t就对该数据对象有了一定的控制,在事务t释放它的锁之前,其他事务不能更新此数据对象。确切的控制由封锁的类型决定。基本的封锁类型有二种:排他锁(x锁),共享锁(s锁)。排他锁又称为写锁。若事务t对数据对象a加上x锁,则只允许t读取和修改a,其他任何事务都不能再对a加任何类型的锁,直到t释放a的锁为止,这就保证了其他事务在t释放a上的锁之前不能再读取和修改a。共原创 2021-04-09 11:06:09 · 440 阅读 · 1 评论 -
数据依赖
在举例之前,先非形式的讨论一下数据依赖的概念。数据依赖是一个关系内部属性与属性之间的一种约束关系,这种约束关系是通过属性间值的相同与否体现出来的数据间的相关联系。它是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。人们已经提出了许多类型的数据依赖,其中最重要的是函数依赖和多值依赖。举例说明函数依赖极为普遍的存在现实生活中,比如描述一个学生的关系,可以有学号,姓名,系号等几个属性,由于一个学号只对应一个学生,一个学生只能在一个系学习,因而当学号确定之后,学生的姓名,及所在系的值也就被唯一原创 2021-03-28 15:58:41 · 2376 阅读 · 1 评论 -
数据库-物理优化
物理优化物理优化就是要选择高效合理的操作算法或者存取路径,求得优化的查询计划,达到查询优化的目标。选择的方法可以是:1.基于规划的启发式优化。启发式规则是指那些在大多数情况下都适用,但不是在每种情况下都是最好的规则。2.基于代价估算的优化。使用优化器估算不同执行策略的代价,并选出具有最小代价的执行计划。3.二者结合的优化方法。查询优化器通常会把这二种技术结合在一起使用,因为可能执行的策略很多,要穷尽所有策略进行代价估算往往是不可行的,会造成查询优化本身付出的代价大于获得的益处。基于启发式规则的存原创 2021-04-03 17:01:00 · 756 阅读 · 1 评论 -
数据库编程-嵌入式SQL的处理过程
SQL编程技术可以有效的克服SQL语言实现复杂应用方面的不足,提高应用系统和数据管理系统间的互操作性。SQL的特点之一是在交互式和嵌入式二种不同的使用方式下, SQL的语法结构基本上是一致的。嵌入式SQL的处理过程嵌入式SQL是将SQL语言嵌入程序设计语言中,被嵌入的程序设计语言,如C++,C,JAVA等称为宿主语言,简称主语言过程如下1:含嵌入式SQL语句的主语言程序。2:关系数据库管理系统预处理程序转换嵌入式SQL语句为函数调用。3:转换后的主语言程序。4:主语言编译程序编译处理。5:原创 2021-03-31 16:10:54 · 996 阅读 · 1 评论