MySQL数据库环境配置与基本操作

  • 1 环境配置
  • 1.1 MySQL安装与卸载
  • 1.2 SQLyog安装
  • 1.3 SQL简介
  • 2 基本操作
  • 2.1 DDL*(Data Definition Language)*
  • 2.1.1 查询操作
  • 2.1.2 创建操作
  • 2.1.3 删除操作
  • 2.1.4 修改操作
  • 2.2 DML*(Data Manipulation Language)*
  • 2.2.1 增加数据
  • 2.2.2 修改数据
  • 2.2.3 删除操作
  • 2.3 DQL*(Data Query Language)*
  • 2.3.1 基本查询操作
  • 2.3.2 条件查询
  • 2.3.3 排序查询
  • 2.3.4 聚合函数
  • 2.3.5 分组查询
  • MySQL高级应用


1 环境配置

1.1 MySQL安装与卸载

  1. 下载地址: mysql-installer-community-5.7.28.0.msi
  2. 安装
    按照提示一步步操作即可,有几个需要注意的地方:
  3. mysql数据库secure_auth参数_mysql


  4. mysql数据库secure_auth参数_数据_02


  5. mysql数据库secure_auth参数_mysql_03

  6. 如果需要配置环境变量,①新建MYSQL_HOME变量,并配置: C:\Program Files\MySQL\MySQL Server 5.7;②编辑path系统变量,将 %MYSQL_HOME%\bin添加到path变量后。
  7. 卸载
    找到 Mysql安装目录下的 my.ini 文件,找到定义datadir的语句,datadir=C:/ProgramData/MySQL/MySQL Server 5.7/Data,这是用来保存数据文件的目录,将其复制;在控制面版卸载MySQL后,找到之前复制的路径,删除即可。

1.2 SQLyog安装

下载地址: SQLyog 12免费版

1.3 SQL简介

分类

说明

数据定义语言

DDL(Data Definition Language),用来定义数据库对象:数据库、表、列等。

数据操作语言

DML(Data Manipulation Language),用来对数据库中表的记录进行更新。

数据查询语言

DQL(Data Query Language),用来查询数据库中表的记录。

数据控制语言

DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户。

数据库(初始化生成)

作用

information_schema

信息数据库,存放其他数据库的信息。

mysql

MySQL的核心数据库,保存用户和权限

performance_schema

保存性能相关数据,监控MySQL的性能。

sys

记录了DBA所需要的一切信息,让DBA快速了解数据库的运行情况。

2 基本操作

2.1 DDL*(Data Definition Language)*

2.1.1 查询操作

-- 查询当前数据库
SELECT DATABASE();
-- 查询MySQL中有哪些数据库
SHOW DATABASE;
-- 切换数据库
USE 表名;  -- 例如USE db_1;
-- 查看表结构
DESC 表名

2.1.2 创建操作

-- 创建数据库并指定字符集
CREATE DATABASE db_1 CHARACTER SET utf8;
-- 创建表的语法格式
CREATE TABLE 表名 {
	字段1名称 字段类型(长度),
	字段2名称 字段类型(长度),
	字段3名称 字段类型  -- 最后一个字段不加逗号
};
-- 创建一个与指定表结构相同的表
CREATE TABLE test2 LIKE test1;
-- MySQL常见的数据类型:int double char(字符串,指定后占用固定长度) varchar(字符串,指定后占用实际长度) date datetime

2.1.3 删除操作

-- 永久删除数据库
DROP DATABASE 数据库名;
-- 永久删除表
DROP TABLE  表名;
-- 先判断后删除
DROP TABLE IF EXISTS test1;
-- 删除字段(列)
ALTER TABLE TableName DROP column_name;

2.1.4 修改操作

-- 修改数据库的字符集
ALTER DATABASE 数据库名 CHARACTER SET utf8;
-- 修改表的名称
RENAME TABLE 旧表名 TO 新表名;
-- 向表中添加字段
ALTER TABLE TableName ADD column_new VARCHAR(20);
-- 修改表中列的类型或长度
ALTER TABLE TableName MODIFY column_name CHAR(10);
-- 修改字段名
ALTER TABLE TableName CHANGE column_name column_New_name VARCHAR(10);

2.2 DML*(Data Manipulation Language)*

2.2.1 增加数据

-- 向表中插入数据
-- 1.插入指定字段的值
INSERT INTO TableName (column_name1,column_name2,column_name3) VALUES(123,'张三','abc');
-- 如果是一组数据包含了全部字段,也可以这么写:
INSERT INTO TableName VALUES(123,'张三','abc');
-- 在插入varchar char date 类型的数据时,必须用单引号或双引号包裹

2.2.2 修改数据

-- 把指定表中的某列的值全部修改
UPDATE TableName SET column_name = 值
-- 把指定表的某列中值为指定值的数据全部修改
UPDATE TableName SET column_name = 值 ,WHERE 条件表达式:column_name = 值
-- 例如
UPDATE student SET age = 20, name = 'zhangsan' WHERE sid = 6;

2.2.3 删除操作

-- 删除一条数据
DELETE FROM TableName WHERE column_name = 值;
-- 删除指定表中所有数据
DELETE FROM TableName;  -- 逐条删除
TRUNCATE TABLE TableName; -- 删除整张表,然后再创建一个一模一样的表

2.3 DQL*(Data Query Language)*

2.3.1 基本查询操作

查询操作并不会对原有数据修改,只是取出数据并可以按照语句操作后显示。

-- 查询表中的所有数据
SELECT * FROM TableName;  -- * 表示所有的列(字段)
-- 查询所有数据,只显示指定列(字段)
SELECT column1_name,column2_name FROM TableName;
-- 查询所有数据,然后给列名改为中文
SELECT 
	column1_name AS '中文别名1',
	column2_name AS '中文别名2',
	column3_name '中文别名3'  -- AS可以省略
FROM TableName;
-- 去重查询
SELECT DISTINCT column_name FROM TableName;
-- 数据运算并显示
SELECT column_name,column2_name + 100 AS column2_name FROM TableName;

2.3.2 条件查询

  1. 一般条件插询
-- 查询表中指定列值为指定值的数据
SELECT * FROM TableName WHERE column_name = 指定值;
-- 查询表中指定列值不为指定值的数据
SELECT * FROM TableName WHERE column_name != 指定值;     -- 或者用<>符号
-- 查询表中指定列值为指定范围的数据
SELECT * FROM TableName WHERE column_name BETWEEN 特定范围下限 AND 特定范围上限;
-- 查询表中指定列值匹配几个指定值的数据
SELECT * FROM TableName WHERE column_name IN(value1,value2,value3);
  1. 通配符的使用
-- 查询字段中含有指定字符的数据
SELECT * FROM TableName WHERE column_name LIKE '%天%';
-- 查询字段中以特定字符开头的数据
SELECT * FROM TableName WHERE column_name LIKE '天%';
-- 查询字段中以特定字符结尾的数据
SELECT * FROM TableName WHERE column_name LIKE '%天';
-- 查询字段中第二个字符为特定字符的数据
SELECT * FROM TableName WHERE column_name LIKE '_天%';
-- 查询指定字段值为NULL的数据
SELECT * FROM TableName WHERE column_name IS NULL;
-- 查询指定字段值不为空的数据
SELECT * FROM TableName WHERE column_name IS NOT NULL;
  1. limit关键字
-- 查询指定表中某一列的数据,从第offset行开始共length条
SELECT column_name FROM TableName LIMIT offset,length;

2.3.3 排序查询

使用order by语句

SELECT column_name FROM TableName [WHERE column_name = value] ORDER BY column_name [ASC/DESC]

其中ASC为升序排序(默认),DESC为降序排序

-- 单列排序(按照某一个字段排序)
SELECT * FROM TableName ORDER BY column_name;
-- 组合排序(单列排序后若有相同数据,按照另一个指定的字段排序)
SELECT * FROM TableName ORDER BY column1_name,column2_name;
-- 如果需要降序,则在需要降序的字段名后加上DESC
SELECT * FROM TableName ORDER BY column1_name DESC,column2_name DESC;

2.3.4 聚合函数

-- 查询表中数据的条数,或者指定列中数据(除去NULL)的条数
SELECT COUNT(*) FROM TableName;
SELECT COUNT(1) FROM TableName;
SELECT COUNT(column_name) FROM TableName;
-- 查询指定字段中的总和、最大值、最小值、平均值
SELECT
	SUM(column_name) AS '总和',
	MAX(column_name) '最大值',
	MIN(column_name) '最小值',
	AVG(column_name) '平均值'
FROM TableName
-- 查询指定字段中值大于给定值的数据的个数
SELECT COUNT(*) FROM TableName 	WHERE column_name > 100;
-- 查询指定字段中值大于给定值的数据的平均值
SELECT AVG(column2_name) FROM TableName WHERE column_name > 100;

2.3.5 分组查询

WHERE用于分组前过滤,后不能加聚合函数

HAVING用于分组后过滤,后可以加聚合函数

-- 通常配合聚合函数使用,比如将表按指定字段中的不同数据类型来分组,然后求各组的平均值
SELECT column1_name,AVG(column2_name) FROM TableName GROUP BY column1_name;

-- 分组之后进行条件过滤,则需要用HAVING关键字
-- 例如上述语句完成后再查看平均值大于100的情况
SELECT column1_name,AVG(column2_name) FROM TableName GROUP BY column1_name HAVING AVG(column2_name) > 100;