一小时教程 MySQL从安装到使用 详细步骤 完整图文示例练习教程 学习笔记

一、写在最前面
学习步骤
数据库概论课程要求只需要掌握在MySQL客户端输入SQL语句进行操作即可,不包括命令行部分。
所以步骤1234已经涵盖课程基础要求。安装windows和mac没有大差别。mac可以直接进行步骤2。

2.图形界面熟悉教程(5min):https://www.jianshu.com/p/dc58a4efdd84
# 创建数据表的时候可能会对collation、engine等选项感到困惑,先直接使用默认选项。
Learn more(可以跳过):
3.阅读正文:正文23部分(正文01可以跳过)。
4.继续阅读正文剩余部分456...的笔记。同时可参照下方链接每个页面的前面部分:
# 如对网站上的实例训练有疑问,可看正文的01部分。
5.阅读上方链接的后面部分。
一小时教程 MySQL从安装到使用 详细步骤 完整图文示例练习教程 学习笔记


常用单词提示
(R)DBMS (关系型)数据库管理系统;
Database schema 数据库架构;Tables 数据表;
Columns 列;Indexes 索引;Views 视图;Events 事件;Fields 字段;
Engine 存储引擎(数据表类型,如InnoDB);Collation 字符集(存储格式,如utf-8);
Duplicate entry 重复录入;Syntax 语法;

# 属性(Attribute):表中的一列即一个属性,通常称为字段(Field);

二、正文部分
简单介绍:
MySql数据库是开放源代码的关系型数据库。它可以提供的功能有:支持sql语言、子查询、存储过程、触发器、视图、索引、事务、锁、外键约束和影像复制等。
MySQL 具有一套对字符、单词以及特殊符号的使用规定,MySQL 通过执行 SQL 脚本来完成对数据库的操作,该脚本由一条或多条 MySQL语句(SQL语句 + 扩展语句)组成,保存时脚本文件后缀名一般为.sql。在控制台下,MySQL 客户端也可以对语句进行单句执行而不用保存为.sql文件(mysql 命令提示窗口)。
  • MySQL语法对大小写不敏感,但是大写更容易看出,建议使用大写。
  • 但是所有的数据库名,表名,表字段都是区分大小写的。所以使用SQL命令时需要输入正确的名称。
  • 如果一条SQL语句太长,可以通过回车键创建一个新行,SQL语句的命令结束符为分号。

0.可以跳过:从命令行中连接mysql服务器的步骤:
(使用root用户登录,拥有最高权限)
1.打开命令行,进入安装路径C:\Program Files\MySQL\MySQL Server 5.7\bin。
2.输入mysql -u root -p,回车。输入密码,回车。
3.登录成功,出现 mysql> 命令提示窗口,可以在上面执行SQL语句。
(之后和在MySQL客户端输入SQL语句是类似的)


1.可以跳过:命令行中MySQL数据库命令
注意:在安装路径C:\Program Files\MySQL\MySQL Server 5.7\bin输入以下命令(需要输密码)。
mysqladmin -u root -p create RUNOOB
创建 MySQL 数据库 RUNOOB。
mysqladmin -u root -p drop RUNOOB
删除数据库RUNOOB,执行后会出现一个提示框,来确认是否真的删除数据库。


2.牢牢记住:管理MySQL的SQL语句
以下列出了使用Mysql数据库过程中常用的命令(SQL语句):
(作为示范,数据库名可以选择world,数据表名可以选择city)

CREATE SCHEMA 数据库名;
创建 MySQL 数据库 RUNOOB。
DROP SCHEMA 数据库名;
删除数据库RUNOOB。

——————————————分割线——————————————
一小时教程 MySQL从安装到使用 详细步骤 完整图文示例练习教程 学习笔记
注意:刷新之后才可以看到Navigator列表的相应变化。
——————————————分割线——————————————

USE 数据库名;
选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。
SHOW DATABASES;
列出 MySQL 数据库管理系统的数据库列表。
SHOW TABLES;
显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。
SHOW COLUMNS FROM 数据表名;
显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。
SHOW INDEX FROM 数据表名;
显示数据表的详细索引信息,包括PRIMARY KEY(主键)。
SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'] [\G];
该命令将输出Mysql数据库管理系统的性能及统计信息。
  • SHOW TABLE STATUS FROM 数据库名;
显示数据库中所有表的信息。
  • SHOW TABLE STATUS FROM 数据库名 LIKE 'c%';
显示表名以c开头的表的信息。
  • SHOW TABLE STATUS FROM 数据库名 LIKE 'c%'\G;
加上 \G,查询结果按列打印。


3.了解一下:MySQL 数据类型
MySQL 有三大类数据类型, 分别为数字、日期\时间、字符串, 这三大类中又更细致的划分了许多子类型:
数字类型
整数:tinyint、smallint、mediumint、int、bigint
浮点数:float、double、real、decimal
日期和时间
date、time、datetime、timestamp、year
字符串类型
字符串:char、varchar
文本:tinytext、text、mediumtext、longtext
二进制(可用来存储图片、音乐等):tinyblob、blob、mediumblob、longblob
Learn more:

——————————————分割线——————————————
一小时教程 MySQL从安装到使用 详细步骤 完整图文示例练习教程 学习笔记
一小时教程 MySQL从安装到使用 详细步骤 完整图文示例练习教程 学习笔记
按照最开头的5min入门链接,应该就可以创建如上的Schema(student)和Table(student_table1)并查看。
实际上之前图形界面的操作都会有对应的SQL语句显示,所以按照那个学语法应该会比较简单。
Anyway,下面就用这个Table来做演示。
——————————————分割线——————————————

4.牢牢记住:SQL语句——数据处理
插入数据:
INSERT INTO 数据表名 ( field1, field2,...fieldN )
VALUES ( value1, value2,...valueN );
示例:
INSERT INTO student_table1 (name, id, age, class )
VALUES (1, 2, 3, 4);
一小时教程 MySQL从安装到使用 详细步骤 完整图文示例练习教程 学习笔记

查询数据:(SQL SELECT语句使用WHERE 子句)
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M];
Learn more:
示例:
SELECT * from student_table1 WHERE name=1;

查询数据通用句式:
SELECT field1, field2,...fieldN FROM 数据表名1, 数据表名2...
[WHERE condition1 [AND [OR]] condition2.....;
Learn more:
示例:
SELECT * from student_table1 WHERE name=1;

修改数据:(SQL UPDATE语句使用WHERE 子句)
UPDATE 数据表名 SET field1=new-value1, field2=new-value2
[WHERE Clause];
示例:
UPDATE `student`.`student_table1` SET `class`=NULL WHERE `name`='1' and`id`='2' and`age`='3' and`class`='4';

删除数据:
DELETE FROM 数据库名.数据表名 [WHERE Clause];
Learn more:
示例:
DELETE FROM `student`.`student_table1` WHERE `name`='2' and`id`='3' and`age`='4' and`class`='5';

不完全匹配查询数据:
SELECT field1, field2,...fieldN FROM 数据表名
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue';
# SQL LIKE 子句中使用百分号 %字符来表示任意字符,类似于UNIX或正则表达式中的星号 *。
# 如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。
示例:
SELECT * from student_table1 WHERE name LIKE '%1';
一小时教程 MySQL从安装到使用 详细步骤 完整图文示例练习教程 学习笔记

条件组合查询数据:
SELECT expression1, expression2, ... expression_n
FROM tables [WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables [WHERE conditions];
# UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

排序数据:(SELECT 语句使用 ORDER BY 子句将查询数据排序后再返回)
SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]];
# 读取表中指定数据并按指定字段字段的升序/降序排列。
Learn more:
示例:
SELECT * from student_table1 ORDER BY name ASC;
一小时教程 MySQL从安装到使用 详细步骤 完整图文示例练习教程 学习笔记

分组数据:
SELECT column_name, function(column_name) FROM table_name
WHERE column_name operator value GROUP BY column_name;
Learn more:
示例:
请照着上面链接的实例做,依次运行语句即可。注意!第一段语句前加上:
CREATE SCHEMA RUNOOB;
USE RUNOOB;

多数据表查询数据:(在SELECT, UPDATE和DELETE语句中使用JOIN子句)
Learn more:
示例:
请照着上面链接的实例做,下载数据库并依次运行语句即可。

NULL 值处理:
IS NULL:当列的值是 NULL,此运算符返回 true。
IS NOT NULL:当列的值不为 NULL, 运算符返回 true。
<=>:比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。
# 查询条件字段为 NULL 时,命令可能无法正常工作。
# 关于 NULL 的条件比较运算比较特殊的。不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。
# NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false 。

正则表达式:


5.理解一下:MySQL的事务概念
  • 事务(transaction)是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位(保证成批的 SQL 语句要么全部执行,要么全部不执行)。
  • MySQL 事务主要用于处理操作量大,复杂度高的数据。
  • 事务的四个特性(ACID):原子性(A),一致性(C),隔离性(I),持久性(D)

事务控制语句:
BEGIN或START TRANSACTION;
显式地开启一个事务。
COMMIT;
也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改称为永久性的。
ROLLBACK;
有可以使用ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改。
SAVEPOINT identifier;
SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT。
RELEASE SAVEPOINT identifier;
删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常。
ROLLBACK TO identifier;
把事务回滚到标记点。
SET TRANSACTION;
用来设置事务的隔离级别。InnoDB存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。

MYSQL 事务处理实现:
1、用 BEGIN, ROLLBACK, COMMIT来实现
BEGIN 开始一个事务
ROLLBACK 事务回滚
COMMIT 事务确认
2、直接用 SET 来改变 MySQL 的自动提交模式:
SET AUTOCOMMIT=0 禁止自动提交
SET AUTOCOMMIT=1 开启自动提交

Learn more:


6.牢牢记住:SQL语句——ALTER命令(数据表&字段)
删除、添加字段:
ALTER TABLE 数据表名 DROP i;
ALTER TABLE 数据表名 ADD 新字段名 字段类型 [FIRST[AFTER 已有字段名]];
一小时教程 MySQL从安装到使用 详细步骤 完整图文示例练习教程 学习笔记

修改字段名称、类型
ALTER TABLE 数据表名 CHANGE 字段名 新字段名 新字段类型;

指定、修改、删除字段默认值:
ALTER TABLE 数据表名 MODIFY 字段名 字段类型 NOT NULL DEFAULT 默认值;
ALTER TABLE 数据表名 ALTER 字段名 SET DEFAULT 默认值;
ALTER TABLE 数据表名 ALTER 字段名 DROP DEFAULT;
示例:
ALTER TABLE student_table1 MODIFY id int NOT NULL DEFAULT 100;
INSERT INTO `student`.`student_table1` (`age`, `class`) VALUES ('1', '11');
INSERT INTO `student`.`student_table1` (`age`, `class`) VALUES ('1', '111');
INSERT INTO `student`.`student_table1` (`age`, `class`) VALUES ('1', '1111');
SELECT * FROM student.student_table1;
一小时教程 MySQL从安装到使用 详细步骤 完整图文示例练习教程 学习笔记

修改数据表类型:
ALTER TABLE 数据表名 ENGINE = 新数据表类型;
# 查看数据表类型可以使用 SHOW TABLE STATUS 语句。

修改数据表名:
ALTER TABLE 数据表名 RENAME TO 新数据表名;

笔记至此暂时结束啦,有兴趣可以再找其他教程深入。