学习MySQL(上)
1.PHP 服务器组件
对于初学者建议使用集成的服务器组件,它已经包含了 PHP、Apache、Mysql 等服务,免去了开发人员将时间花费在繁琐的配置环境过程。
Window 系统可以使用 WampServer,下载地址:http://www.wampserver.com/,支持32位和64位系统,根据自己的系统选择版本。
XAMPP 支持 Mac OS 和 Window 系统,下载地址:https://www.apachefriends.org/zh_cn/index.html。
2.设置Mysql的密码
WAMP(wampserver)安装好后,首先通过WAMP进入Mysql控制台,Mysql默认密码是为空的,提示输入密码时,直接回车。使用 use mysql; 命令进入MySQL数据库,然后输入修改密码的命令语句:update user set authentication_string = password('new password'), password_expired = 'N', password_last_changed = now() where user = 'root';
然后输入命令: flush privileges;,否则修改密码的操作不会生效,最后输入命令: exit; 退出。
到此mysql密码已经设置成功,需要注意的是以上命令中的分号不能省略。
3.用户设置
如果你需要添加 MySQL 用户,你只需要在 mysql 数据库中的 user 表添加新用户即可。并授予该用户相应的权限。
mysql> use mysql;
Database changed mysql> INSERT INTO user
(host, user, password,
select_priv, insert_priv, update_priv)
VALUES ('localhost', 'name',
PASSWORD('new password'), 'Y', 'Y', 'Y');
Query OK, 1 row affected (0.20 sec) mysql> FLUSH PRIVILEGES;
Query OK, 1 row affected (0.01 sec)
用户权限列表如下:1、Select_priv 2、Insert_priv 3、Update_priv 4、Delete_priv 5、Create_priv 6、Drop_priv 7、Reload_priv 8、Shutdown_priv 9、Process_priv 10、File_priv 11、Grant_priv 12、eferences_priv 13、Index_priv 14、Alter_priv。为用户指定权限,在对应的权限列中,在插入语句中设置为 'Y' 即可。
4.管理mysql的基本命令
1、SHOW DATABASES: 列出 MySQL 数据库管理系统的数据库列表。
2、USE 数据库名 :选择要操作的MySQL数据库,使用该命令后所有Mysql命令都只针对该数据库。与之对应的使用PHP脚本选择MySQL数据库语法:
mysqli_select_db(connection,dbname);
connection:必需。规定要使用的 MySQL 连接(mysqli_connect(host,username,password,dbname,port,socket))。dbname:必需,规定要使用的默认数据库。
3、SHOW TABLES:显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。
4、SHOW TABLE STATUS FROM DATABASENAME:显示数据库 DATABASENAME 中所有表的信息
5、SHOW COLUMNS FROM 数据表:显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。
6、SHOW INDEX FROM 数据表:显示数据表的详细索引信息,包括PRIMARY KEY(主键)。
5.mysql php语法
PHP提供了多种方式来访问和操作MySQL数据库记录。PHP Mysqli函数格式如下:
mysqli_function(value,value,...);
使用 PHP 脚本连接 MySQL的语法格式如下:
mysqli_connect(host,username,password,dbname,port,socket);
host:可选。规定主机名或 IP 地址。username:可选。规定 MySQL 用户名。 password:可选。规定 MySQL 密码。dbname:可选。规定默认使用的数据库。port:可选。规定尝试连接到 MySQL 服务器的端口号。socket:可选。规定 socket 或要使用的已命名 pipe。
并能使用PHP的 mysqli_close() 函数来断开与MySQL数据库的链接。 该函数只有一个参数为 mysqli_connect() 函数创建连接成功后返回的 MySQL 连接标识符。
6.对MySQL数据库的操作
PHP 使用 mysqli_query 函数来创建或者删除 MySQL 数据库。该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。语法格式如下:
mysqli_query(connection,query,resultmode);
connection:必需。规定要使用的 MySQL 连接。query:必需,规定查询字符串,在此处插入的值为:'CREATE DATABASE DATABASENAME'。resultmode:可选。一个常量。可以是下列值中的任意一个:MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个)MYSQLI_STORE_RESULT(默认)
使用mysql命令创建数据库:
create database databasename;
使用mysql命令删除数据库:
drop database databasename;
7.MySQL 数据类型
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
1、数值类型:MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。 作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。
2、日期和时间类型 :表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
3、字符串类型:字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。
8.对mysql数据表的操作
1、通过 mysql> 命令窗口可以很简单的创建MySQL数据表。即使用 SQL 语句 CREATE TABLE 来创建数据表:
mysql> CREATE TABLE table_name(
-> table_id INT NOT NULL AUTO_INCREMENT,
-> table_title VARCHAR(100) NOT NULL,
-> table_author VARCHAR(40) NOT NULL,
-> submission_date DATE,
-> PRIMARY KEY ( table_id )
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.16 sec)
mysql>
实例分析:1、如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。2、PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。3、AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。4、ENGINE 设置存储引擎,CHARSET 设置编码。
2、使用 PHP 的 mysqli_query() 函数来创建已存在数据库的数据表。该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。
mysqli_query(connection,query,resultmode);
connection:必需。规定要使用的 MySQL 连接。query:必需,规定查询字符串,在此处插入的值为创建的数据表的详细信息。resultmode:可选。一个常量。可以是下列值中的任意一个:MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个)MYSQLI_STORE_RESULT(默认),详细代码见下:
<?php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('连接失败: ' . mysqli_error($conn));
}
echo '连接成功
';
$sql = "CREATE TABLE runoob_tbl( ".
"runoob_id INT NOT NULL AUTO_INCREMENT, ".
"runoob_title VARCHAR(100) NOT NULL, ".
"runoob_author VARCHAR(40) NOT NULL, ".
"submission_date DATE, ".
"PRIMARY KEY ( runoob_id ))ENGINE=InnoDB DEFAULT CHARSET=utf8; ";
mysqli_select_db( $conn, 'RUNOOB' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('数据表创建失败: ' . mysqli_error($conn));
}
echo "数据表创建成功\n";
mysqli_close($conn);
?>
3、在mysql>命令提示窗口中删除数据表SQL语句为 DROP TABLE:
mysql> use databasename;
Database changed
mysql> DROP TABLE tablename
Query OK, 0 rows affected (0.8 sec)
mysql>
4、PHP使用 mysqli_query 函数来删除 MySQL 数据表。该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。
mysqli_query(connection,query,resultmode);
connection:必需。规定要使用的 MySQL 连接。query:必需,规定查询字符串,在此处插入的值为:"DROP TABLE runoob_tbl";。resultmode:可选。一个常量。可以是下列值中的任意一个:MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个)MYSQLI_STORE_RESULT(默认),详细代码参考本项目中第2条。
9、MySQL 插入数据
1、使用 SQL INSERT INTO 语句向 MySQL 数据表 blog_table-test 插入数据:
mysql> use dababasename;
Database changed
mysql> INSERT INTO tablename
-> (table_title, table_author, submission_date)
-> VALUES
-> ("学习 closure", "Anani", NOW());
Query OK, 1 rows affected, 1 warnings (0.01 sec)
mysql>
2、使用PHP 的 mysqli_query() 函数来执行 SQL INSERT INTO命令来插入数据。该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。
mysqli_query(connection,query,resultmode);
connection:必需。规定要使用的 MySQL 连接。query:必需,规定查询字符串,在此处插入的值为添加数据的详细代码。resultmode:可选。一个常量。可以是下列值中的任意一个:MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个)MYSQLI_STORE_RESULT(默认)。详细代码:
<?php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = 'new password'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('连接失败: ' . mysqli_error($conn));
}
echo '连接成功
';
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8"); $runoob_title = '学习 closue';
$runoob_author = 'Anani';
$submission_date = '2017-11-28'; $sql = "INSERT INTO blog_table_test ".
"(table_title,table_author, submission_date) ".
"VALUES ".
"('$runoob_title','$runoob_author','$submission_date')"; mysqli_select_db( $conn, 'blog' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('无法插入数据: ' . mysqli_error($conn));
}
echo "数据插入成功\n";
mysqli_close($conn);
?>
10、MySQL 查询数据
1、在MySQL数据库中查询数据通用的 SELECT 语法:
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
注意:1、SELECT 命令可以读取一条或者多条记录。2、查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。3、使用 WHERE 语句来包含任何条件。4、使用 LIMIT 属性来设定返回的记录数。5、通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。6、使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据。例如使用 select * form tablename 语句返回该表格的所有记录。
2、使用 PHP 函数的 mysqli_query() 及 SQL SELECT 命令来获取数据。
该函数用于执行 SQL 命令,然后通过 PHP 函数 mysqli_fetch_array() 来使用或输出所有查询的数据。mysqli_fetch_array() 函数从结果集中取得一行作为关联数组(此时对应该函数的第二个参数为:MYSQL_ASSOC或对应函数:mysqli_fetch_assoc()),或数字数组(此时对应该函数的第二个参数为:MYSQL_NUM),或二者兼有 返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。
在我们执行完 SELECT 语句后,释放游标内存可以通过 PHP 函数 mysqli_free_result() 来实现内存的释放。其参数为查询数据执行的 mysqli_query()函数。
11、MySQL WHERE 子句
1、可将 WHERE 子句添加到 SELECT 语句中,实现条件地从表中选取数据,常见的比较符皆用于 WHERE 子句中,并且可以使用 AND 或者 OR 指定一个或多个条件。当然 WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
例如在SQL SELECT语句使用WHERE子句来读取MySQL数据表 blog_table_test 中的数据,并设置条件返回表中 table_author 字段值为 Anani 的所有记录:
SELECT * from blog_table_test WHERE table_author='Anani';
MySQL 的 WHERE 子句的字符串比较是不区分大小写的。 你可以使用 BINARY 关键字来设定 WHERE 子句的字符串比较是区分大小写的。使用时将该关键字置于 WHERE之后再加上条件即可。
2、使用 PHP 函数的 mysqli_query() 及相同的 SQL SELECT 带上 WHERE 子句的命令来获取数据。该函数用于执行 SQL 命令,然后通过 PHP 函数 mysqli_fetch_array() 来输出所有查询的数据。
12、MySQL UPDATE 查询
如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作。且:1、可以同时更新一个或多个字段。2、可以在 WHERE 子句中指定任何条件。3、可以在 WHERE 子句中指定任何条件。
1、以下在 SQL UPDATE 命令使用 WHERE 子句来更新 blog_table_test 表中指定的数据:
mysql> UPDATE blog_table_test SET table_title='study HTML DOM' WHERE table_id=1;
Query OK, 1 rows affected (0.01 sec)
2、PHP 中使用函数 mysqli_query() 来执行 SQL 语句,可以在 SQL UPDATE 语句中使用或者不使用 WHERE 子句。不使用 WHERE 子句将数据表的全部数据进行更新,所以要慎重。该函数与在mysql>命令提示符中执行SQL语句的效果是一样的。
13、MySQL DELETE 语句
在mysql中可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录。
1、在 SQL DELETE 命令中使用 WHERE 子句来删除 MySQL 数据表 blog_table_test 所选的数据。以下实例将删除 blog_table_test 表中 table_id 为 1的记录:
mysql> use blog;
Database changed
mysql> DELETE FROM blog_table_test WHERE table_id=1;
Query OK, 1 row affected (0.23 sec)
2、PHP使用 mysqli_query() 函数来执行SQL语句, 你可以在 SQL DELETE 命令中使用或不使用 WHERE 子句。该函数与 mysql> 命令符执行SQL命令的效果是一样的。
14、MySQL LIKE 子句
SQL LIKE 子句中使用百分号 %字符来表示任意字符,类似于UNIX或正则表达式中的星号 *。如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。
1、下面将在 SQL SELECT 命令中使用 WHERE...LIKE 子句来从 blog_table_test 表中获取 table_title 字段中以 closure 为结尾的的所有记录:
mysql> use blog;
Database changed
mysql> SELECT * from blog_table_test WHERE table_title LIKE '%closure';
2、使用PHP函数的 mysqli_query() 及相同的 SQL SELECT 带上 WHERE...LIKE 子句的命令来获取数据,然后通过 PHP 函数 mysqli_fetch_assoc() 来输出所有查询的数据。
15、MySQL UNION 操作符
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。该操作符有两个可选参数:1、删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。2、返回所有结果集,包含重复数据。
下面的 SQL 语句使用 UNION ALL 从 "blog_table_test" 和 "blog_table" 表中选取所有的 Anani 的数据(包含重复的值):
SELECT table_title, table_author FROM blog_table_test
WHERE title_author='Anani'
UNION ALL
SELECT table_title, author FROM blog_table
WHERE table_author='Anani';
16、MySQL 排序
若是需要对从 MySQL 表中使用 SQL SELECT 语句来读取来的数据进行排序,可以使用 MySQL 的 ORDER BY 子句来设定排序方式来进行排序,再返回搜索结果。设定排序方式时你可以:1、可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。2、设定多个字段来排序。3、使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。4、添加 WHERE...LIKE 子句来设置条件。
1、在命令提示符中使用 ORDER BY 子句来读取MySQL 数据表 blog_table_test 中的数据,并将结果按 submission_date 字段的升序排列:
mysql> use blog;
Database changed
mysql> SELECT * from blog_table_test ORDER BY submission_date ASC;
2、用PHP函数的 mysqli_query() 及相同的 SQL SELECT 带上 ORDER BY 子句的命令来获取数据。该函数用于执行 SQL 命令,然后通过 PHP 函数 mysqli_fetch_array() 来输出所有查询的数据。
17、MySQL GROUP BY 语句
GROUP BY 语句根据一个或多个列对结果集进行分组,在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。
下面的实例使用 GROUP BY 语句 将数据表按名字进行分组,并统计每个人有多少条记录:
mysql> SELECT table_author, COUNT(*) FROM blog_table_test GROUP BY table_author;
在上面的例子中我们可以使用 as 改变在结果数据表中函数占据的表头的值:
mysql> SELECT table_author, COUNT(*) AS count FROM blog_table_test GROUP BY table_author;
WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。例如将以上的数据表按名字进行分组,再统计每个人学习的次数:
mysql> SELECT table_author, SUM(study_num) as study_count FROM blog_table_test GROUP BY table_author WITH ROLLUP;
coalesce 语法:select coalesce(a,b,c);其中如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(无意义)。例如:
ysql> SELECT coalesce(table_author, '合计'), SUM(study_num) as study_count FROM blog_table_test GROUP BY table_author WITH ROLLUP;
18、Mysql 连接的使用
MySQL 的 JOIN 在两个或多个表中查询数据。JOIN 按照功能大致分为如下三类:1、NNER JOIN(可以省略 INNER,表示内连接,或等值连接):获取两个表中字段匹配关系的记录。2、LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。3、RIGHT JOIN(右连接):用于获取右表所有记录,即使左表没有对应匹配的记录。
1、使用MySQL的INNER JOIN连接两张表来读取blog_table_test表中所有table_author字段在blog_table表对应的table_count字段值:
mysql> SELECT a.table_id, a.table_author, b.table_count FROM blog_table_test a INNER JOIN blog_table b ON a.table_author = b.table_author;
上面的语句等同于:
mysql> SELECT a.table_id, a.table_author, b.table_count FROM blog_table_test a , blog_table b WHERE a.table_author = b.table_author;
2、左连接和右连接在另一侧没有对应的field字段值时,依旧会读取该侧数据,并设置对应的对侧空缺为NULL。
3、PHP 中使用 mysqli_query() 函数来执行 SQL 语句,你可以使用以上的相同的 SQL 语句作为 mysqli_query() 函数的参数。
19、MySQL NULL 值处理
MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。为了处理这种情况,MySQL提供了三大运算符:1、IS NULL: 当列的值是 NULL,此运算符返回 true。2、IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。3、<=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。
PHP 脚本中你可以在 if...else 语句来处理变量是否为空,并生成相应的条件语句。
20、MySQL 正则表达式
MySQL 支持正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。例如查找table_author字段中以'An'为开头的所有数据:
mysql> SELECT table_author FROM blog_table_test WHERE table_author REGEXP '^An';
21、MySQL 事务
MySQL 事务主要用于处理操作量大,复杂度高的数据。在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。事务用来管理 insert,update,delete 语句。而事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
事务是必须满足4个条件(ACID): Atomicity(原子性):一组事务,要么成功;要么撤回。、Consistency(稳定性):有非法数据(外键约束之类),事务撤回。、Isolation(隔离性):事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。、Durability(可靠性):软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit 选项 决定什么时候吧事务保存到日志里。
事务控制语句:1、BEGIN或START TRANSACTION;显式地开启一个事务;2、COMMIT;也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改称为永久性的;3、ROLLBACK;有可以使用ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;4、SAVEPOINT identifier;SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT;5、RELEASE SAVEPOINT identifier;删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;6、ROLLBACK TO identifier;把事务回滚到标记点;7、SET TRANSACTION;用来设置事务的隔离级别。InnoDB存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。8、SET AUTOCOMMIT=0 禁止自动提交;SET AUTOCOMMIT=1 开启自动提交。
事务例子:
mysql> use blog;
Database changed
mysql> CREATE TABLE table_transaction_test( id int(5)) engine=innodb; # 创建数据表
Query OK, 0 rows affected (0.04 sec)
mysql> begin; # 开始事务
Query OK, 0 rows affected (0.00 sec) mysql> insert into table_transaction_test value(1);
Query OK, 1 rows affected (0.01 sec) mysql> rollback; # 回滚
Query OK, 0 rows affected (0.00 sec) mysql> commit; # 提交事务
PHP中使用事务的方法与之前PHP语言操作MySQL的语句大同小异,主要步骤:1、建立连接:$conn=mysqli_connect()。2、检查连接。3、设置编码:mysqli_query($conn, "set names utf8");。4、进入指定的数据库:mysqli_select_db( $conn, 'blog' );。5、设置事务不自动提交:mysqli_query($conn, "SET AUTOCOMMIT=0");。6、开始事务:mysqli_begin_transaction($conn); 。7、事务:if(!mysqli_query($conn, "insert into table_transaction_test (id) values(1)")){mysqli_query($conn, "ROLLBACK");// 判断当执行失败时回滚}。8、提交事务:mysqli_commit($conn);9、断开连接:mysqli_close($conn);。
学习更多关于MySQL的知识请点击:学习MySQL(下)
学习MySQL(上)的更多相关文章
- 烂泥:学习mysql数据库主从同步复制原理
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 说明本篇文章部分转载自互联网. MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对 ...
- 学习MySQL(下)
具体实例 22.MySQL ALTER命令 当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 1.如果需要修改数据表的名称,可以在 ALTER TABLE 语句中使 ...
- 学习MySQL我们应该知道哪些东西?
随笔:小编由于年前一直在找工作,而年后找到工作后又一直在忙工作,所以也很少有时间给大家写点什么,总的来说呢,回顾一下之前面试的几次经历,也曾小小的总结了一下自己的不足,发现自己虽然一直在原有的公司(外 ...
- 重新学习MySQL数据库10:MySQL里的那些日志们
重新学习MySQL数据库10:MySQL里的那些日志们 同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志, ...
- 重新学习MySQL数据库9:Innodb中的事务隔离级别和锁的关系
重新学习MySQL数据库9:Innodb中的事务隔离级别和锁的关系 Innodb中的事务隔离级别和锁的关系 前言: 我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁 ...
- 重新学习MySQL数据库7:详解MyIsam与InnoDB引擎的锁实现
重新学习Mysql数据库7:详解MyIsam与InnoDB引擎的锁实现 说到锁机制之前,先来看看Mysql的存储引擎,毕竟不同的引擎的锁机制也随着不同. 三类常见引擎: MyIsam :不支持事务,不 ...
- 重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化
重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化 一:Mysql原理与慢查询 MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能 ...
- 重新学习MySQL数据库3:Mysql存储引擎与数据存储原理
重新学习Mysql数据库3:Mysql存储引擎与数据存储原理 数据库的定义 很多开发者在最开始时其实都对数据库有一个比较模糊的认识,觉得数据库就是一堆数据的集合,但是实际却比这复杂的多,数据库领域中有 ...
- 重新学习MySQL数据库4:Mysql索引实现原理
重新学习Mysql数据库4:Mysql索引实现原理 MySQL索引类型 (https://www.cnblogs.com/luyucheng/p/6289714.html) 一.简介 MySQL目前主 ...
随机推荐
- Java中数组的遍历
(I)标准for循环遍历数组 例如代码片段: int [] nums = new int [] {0,1,2,3,4,5,6,7,8,9}; for(int i=0;i<11;i++){ Sys ...
- 62、django之MTV模型(urls,view)
今天就进入到python最重要的阶段了django框架,框架就像胶水一样会将我们前面学的所有知识点粘合在一起,所以以前有哪些部分模糊的可以看看前面的随笔.本篇主要介绍djangoMTV模型,视图层之路 ...
- 用Eclipse 搭建一个Maven Spring SpringMVC 项目
1: 先创建一个maven web 项目: 可以参照之前的文章: 用Maven 创建一个 简单的 JavaWeb 项目 创建好之后的目录是这样的; 2: 先配置maven 修改pom.xml & ...
- LINUX 笔记-iostat命令
显示CPU和I/O统计信息 iostat的不带参数的显示CPU和I/ O的所有分区的统计信息 -c Display the CPU utilization report. -d Display the ...
- Entity Framework Core 2.0 使用代码进行自动迁移
一.前言 我们在使用EF进行开发的时候,肯定会遇到将迁移更新到生产数据库这个问题,前面写了一篇文章介绍了Entity Framework Core 2.0的入门使用,这里面介绍了使用命令生成迁移所需的 ...
- PHP上传大文件配置
使用PHP上传比较大的文件时,发现程序没反应,那是因为PHP的默认设置限制了上传文件的大小,所以要修改配置文件php.ini中的一些选项:(以下只是我个人的配置,大家可根据自己的实际需要配置) fil ...
- 浅析Entity Framework Core中的并发处理
前言 Entity Framework Core 2.0更新也已经有一段时间了,园子里也有不少的文章.. 本文主要是浅析一下Entity Framework Core的并发处理方式. 1.常见的并发处 ...
- 博客迁移至 http://www.loveli.site
对于博客园的Markdow 支持太过...,你懂的, 以后博客迁移至:http://www.loveli.site
- C++ 多态与虚函数
1.多态的概念 由虚函数实现的动态多态性就是:同一类族中不同类的对象,对同一函数调用作出不同的响应. 先看下面这个简单的例子: #include<iostream> using std:: ...
- Luck and Love(二维线段树)
Luck and Love Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...