MySQL数据库环境配置与基本操作
1 环境配置
1.1 MySQL安装与卸载
-
安装
按照提示一步步操作即可,有几个需要注意的地方:
如果需要配置环境变量,①新建
MYSQL_HOME
变量,并配置:C:\Program Files\MySQL\MySQL Server 5.7
;②编辑path系统变量,将%MYSQL_HOME%\bin
添加到path变量后。 -
卸载
找到 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 条件查询
- 一般条件插询
-- 查询表中指定列值为指定值的数据
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);
- 通配符的使用
-- 查询字段中含有指定字符的数据
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;
- 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;