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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BeerBread134/article/details/79463378

 

一、写在最前面

【2018.11.12 11:44 重新排版】

【欢迎关注微信公众号“陶晨毅”,代码之外的资料分享学习打卡站】

此教程是北大地理信息系统数据库概论专业课,前两周课程自学内容整理。

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

 

具体推荐的学习步骤如下:

1.下载安装教程:http://blog.csdn.net/wtfmonking/article/details/17467399

2.图形界面熟悉教程(5min):https://www.jianshu.com/p/dc58a4efdd84

# 创建数据表的时候可能会对collation、engine等选项感到困惑,先直接使用默认选项。

Learn more(可以跳过):

https://www.jianshu.com/p/a627d33bad31

http://www.cnblogs.com/lina1006/archive/2011/04/29/2032894.html

3.阅读正文:正文23部分(正文01可以跳过)。

4.继续阅读正文剩余部分456...的笔记。同时可参照下方链接每个页面的前面部分:

http://www.runoob.com/mysql/mysql-create-tables.html

# 如对网站上的实例训练有疑问,可看正文的01部分。

5.阅读上方链接的后面部分(如下图)。

 

常用单词提示

(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。

 

<分割线,补充几句>

注意:刷新之后才可以看到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:

http://www.runoob.com/mysql/mysql-data-types.html

http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html

 

<分割线,补充几句>

按照最开头的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);

 

查询数据:(SQL SELECT语句使用WHERE 子句)

SELECT column_name,column_name

FROM table_name

[WHERE Clause]

[LIMIT N][ OFFSET M];

Learn more:

http://www.runoob.com/mysql/mysql-select-query.html

示例:

SELECT * from student_table1 WHERE name=1;

 

查询数据通用句式:

SELECT field1, field2,...fieldN FROM 数据表名1, 数据表名2...

[WHERE condition1 [AND [OR]] condition2.....;

Learn more:

http://www.runoob.com/mysql/mysql-where-clause.html

示例:

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:

http://www.runoob.com/mysql/mysql-where-clause.html

示例:

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';

 

条件组合查询数据:

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:

http://www.runoob.com/mysql/mysql-order-by.html

示例:

SELECT * from student_table1 ORDER BY name ASC;

 

分组数据:

SELECT column_name, function(column_name) FROM table_name

WHERE column_name operator value GROUP BY column_name;

Learn more:

http://www.runoob.com/mysql/mysql-group-by-statement.html

示例:

请照着上面链接的实例做,依次运行语句即可。注意!第一段语句前加上:

CREATE SCHEMA RUNOOB;

USE RUNOOB;

 

多数据表查询数据:(在SELECT, UPDATE和DELETE语句中使用JOIN子句)

Learn more:

http://www.runoob.com/mysql/mysql-join.html

示例:

请照着上面链接的实例做,下载数据库并依次运行语句即可。

 

NULL 值处理:

IS NULL:当列的值是 NULL,此运算符返回 true。

IS NOT NULL:当列的值不为 NULL, 运算符返回 true。

<=>:比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。

# 查询条件字段为 NULL 时,命令可能无法正常工作。

# 关于 NULL 的条件比较运算比较特殊的。不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。

# NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false 。

 

正则表达式:

http://www.runoob.com/mysql/mysql-regexp.html

 

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:

http://www.runoob.com/mysql/mysql-transaction.html

 

6.牢牢记住:SQL语句——ALTER命令(数据表&字段)

删除、添加字段:

ALTER TABLE 数据表名 DROP i;

ALTER TABLE 数据表名 ADD 新字段名 字段类型 [FIRST[AFTER 已有字段名]];

 

修改字段名称、类型

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;

 

修改数据表类型:

ALTER TABLE 数据表名 ENGINE = 新数据表类型;

# 查看数据表类型可以使用 SHOW TABLE STATUS 语句。

 

修改数据表名:

ALTER TABLE 数据表名 RENAME TO 新数据表名;

 

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

展开阅读全文

没有更多推荐了,返回首页