Mysql
文章平均质量分 67
从零基础进阶到mysql高级
敲代码敲到头发茂密
欲戴王冠,必承其重
展开
-
python——MySQL封装操作
【代码】python——MySQL封装操作。原创 2022-10-06 09:09:29 · 3348 阅读 · 32 评论 -
web应用程序中SQL注入问题
SQL注入是一种代码注入技术,一般被应用于攻击web应用程序。它通过在web应用接口传入一些特殊参数字符,来欺骗应用服务器,执行恶意的SQL命令,以达到非法获取系统信息的目的。它目前是黑客对数据库进行攻击的最常用手段之一。原创 2022-10-05 10:22:08 · 940 阅读 · 33 评论 -
MySQL面试题——MySQL常见查询
这道题最最最关键的所在,(划重点)就是:把学过编号为“01”课程的同学查询出来,再把学过编号为“02”课程的同学查询出来,然后把两张表合并到一张表中。原创 2022-08-09 22:59:07 · 4656 阅读 · 34 评论 -
python操作mysql操作步骤
1、安装mysqlpip install pymysql2、导入pymysqlfrom pymysql import *3、创建数据库连接conn = connect(host='localhost', port=3306, user='root', password='root', db='数据库名', charset='utf8')参数ho原创 2021-11-01 07:00:00 · 658 阅读 · 0 评论 -
MySQL—函数的使用
一、函数的使用MySQL中提供了大量函数来简化用户对数据库的操作,比如字符串的处理、日期的运算、数值的运算等等。使用函数可以大大提高SELECT语句操作数据库的能力,同时也给数据的转换和处理提供了方便。 (在sql中使用函数)函数只是对查询结果中的数据进行处理,不会改变数据库中数据表的值。MySQL中的函数主要分为单行函数和多行函数两大类,下面我们将详细讲解这两大类函数。二、单行函数单行函数是指对每一条记录输入值进行计算,并得到相应的计算结果,然后返回给用户,也就是说,每条记录作为一个输入参数,经过原创 2021-10-24 19:16:59 · 5573 阅读 · 2 评论 -
MySQL索引、B+树相关知识汇总
7、EXPLAIN select * from employees where deptid=“1002” and jobs=“测试” and empname=“张飞” 使用了索引。8、EXPLAIN select * from employees where deptid=“1002” or jobs=“测试” or empname=“张飞” 不使用索引。5、EXPLAIN select * from employees where jobs=“测试” and deptid=“1002”原创 2024-04-12 23:33:07 · 1440 阅读 · 37 评论 -
mysql知识点梳理
总是假设最坏的情况,每次读取数据的时候都默认其他线程会更改数据,因此需要进行加锁操作,当其他线程想要访问数据时,都需要阻塞挂起。乐观锁假设数据一般情况不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果冲突,则返回给用户异常信息,让用户决定如何去做。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)普通索引:基本的索引类型,没有唯一性的限制,允许为NULL值。原创 2024-04-06 08:26:48 · 1906 阅读 · 29 评论 -
mysql中主键索引和联合索引的原理解析
联合索引:将数据库表中多个字段组成一个索引。bcd联合索引;bcd三个字段进行排序复合索引,也叫联合索引,用户可以在多个列上建立索引,这种索引叫做复合索引。当我们创建一个组合索引的时候,如(k1,k2,k3),相当于创建了(k1)、(k1,k2)和(k1,k2,k3)三个索引,这就是最左匹配原则。查询的字段正好在联合索引字段里面,不需要回表(不需要回表了,直接从联合索引字段中将该字段取出来)同样的也符合联合索引,也不需要回表,因为a字段(主键)在联合索引中。原创 2024-04-05 07:28:34 · 3940 阅读 · 92 评论 -
MySQL索引原理
餐馆,小黑本——》记录消费的金额——》不忙的的时候再把信息挪到记账本中。mysql中一页有16kb的数据,假设我插入了4条数据,一页占满了;1、B+Tree每个节点可以包含更多的节点,这个做的原因有两个,1、判断更新的数据是否在内存中,如果在内存中直接更新数据。一页有16kb,每一页包含页目录、用户数据区域、指针。2、如果不在内存中,需要把磁盘的数据加载到内存中。餐馆,记账本——》找到个人账单——》加上10元。当我插入第5条数据,如果一页满了会新增一页,数据结构——》哈希表、一堆树——》原创 2024-04-04 16:41:21 · 1587 阅读 · 41 评论 -
Mysql知识点汇总
索引是一种数据结构,可以帮助我们快速的进行数据的查找。原创 2024-02-17 22:18:41 · 3138 阅读 · 41 评论 -
数据库面试题总结
索引是一种数据结构,可以帮助我们快速的进行数据的查找。事务(Transaction)指的是一个操作序列,该操作序列中的多个操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位是指二个或者二个以上的进程在执行时候,因为争夺资源造成相互等待的现象,进程一直处于等待中,无法得到释放,这种状态就叫做死锁。指一个列或者是多个列的组合,它的值能唯一地标识表中的每一行。主键是一种特殊的索引,并且是唯一性索引的一种,定义为:PRIMARY KEY。原创 2023-01-28 18:44:10 · 7613 阅读 · 54 评论 -
解决ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (111)的问题
最近在学习Django框架,于是在windows系统上搭建了Django环境,并使用虚拟机ubuntu系统上安装的mysql作为项目的远程数据库,前几天一直用得好好的,今天在虚拟机上连接数据库时,出现了如下错误:本地数据库没法连接,第一反映是查看下mysql数据库是否启动,使用如下命令查看:发现mysql是正常启动状态。仔细思考了下,既然mysql是正常启动的,本地连接不上,是否和mysql绑定ip有关,因为之前将其作为远程数据库使用的,因此对其绑定的ip进行了修改。切换到对应路径,打开mys原创 2022-05-06 08:36:09 · 6237 阅读 · 4 评论 -
【MySQL】按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
思路:1、先查找所有学生的平均成绩select sid,avg(degree) from score GROUP BY sid2、再查找所有学生的所有课程的成绩select st.sid,st.sname,co.cname,sc.degreefrom score sc,course co,student stwhere sc.cid=co.cid and sc.sid=st.sid3、四表联查,并按照平均成绩从高到低排序select st.sid,st.sname,co.cname,原创 2021-12-06 06:27:20 · 10444 阅读 · 2 评论 -
python—操作MySQL查询表中数据
python# 1、导入mysqlfrom pymysql import *# 2、创建数据库lianjieconn = connect(host='localhost', port=3306, user='root', password='root', db='mytestdb', charset='utf8')print(conn)# 3、打开原创 2021-11-06 07:00:00 · 3565 阅读 · 0 评论 -
python—操作MySQL增加数据
一、操作MySQL增加单条数据# 1、导入mysqlfrom pymysql import *# 2、创建数据库lianjieconn = connect(host='localhost', port=3306, user='root', password='root', db='mytestdb', charset='utf8')print(co原创 2021-11-05 07:00:00 · 1431 阅读 · 0 评论 -
MySQL—视图(二)
一、创建myview1视图create or replace view myview1asselect * from student where ssex='女'1、视图中插入数据插入第一条数据insert into myview1 values(09,'王五','1994-07-10','女')2、查看视图select * from myview1运行结果:视图中新增一条数据3、插入第二条数据insert into myview1 values(10,'二麻子','1995-原创 2021-11-03 07:00:00 · 2559 阅读 · 0 评论 -
python—sql语句参数化
# 1、导入mysqlfrom pymysql import *# 2、创建数据库lianjieconn = connect(host='localhost', port=3306, user='root', passwd='root', db='mytestdb', charset='utf8')print(conn)# 3、打开游标cur=原创 2021-11-01 07:00:00 · 2948 阅读 · 2 评论 -
【MySQL】求每门科目成绩排名前二的学生信息
建表语句如下:成绩学生表CREATE TABLE student (sno VARCHAR(4) NOT NULL primary key, sname VARCHAR(4) NOT NULL, age VARCHAR(3))ENGINE=INNODB DEFAULT CHARSET=utf8 ;成绩成绩表CREATE TABLE score (sno VARCHAR(4) NOT NULL, kemu VARCHAR(5) NOT NULL, degree NU原创 2021-10-31 07:00:00 · 2987 阅读 · 1 评论 -
MySQL—视图(一)
一、视图的概念视图(view)是一个从单张或多张基础数据表或其他视图中构建出来的虚拟表。同基础表一样,视图中也包含了一系列带有名称的列和行数据,但是数据库中只是存放视图的定义,也就是动态检索数据的查询语句,而并不存放视图中的数据,这些数据依旧存放于构建视图的基础表中,只有当用户使用视图时才去数据库请求相对应的数据,即视图中的数据是在引用视图时动态生成的。因此视图中的数据依赖于构建视图的基础表,如果基本表中的数据发生了变化,视图中相应的数据也会跟着改变。PS:视图本质上就是:一个查询语句,是一个虚拟的表,原创 2021-10-31 07:00:00 · 802 阅读 · 0 评论 -
MySQL—事务隔离级别
事务的隔离级别用于决定如何控制并发用户读写数据的操作。数据库是允许多用户并发访问的,如果多个用户同时开启事务并对同一数据进行读写操作的话,有可能会出现脏读、不可重复读和幻读问题,所以MySQL中提供了四种隔离级别来解决上述问题。事务的隔离级别从低到高依次为READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ以及SERIALIZABLE,隔离级别越低,越能支持高并发的数据库操作。查看默认的事务隔离级别 MySQL默认的是repeatable readsele原创 2021-10-30 07:00:00 · 317 阅读 · 0 评论 -
MySQL—事务并发问题
脏读(Dirty read)当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。不可重复读(Unrepeatableread): 指在一个事务内多次读同一数据。在这个事务还没有结束时,另一个事务也访问该数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改导致第一个事务两次读取的数据可能不太一样。这原创 2021-10-29 07:00:00 · 955 阅读 · 1 评论 -
MySQL—事务及其特征
例子1:举一个例子来进行说明,例如转账操作:A账户要转账给B账户,那么A账户上减少的钱数和B账户上增加的钱数必须一致,也就是说A账户的转出操作和B账户的转入操作要么全部执行,要么全不执行;如果其中一个操作出现异常而没有执行的话,就会导致账户A和账户B的转入转出金额不一致的情况,事实上这种情况是不允许发生的,所以为了防止这种情况的发生,需要使用事务处理。例子2:在淘宝购物下订单的时候,商家库存要减少,订单增加记录,付款我的账号少100元…操作要么全部执行,要么全不执行一、事务的概念:事务(Trans原创 2021-10-29 07:00:00 · 914 阅读 · 1 评论 -
MySQL—相关子查询
【1】查询最高工资的员工 (不相关子查询)select * from emp where sal=(select max(sal) from emp)【2】查询本部门最高工资的员工 (相关子查询)方法1:通过不相关子查询实现select * from emp where deptno=10 and sal=(select max(sal) from emp where deptno=10)unionselect * from emp where deptno=20 and sal=(se原创 2021-10-28 07:00:00 · 876 阅读 · 0 评论 -
MySQL—不相关子查询(多行子查询)
【1】查询【部门20中职务同部门10的雇员一样的】雇员信息。select * from emp where deptno=20and job in (select job from emp where deptno=10)【2】查询工资比所有的“SALESMAN”都高的雇员的编号、名字和工资。select deptno,ename,salfrom emp where sal>all(select sal from emp where job='SALESMAN')或者selec原创 2021-10-28 07:00:00 · 375 阅读 · 0 评论 -
MySQL—不相关子查询(单行子查询)
一、什么是子查询?一条SQL语句含有多个select举例:1、查询所有比“CLARK”工资高的员工的信息select * from emp where sal>(select sal from emp where ename='CLARK') 2、查询工资高于平均工资的雇员名字和工资。select ename,sal from emp where sal>(select avg(sal) from emp)3、查询职务和SCOTT相同,比SCOTT雇佣时间早的雇员信息sele原创 2021-10-27 07:15:00 · 845 阅读 · 0 评论 -
MySQL—自连接
自连接关系表案例:例如:查询员工的编号、姓名、上级编号,上级的姓名select e1.deptno as 员工编号,e1.ename as 员工姓名,e1.mgr as 上级编号,e2.ename 上级姓名 from emp e1inner join emp e2on e1.mgr=e2.empno...原创 2021-10-27 07:00:00 · 357 阅读 · 0 评论 -
MySQL—三表查询
三表为:员工表、部门表、工资表查询员工的编号、姓名、薪水、部门编号、部门名称、薪水等级select e.deptno,e.ename,e.sal,e.empno,d.deptno,s.*from emp eright join dept don e.deptno=d.deptnoinner join salgrade son e.salBETWEEN LOSAL AND HISAL执行结果:...原创 2021-10-26 07:00:00 · 5663 阅读 · 0 评论 -
MySQL—外连接查询
举例:2个表:员工表和部门表1、inner join - on 语句,查询所有的匹配信息select * from emp einner join dept don e.deptno=d.deptno出现的问题a、40号部门没有员工,没有显示在查询结果中b、如果员工scott没有部门,没有显示在查询结果中解决方法:使用外连接外连接:除了显示匹配的数据之外,还可以显示不匹配的数据2、左外连接 left outer joinselect *from emp eleft out原创 2021-10-26 07:00:00 · 2411 阅读 · 0 评论 -
MySQL—交叉连接、自然连接、内连接
一、 多表查询引入实际开发中往往需要针对两张甚至更多张数据表进行操作,而这多张表之间需要使用主键和外键关联在一起,然后使用连接查询来查询多张表中满足要求的数据记录。一条SQL语句查询多个表,得到一个结果,包含多个表的数据。效率高。在SQL99中,连接查询需要使用join关键字实现。提供了多种连接查询的类型: cross natural using on二、交叉连接(cross join)交叉连接(CROSS JOIN)是对两个或者多个表进行笛卡儿积操作,所谓笛卡儿积就是关系代数里的一个原创 2021-10-25 07:00:00 · 1701 阅读 · 0 评论 -
MySQL—表的完整性约束(外键约束)(二)
1、班级表2、学生表例1:删除班级5:如果直接删除的话肯定不行,因为有外键约束delete from t_class where cno=5;1451 - Cannot delete or update a parent row: a foreign key constraint fails (mytestdb.t_student, CONSTRAINT fk_stu_classno FOREIGN KEY (classno) REFERENCES t_class (cno))– 加入外键策原创 2021-10-23 06:45:00 · 268 阅读 · 0 评论 -
MySQL—表的完整性约束(外键约束)(一)
1、什么是完整性约束?为防止不符合规范的数据存入数据库,在用户对数据进行插入、修改、删除等操作时,MySQL提供了一种机制来检查数据库中的数据是否满足规定的条件,以保证数据库中数据的准确性和一致性,这种机制就是完整性约束。2、什么是外键约束?外键约束(FOREIGN KEY,缩写FK)是用来实现数据库表的参照完整性的。外键约束可以使两张表紧密的结合起来,特别是针对修改或者删除的级联操作时,会保证数据的完整性。3、什么是外键?外键是指表中某个字段的值依赖于另一张表中某个字段的值,而被依赖的字段必须具原创 2021-10-22 06:45:00 · 3077 阅读 · 0 评论 -
MySQL—数据库表的完整性约束(非外键约束)
/*根据需求描述,创建数据库表:建立一张用来存储学生信息的表字段包含学号、姓名、性别,年龄、入学日期、班级,email等信息约束:建立一张用来存储学生信息的表字段包含学号、姓名、性别,年龄、入学日期、班级,email等信息【1】学号是主键 = 不能为空 + 唯一 ,主键的作用:可以通过主键查到唯一的一条记录【2】如果主键是整数类型,那么需要自增【3】姓名不能为空【4】Email唯一【5】性别默认值是男【6】性别只能是男女【7】年龄只能在18-50之间*/第一种方法:crea原创 2021-10-22 06:45:00 · 1813 阅读 · 0 评论 -
MySQL—修改、删除数据(一)
一、修改数据库表中的数据例如:数据库t_student3表如下1、将姓名为kd的学生,班级修改为2班update 表名 set 列名=“新值” where 条件**update t_student3 set classname='2班' where sname='kd'2、将姓名为kb的学生,年龄修改为20运行结果:字段不区分大小写二、删除数据库表中的数据1、删除数据库表delete from 表名delete from t_student32、删除表中姓名为cc的学生de原创 2021-10-21 07:15:00 · 7823 阅读 · 0 评论 -
MySQL—表中添加数据
1、在t_student数据库表中插入数据注意:插入的数据必须和数据表字段一一对应insert into t_student values (1,'张三','男',18,'2022-5-8','软件1班','123@qq.com');向数据表中插入数据insert into 表名 value(数据1,数据2,数据3,…)2、int 宽度是显示宽度,如果超过,可以自动增大宽度 int底层都是4个字节insert into t_student values (10010010,'张三','男',原创 2021-10-21 07:15:00 · 12592 阅读 · 0 评论 -
MySQL—创建数据表
一、认识数据表表(Table)是数据库中数据存储最常见和最简单的一种形式,数据库可以将复杂的数据结构用较为简单的二维表来表示。二维表是由行和列组成的,分别都包含着数据,如表所示。每个表都是由若干行和列组成的,在数据库中表中的行被称为记录,表中的列被称为是这些记录的字段。记录也被称为一行数据,是表里的一行。在关系型数据库的表里,一行数据是指一条完整的记录。二、创建数据库表t_student需求:建立一张用来存储学生信息的表字段包含学号、姓名、性别,年龄、入学日期、班级,email等信息学号是原创 2021-10-20 07:15:00 · 3655 阅读 · 0 评论