mysql数据库学习
explore翔
安徽某985小硕,记录日常学习生活,欢迎大家交流指教。
展开
-
MySQL事务和存储引擎
数据库中事务是用户一系列的数据库操作序列(insert,delete,update等),这些操作要么全做要么全不做,是一个不可分割的工作单位。事务的ACID特性这个知识可以说是必须掌握的。事务只有具备这四种特性,才能确保数据库的可靠性。A:原子性。即事务中的操作要么全做,要么全不做。比如在某个插入失败时,需要回退到事务开始前的状态。C:一致性。事务不破坏数据库的完整性约束。比如,如果插入了一个元素使主键列不唯一,那么破坏了一致性,就会撤销事务。I:隔离性。每个事务的对象是独立的,一个事务的操作对其原创 2021-03-31 14:49:39 · 90 阅读 · 0 评论 -
线程池的优化
主要涉及调度死锁解决和大查询处理两个方面。调度死锁解决我们设想一个场景,A,B两个事务被分配到不同的线程组中,A已经开始执行,并且持有锁,但是由于A所在的组比较繁忙,A执行一条语句后剩余的不能立即执行;而B事务依赖A释放的锁资源,虽然B所在的组没有别的任务,但是由于A未释放锁资源,所以B仍然需要等待,这就是调度死锁。如何解决呢?那些已经开启一部分请求的事务或者有锁资源的连接需要放入优先队列,优先执行。大查询处理因为大查询会导致很快到达最大线程数,后续任务无法响应。如果是业务需求,线程池本身没有办法原创 2021-03-26 19:30:44 · 1019 阅读 · 0 评论 -
Mysql线程池
我们知道,随着数据库访问量越来越大,响应速度会越来越慢,同时访问量大到一定程度时,吞吐量会急剧下降。我们建立一个数据库连接就会建立一个线程,请求结束后销毁进程。以前也有一种连接池,是在客户端设置的。他可以从缓存中取得,用完不销毁。减少频繁的创建和销毁进程。但是对于高并发时,还是无法保护数据库(雪崩)。而线程池的一个重要作用就是限制了并发进程数,其他的线程要排队,对数据库起到保护作用。线程池结构一个线程池包括:一个timer线程和多个线程组。每个线程组包括一个高优先级队列,一个低优先级队列,一个lis原创 2021-03-25 22:43:41 · 478 阅读 · 0 评论 -
Mysql多表连接
我们不可能把所有信息放在同一张表上,此时我们就需要对多的表的数据进行处理。数据表的约束就是对数据做出某种限制,确保表数据的完整性,逻辑性,唯一性。主键约束:数据不能为空且不能重复;默认值约束:插入时没给定值就默认值;唯一约束:值不能重复;下面讲一个很重要的:外键约束:每个外键必须参考另一个表的主键,并且外键约束的列值必须在参考的列中有对应值,否则Insert失败。并且在删除数据时,如果有从数据外键约束,可能不能删除,或者主从一起删除,或者从数据set null.FOREIGN KEY(列名)原创 2021-03-24 20:53:07 · 169 阅读 · 0 评论 -
分组与统计
在Mysql中,我们经常会遇到统计和分组的问题。下面说几个常用的方式count() 代表统计所有的不为0的行数,有参数就是那一列不为0的行数。如:SELECT COUNT() AS 总数 FROM 表;我们常用DISTINCT来去除重复数据,与COUNT连用SELECT COUNT(DISTINCT NAME) AS a FROM 表;count经常和GROUP BY分组一起使用,统计每组的个数SELECT class,count(*) FROM 表 GROUP BY class;其中,gro原创 2021-03-23 15:35:34 · 322 阅读 · 0 评论 -
Mysql中的日期与时间
Mysql中有5种表示日期和时间的类型;下面一一介绍TEAR类型:用一个字节来表示年份,范围是1901-2155,形式是YYYY。可以用now(),current_date,current_time来得到。TIME类型三个字节来表示时间,HH:MM:SS,注意TIME范围是-838-838,不是24,。可以用D HH:MM:SS,结果是D*24+HH:MM:SSDATE类型四个字节表示日期。YYYY-MM-DDdatetime类型八个字节表示日期和时间。范围是1000-01-01 00:0原创 2021-03-22 19:34:43 · 290 阅读 · 0 评论 -
INSERT UPDATE DEDELE操作
1、严格模式和宽松模式所谓严格模式就是对数据进行严格的校验(格式,类型,长度),非严格模式反之。我们推荐要用严格模式,因为这在一定程度上是对代码的一种测试,让代码更加规范,防止后期出现错误。如何进入严格模式呢?1、SQL语句执行,但只对本次连接有效;SET sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";2、修改my.ini配置文件加上STRICT_TRANS_TABLES就是开启严格模式,去掉原创 2021-03-17 15:15:13 · 107 阅读 · 0 评论 -
select查询(2)
order by关键字主要用来对查询结果进行排序,默认放在select语句最后。ORDER BY 表列 ASC;//升序(默认)ORDER BY 表列 DESC;//降序例子: SELECT age FROM A ORDER BY age DESC;order by后面也可以有多个表列,则按照先后顺序进行排序。比如先按照第一个字段排序,第一个字段相等的话,再按照第二个字段排序。LIMIT关键字LIMIT子句被用于强制select返回的记录数,可以跟一个或两个整数常量,跟两个的话,第一个参数原创 2021-03-14 16:12:02 · 257 阅读 · 0 评论 -
select where查询(1)
查询可谓是SQL的最重要的操作,也是大部分的意义所在。下面说一下最基本的结构: SELECT [DISTINCT]列名 FROM 表名 WHERE 表达式其中列名和表名都可以是多个。DISTINCT是可选项,代表对应这个列,过滤掉列数据重复的行。其中别名的问题:我们可以给表起别名,关键字AS(可省略),以便表达清晰: SELECT t1.name,t2.name FROM a [AS] t1,b [AS] t2 WHERE t1.name=t2.name;我们也可以给查询结果字段取别名原创 2021-03-13 16:03:45 · 1286 阅读 · 0 评论 -
mysql索引和AUTO_INCREMENT介绍
索引最主要的功能就是提高查询速度。如果没有索引,那么数据表就是一个很多种数据的集合,查询需要遍历整个表。特别是需要多表联合操作时,比如我们要三个表id相等的操作,id1=id2=id3,如果每个表有1000行,那么需要查询次数就是100010001000,查询速度可想而知。添加索引就不一样了,添加索引,会把那一列按序排放,查找时只要o(1)的复杂度,相当于键值匹配实现快速定位,和散列表一样。当然,索引也有缺点:1、占用磁盘空间;2、降低插入更新删除等操作的速度,因为要这些操作多了一项工作:更新索引;原创 2021-03-12 20:42:24 · 350 阅读 · 0 评论 -
mysql数据类型
1、数值类型数值型分为整数型和浮点型两大类。mysql提供的整数型有五种:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT.分别占用1,2,3,4,8个字节。当我们想保存在屏幕上显示指定的字符长度,比如我们可以用int(4),输入数字长度大于4位我们看到的就是4位长度的数字,小于4位会补充为4位(如果zerofull填充,否则看不出来)。但是它在计算机内占用的长度还是4个字节,即32位,这是不变的。浮点类型如下:FLOAT[(M,D)]:单精度浮点数,M是总位数,D是小数原创 2021-03-08 16:34:09 · 117 阅读 · 0 评论 -
mysql最基本创建删除修改操作
在这之前,我们为了可以在cmd中直接进入mysql,所以需要在环境变量中配置一下,把你的安装目录到bin的复制到里面,在cmd中输入mysql -uroot -ppassword就能进入了。(用户名一般为root,密码你自己设定的)1、创建数据库一般我们都知道是create database,但是学习就要学的全面一点。 CREATE DATABASE IF NOT EXISTS test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;这句话的原创 2021-03-07 16:17:40 · 138 阅读 · 1 评论 -
关于下载mysql和navicat的最方便有效的方法
网上很多教程都存在或多或少的问题, 因为内容因为一些问题没有审核通过,先简单说一下,具体步骤需要的可以私信我这里主要解决三个点:1、我们主要通过下载zip压缩包,免安装,只要注册my.ini文件然后初始化启动服务就可,重要在于官网下载速度很慢,大家可以在清华镜像网站上下载,速度很快;方法可以私信我2、navicat下载链接可以私信我;3、在链接数据库出现1862错误,我们需要通过管理员命令修改密码再次用新密码连接...原创 2021-03-06 12:34:42 · 351 阅读 · 1 评论