mysql数据库

三大主流数据库神速上手(MySQL、MSSQL、Oracle)视频教程

隐身守侯 提交于 2020-02-17 06:51:26
目录: ┣━━作业 ┃ ┣━━01_05_10_MySQL之触发器.docx ┃ ┣━━零基础大数据:01_05_01_数据库理论介绍.docx ┃ ┣━━零基础大数据:01_05_011_MySQL存储过程和函数.docx ┃ ┣━━零基础大数据:01_05_02_MySQL介绍与安装.docx ┃ ┣━━零基础大数据:01_05_03_MySQL之数据类型.docx ┃ ┣━━零基础大数据:01_05_04_MySQL之操作数据库表.docx ┃ ┣━━零基础大数据:01_05_05_MySQL之索引.docx ┃ ┣━━零基础大数据:01_05_06_MySQL之查询.docx ┃ ┣━━零基础大数据:01_05_07_MySQL之增、删、改.docx ┃ ┣━━零基础大数据:01_05_08_MySQL之函数.docx ┃ ┣━━零基础大数据:01_05_09_MySQL之视图.docx ┃ ┣━━零基础大数据:01_05_15_MSSQL.docx ┃ ┗━━零基础大数据:01_05_19_Oracle.docx ┣━━三大主流数据库快速上手.zip ┣━━三大主流数据库快速上手PDF.zip ┣━━MSSQL、MySQL、Oracle 三大主流数据库快速上手第八章1-7.mp4 ┣━━MSSQL、MySQL、Oracle 三大主流数据库快速上手第二章1-4.mp4 ┣━

mysql: lock wait timeout exceeded; try restarting transaction

丶灬走出姿态 提交于 2020-02-17 06:48:07
项目中遇到: lock wait timeout exceeded; try restarting transaction 的问题。 出错的语句是: select id from A where id=1 for update 即锁等待超时, 可能原因分析:并发场景下有一个事务对表A的id等于1的记录进行select for update操作,开启了事务但是并未提交,此时另外的事务对表A的事务操作就会等待锁,最终等待超时报错。 需要检查代码中对事务的开启、提交方面是否有问题。需要保证代码中再进行完for update操作后,事务一定提交或回滚。 Mysql 数据库采用InnoDB模式,默认参数:innodb_lock_wait_timeout设置锁等待的时间是50s,一旦数据库锁超过这个时间就会报错,可以考虑调大innodb_lock_wait_timeout参数的值,或者在代码中增加重试操作,等待另一个事务提交,流程则可继续进行。 来源: CSDN 作者: 怠惰的小小白 链接: https://blog.csdn.net/qq_35462323/article/details/104338645

数据库MySQL的安装与卸载(Windows版)

爱⌒轻易说出口 提交于 2020-02-17 06:01:10
数据库MySQL的安装与卸载(Windows版) 前言 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 MySQL 官网: https://www.mysql.com/ MySQL 下载地址: https://dev.mysql.com/downloads/mysql/ 示例版本:mysql-5.5.40-winx64 安装 如果之前你的电脑曾安装并卸载过MySQL,则需要先看下面的卸载教程,将软件卸载干净,才能继续安装,否则很可能安装失败。 1、下载安装包后,双击要安装的版本。 2、点击Next。 3、勾选“同意协议”后,点击Next。 4、推荐安装在除C盘以外的其他盘,所以选择第2个:Custom。 5、点击Browse,以自定义目录。 6、选择要安装的文件位置。 7、点击Next。 8、点击Install。 9、坐等几秒,安装成功。 10、安装成功后将进入下面这个配置页面,点击Next。 11、继续点击Next。 12、点击Finish。 13、进入配置界面。点击Next。 14、点击Next。 15

SQL注入详解

北战南征 提交于 2020-02-17 04:11:45
一:什么是sql注入   SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。 二: SQL注入攻击的总体思路     1:寻找到SQL注入的位置   2:判断服务器类型和后台数据库类型   3:针对不同的服务器和数据库特点进行SQL注入攻击 三: SQL注入攻击实例 String sql = "select * from user_table where username= ' "+userName+" ' and password=' "+password+" '"; --当输入了上面的用户名和密码,上面的SQL语句变成: SELECT * FROM user_table WHERE username= '’or 1 = 1 -- and password='’ """ --分析SQL语句: --条件后面username=”or 1=1 用户名等于 ” 或1=1 那么这个条件一定会成功; --然后后面加两个-,这意味着注释,它将后面的语句注释,让他们不起作用,这样语句永远都--能正确执行,用户轻易骗过系统,获取合法身份。 --这还是比较温柔的,如果是执行 SELECT * FROM user_table WHERE username='' ;DROP DATABASE (DB

wordpress、Discuz产品部署

落爺英雄遲暮 提交于 2020-02-17 00:23:27
Wordpress、Discuz产品部署 三个产品提供挂载的目录信息 BLOG /data/www/blog/wp-content/uploads/ 图片和附件 BBS: /data/www/bbs/data/attachment/image /data/www/bbs/uc_server/data/avatar 图像目录 /data/www/bbs/data/attachment/forum/ 图片路径 WWW: /data/www/www/images/swfupload /data/www/www/uploads/allimg/ 创建一个博客,用wordpress 数据库的设置 把nginx和php加入开机自启动: [root@lnmp-1 extra]# vim /etc/rc.local /application/nginx/sbin/nginx /application/php/sbin/php-fpm 首先,在数据库创建一个wordpress的数据库 mysql> create database wordpress; 创建wordpress 的数据库 mysql> show databases; 查看所有的数据库 创建用户wordpress 并指定wordpress在192.168.162.135上登录,给出密码 mysql> grant all on

MySQL锁与事务隔离级别

主宰稳场 提交于 2020-02-16 22:39:21
1、概述 (1) 锁的定义 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除了传统的计算资源(如CPU、RAM、IO等)的争用以外,数据也是一种供需要用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。 (2) 锁的分类 从性能上分为 乐观锁 和 悲观锁 乐观锁:每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。 例子:① 在数据库的表中加一个version字段,用来记录每次修改数据的版本号,防止并发修改数据出错;② CAS原子类。 悲观锁:每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。 例子:synchronized关键字。 从对数据库操作的类型分为 读锁 和 写锁 (都属于悲观锁) 读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响。 写锁(排它锁):当前写操作没有完成前,它会阻断其他session的写锁和读锁。(session:数据库连接) 从对数据操作的粒度分为 表锁 和 行锁 。 2、表锁与行锁 (1) 表锁( 偏读 ) 表锁偏向MyISAM存储引擎 ,开销小,加锁快,无死锁

高性能MySQL 第四章

拥有回忆 提交于 2020-02-16 22:03:23
MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。 不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择。 1、尽量避免过度设计,例如会导致极其复杂查询的schema设计,或者有很多列的表设计(很多的意思是介于有点多和非常多之间)。 2、使用小而简单的合适数据类型,除非真实数据模型中有确切的需要,否则应该尽可能地避免使用NULL值。 3、尽量使用相同的数据类型存储相似或相关的值,尤其是要在关联条件中使用的列。注意可变长字符串,其在临时表和排序时可能导致悲观的按最大长度分配内存。 4、尽量使用整型定义标识列。 5、避免使用MySQL已经遗弃的特性,例如指定浮点数的精度,或者整数的显示宽度。 6、小心使用ENUM和SET。虽然它们用起来很方便,但是不要滥用,否则有时候会变成陷阱。最好避免使用BIT。 范式及其优缺点 在范式化的数据库中,每个事实数据会出现并且只出现一次 优点: 范式化的更新操作通常比反范式话要快 当数据较好的范式化时,就只有很少或者没有重复数据,所以只需要修改更少的数据 范式化的表通常更小,可以更好地放在内存里,所以执行操作会更快 很少有多余的数据意味着检索列表数据时更少需要 DISTINCT 或者 GROUP BY 语句 缺点: 表需要关联 反范式及其优缺点 在范式化的数据库中,信息是冗余的,可能会存储在多个地方 优点:

php mySql常用的函数

喜你入骨 提交于 2020-02-16 21:21:17
1 1、mysql_connect()-建立数据库连接 2 格式: 3 resource mysql_connect([string hostname [:port] [:/path/to/socket] [, string username] [, string password]]) 4 例: 5 $conn = @mysql_connect("localhost", "username", "password") or die("不能连接到Mysql Server"); 6 说明:使用该连接必须显示的关闭连接 7 8 2、mysql_pconnect()-建立数据库连接 9 格式: 10 resource mysql_pconnect([string hostname [:port] [:/path/to/socket] [, string username] [, string password]]) 11 例: 12 $conn = @mysql_pconnect("localhost", "username", "password") or dir("不能连接到Mysql Server"); 13 说明:使用该连接函数不需要显示的关闭连接,它相当于使用了连接池 14 15 3、mysql_close()-关闭数据库连接 16 例: 17 $conn = @mysql

聊一聊关于MySQL的count(*)

我是研究僧i 提交于 2020-02-16 19:15:55
坚持更新Java技术栈相关总结,Java、MySQL、各种中间件等,关注公众号【阿丸笔记】获取第一时间更新。 收集技术相关电子书、面试题,有需要的小伙伴可以关注公众号【阿丸笔记】,无套路领取。 1. 背景 自从大家对于MySQL数据库的稳定性有了更高的追求后,经常有小伙伴有这样的疑问,对于count(*)这样的操作,有没有正确的姿势,或者有没有可以优化的地方? 但答案比较残酷,如果已经使用了正确的索引,那么基本上没有可以优化的地方。 一旦出现慢查询了,它就是慢查询了,要改,只能自己计数或者通过其他搜索平台来做。 今天,就一起来看看为什么会这样,并对大家日常会遇到的一些的困惑进行解答。 2. count(*)的实现方式 据说,MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高。 而我们的mysql一般都是用Innodb的引擎,Innodb是怎么实现count操作的呢? InnoDB 引擎就比较麻烦了,它执行 count(*) 的时候,需要把数据一行一行地从引擎里面读出来,然后累积计数。 所以,当我们的表里面的记录越来越多的时候,count(*)就会越来越慢。 当然,我们这里说的都是不带where条件的,如果带上where条件的话,MyISAM也是很慢的。 3.正确的打开方式 嗯,首先还是说,mysql上不太推荐用count(*

mysql事务

☆樱花仙子☆ 提交于 2020-02-16 18:13:22
什么是事务 一系列有序的数据库操作: 要么全部成功 要么全部回退到操作前状态 中间状态对其他连接不可见 事务的基本操作 基本操作 说明 start transaction; 开始事务 commit; 提交(全部完成) rollback; 回滚(回到初始状态) 图中便是数据库中的事务操作;及 开始事务-->SQL操作-->commit/rollback; savepoint,保存点,在事务回滚时,可以回滚到保存点; 而提交只能全部提交不能仅提交保存点; savepoint savepoint_name; rollback to savepoint_name; commit; 事务开始也可以用 begin;或者 start transaction; 清空表数据: mysql> select * from ttt; +---+------+------+ | a | b | c | +---+------+------+ | 1 | 1 | 1 | +---+------+------+ 1 row in set (0.00 sec) mysql> truncate table ttt; Query OK, 0 rows affected (0.01 sec) mysql> select * from ttt; Empty set (0.00 sec) 当多个连接同时连在一个数据库中时