当前位置: 首页 > news >正文

MySQL 基础完全指南(视频教程)

MySQL 基础完全指南

  • MySQL 是最流行的开源关系型数据库管理系统(RDBMS),广泛用于 Web 开发、数据分析等场景。以下是 MySQL 基础核心知识点,从环境准备到常用操作,循序渐进帮你入门。
  • 视频教程:https://pan.quark.cn/s/cb365fac8807

一、环境准备

1. 安装 MySQL

  • Windows:下载 MySQL Installer,按向导安装(注意记录 root 密码),默认端口 3306。
  • Mac:用 Homebrew 安装 brew install mysql,或下载官网 dmg 包。
  • Linux(Ubuntu)sudo apt update && sudo apt install mysql-server

2. 连接 MySQL

方式 1:命令行(推荐)

打开终端/命令提示符,输入连接命令:

# 本地连接(默认端口)
mysql -u root -p# 远程连接(指定主机和端口)
mysql -h 192.168.1.100 -P 3306 -u root -p
  • -u:指定用户名(默认 root)
  • -p:提示输入密码(输入时不显示明文)
  • 连接成功后,终端会显示 mysql> 提示符。
方式 2:图形化工具(新手友好)

常用工具:Navicat、SQLyog、DBeaver(开源)、MySQL Workbench(官方免费),输入主机、端口、用户名、密码即可连接。

二、核心概念

  1. 数据库(Database):存储数据的容器,一个 MySQL 服务器可创建多个数据库。
  2. 表(Table):数据库中数据的组织形式,由行(记录)和列(字段)组成。
  3. 字段(Column):表的列,定义数据类型(如整数、字符串、日期)。
  4. 记录(Row):表的行,对应一条具体数据。
  5. SQL:结构化查询语言,用于操作数据库的标准语言(分为 DDL、DML、DQL、DCL)。

三、SQL 基础操作

1. DDL:数据定义语言(操作数据库/表结构)

(1)数据库操作
-- 1. 创建数据库(指定字符集 utf8mb4,支持 emoji)
CREATE DATABASE IF NOT EXISTS mydb DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;-- 2. 查看所有数据库
SHOW DATABASES;-- 3. 切换数据库(使用某数据库)
USE mydb;-- 4. 删除数据库(谨慎!不可逆)
DROP DATABASE IF EXISTS mydb;
(2)表操作

核心语法:CREATE TABLE 表名 (字段1 类型 约束, 字段2 类型 约束, ...)

常用数据类型:

  • 整数:INT(4字节)、TINYINT(1字节,如 0-255)
  • 字符串:VARCHAR(n)(可变长度,n 最大 65535)、CHAR(n)(固定长度)
  • 日期:DATE(日期,如 2025-11-07)、DATETIME(日期+时间,如 2025-11-07 10:30:00)
  • 小数:DECIMAL(总位数, 小数位数)(如 DECIMAL(10,2) 表示最大 99999999.99)

常用约束:

  • PRIMARY KEY:主键(唯一标识记录,非空且唯一)
  • NOT NULL:字段不能为空
  • UNIQUE:字段值唯一
  • DEFAULT:默认值
  • AUTO_INCREMENT:自增(仅整数类型,常用于主键)

示例:创建用户表 user

-- 创建表(IF NOT EXISTS 避免重复创建报错)
CREATE TABLE IF NOT EXISTS `user` (id INT PRIMARY KEY AUTO_INCREMENT,  -- 主键自增username VARCHAR(50) NOT NULL UNIQUE,  -- 用户名非空且唯一age TINYINT DEFAULT 18,  -- 年龄默认18email VARCHAR(100) UNIQUE,  -- 邮箱唯一create_time DATETIME DEFAULT CURRENT_TIMESTAMP  -- 创建时间默认当前时间
);-- 查看当前数据库所有表
SHOW TABLES;-- 查看表结构
DESC `user`;  -- 或 SHOW COLUMNS FROM `user`;-- 修改表(添加字段)
ALTER TABLE `user` ADD COLUMN phone VARCHAR(20) UNIQUE;-- 修改表(修改字段类型)
ALTER TABLE `user` MODIFY COLUMN age INT DEFAULT 20;-- 修改表(删除字段)
ALTER TABLE `user` DROP COLUMN phone;-- 删除表(谨慎!不可逆)
DROP TABLE IF EXISTS `user`;

2. DML:数据操纵语言(操作表中数据)

(1)插入数据(INSERT)
-- 方式1:指定字段插入(推荐,顺序可自定义)
INSERT INTO `user` (username, age, email) 
VALUES ('zhangsan', 22, 'zhangsan@xxx.com');-- 方式2:插入所有字段(需按表结构顺序,不推荐)
INSERT INTO `user` VALUES (NULL, 'lisi', 25, 'lisi@xxx.com', NOW());
-- 主键自增时,可填 NULL 或 0,会自动生成-- 批量插入(高效)
INSERT INTO `user` (username, age, email)
VALUES 
('wangwu', 28, 'wangwu@xxx.com'),
('zhaoliu', 30, 'zhaoliu@xxx.com');
(2)修改数据(UPDATE)
-- 修改指定记录(必须加 WHERE 条件,否则修改全表!)
UPDATE `user` 
SET age = 23, email = 'zhangsan_new@xxx.com' 
WHERE username = 'zhangsan';-- 错误示例(无 WHERE,全表年龄改为 20)
UPDATE `user` SET age = 20;  -- 谨慎!
(3)删除数据(DELETE)
-- 删除指定记录(加 WHERE 条件)
DELETE FROM `user` WHERE username = 'zhaoliu';-- 删除全表数据(保留表结构,自增主键不重置)
DELETE FROM `user`;-- 快速删除全表(清空数据+重置自增主键,比 DELETE 高效)
TRUNCATE TABLE `user`;  -- 谨慎!不可逆

3. DQL:数据查询语言(查询表中数据)

核心语法:SELECT 字段 FROM 表名 WHERE 条件 GROUP BY 分组 HAVING 筛选 ORDER BY 排序 LIMIT 限制

(1)基础查询
-- 查询所有字段(不推荐,效率低)
SELECT * FROM `user`;-- 查询指定字段(推荐)
SELECT id, username, age FROM `user`;-- 别名查询(简化结果列名)
SELECT id AS '用户ID', username AS '用户名' FROM `user`;-- 去重查询(DISTINCT)
SELECT DISTINCT age FROM `user`;  -- 查询所有不重复的年龄
(2)条件查询(WHERE)

常用运算符:

  • 比较:=(等于)、!=/<>(不等于)、><>=<=
  • 范围:BETWEEN ... AND ...(区间)、IN (值1,值2)(在集合中)
  • 模糊:LIKE(% 匹配任意字符,_ 匹配单个字符)
  • 空值:IS NULL(为空)、IS NOT NULL(不为空)
  • 逻辑:AND(且)、OR(或)、NOT(非)

示例:

-- 查询年龄大于 25 的用户
SELECT * FROM `user` WHERE age > 25;-- 查询年龄在 20-30 之间的用户
SELECT * FROM `user` WHERE age BETWEEN 20 AND 30;-- 查询用户名是 zhangsan 或 lisi 的用户
SELECT * FROM `user` WHERE username IN ('zhangsan', 'lisi');-- 模糊查询:用户名以 'z' 开头的用户
SELECT * FROM `user` WHERE username LIKE 'z%';-- 模糊查询:用户名包含 'ang' 的用户
SELECT * FROM `user` WHERE username LIKE '%ang%';-- 查询邮箱不为空的用户
SELECT * FROM `user` WHERE email IS NOT NULL;-- 多条件:年龄 >=22 且邮箱包含 @xxx.com
SELECT * FROM `user` WHERE age >=22 AND email LIKE '%@xxx.com';
(3)排序查询(ORDER BY)
-- 按年龄升序排列(默认 ASC,可省略)
SELECT * FROM `user` ORDER BY age;-- 按年龄降序排列(DESC)
SELECT * FROM `user` WHERE age >20 ORDER BY age DESC;-- 多字段排序:先按年龄降序,再按创建时间升序
SELECT * FROM `user` ORDER BY age DESC, create_time ASC;
(4)限制查询(LIMIT):分页/取前 N 条
-- 取前 2 条记录
SELECT * FROM `user` LIMIT 2;-- 分页查询(第 1 页:偏移量 0,取 2 条)
SELECT * FROM `user` LIMIT 0, 2;  -- 偏移量 = (页码-1)*每页条数-- 分页查询(第 2 页:偏移量 2,取 2 条)
SELECT * FROM `user` LIMIT 2, 2;
(5)聚合查询(GROUP BY + 聚合函数)

常用聚合函数:

  • COUNT(字段):统计记录数(忽略 NULL)
  • SUM(字段):求和(仅数值类型)
  • AVG(字段):求平均值(仅数值类型)
  • MAX(字段):求最大值
  • MIN(字段):求最小值

示例:

-- 统计用户总数
SELECT COUNT(*) AS '总用户数' FROM `user`;-- 统计年龄大于 20 的用户数
SELECT COUNT(id) AS '20岁以上用户数' FROM `user` WHERE age >20;-- 按年龄分组,统计每组用户数
SELECT age, COUNT(*) AS '人数' FROM `user` GROUP BY age;-- 分组后筛选(HAVING,区别于 WHERE:HAVING 筛选分组结果)
SELECT age, COUNT(*) AS '人数' 
FROM `user` 
GROUP BY age 
HAVING COUNT(*) >=2;  -- 筛选出用户数 >=2 的年龄组

4. DCL:数据控制语言(权限管理)

-- 创建用户(允许本地登录)
CREATE USER 'test'@'localhost' IDENTIFIED BY '123456';-- 给用户授权(mydb 数据库所有表的查询/插入权限)
GRANT SELECT, INSERT ON mydb.* TO 'test'@'localhost';-- 查看用户权限
SHOW GRANTS FOR 'test'@'localhost';-- 撤销权限
REVOKE INSERT ON mydb.* FROM 'test'@'localhost';-- 删除用户
DROP USER 'test'@'localhost';-- 修改 root 密码(MySQL 8.0+)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

四、常见问题与注意事项

  1. 字段/表名加反引号:当表名/字段名是 MySQL 关键字(如 orderuser)时,必须用反引号 ` 包裹,避免语法错误。
  2. WHERE 与 HAVING 区别
    • WHERE:筛选原始数据(分组前),不能用聚合函数。
    • HAVING:筛选分组后的结果(分组后),可以用聚合函数。
  3. NULL 处理NULL 不等于任何值(包括自身),判断空值必须用 IS NULL,不能用 =
  4. 自增主键:删除数据后,自增主键不会自动重置,需用 TRUNCATE 或手动修改自增起始值 ALTER TABLE 表名 AUTO_INCREMENT = 1;
  5. 字符集:创建数据库/表时指定 utf8mb4,避免中文乱码(utf8 实际是 utf8mb3,不支持 emoji)。
http://www.dtcms.com/a/583506.html

相关文章:

  • Linux-第四章web服务
  • 银川建设网站公司经典重庆论坛上不了了
  • 中山建网站找哪家网上商城网站建设方案
  • 做产品网站建设百度官网app
  • 新商盟显示 检查网站开发错误呢中国招标信息公开网
  • SQL表设计与约束教程
  • xampp可以做网站吗网络安全管理平台
  • C语言--函数(function)
  • 做队徽的网站简单的个人网页制作html
  • pos机网站模板中国建设银行app官网
  • 学做效果图网站有哪些戴尔网站建设
  • 建设部网站怎么查询相关专业湖南省郴州市天气
  • 校园服装网站建设演示文稿永州微网站建设
  • 上犹网站建设企业网站怎么制作
  • 建材在哪些网站做介绍西安网页设计
  • 如何制作手机商城网站视频背景做网站背景
  • 做柜子设计的网站设计电脑公司网站设计
  • 网站推广策划方案范文中国工商银行官网
  • 青海市建设局网站打折网站模板
  • js做网站登录界面p2p网站策划
  • Docker 安全:如何安全地运行容器
  • 动作识别2——问题分析
  • 广州专业网站建设哪家公司好免费一键生成转账截图
  • 【经典书籍】《代码整洁之道》第二章“命名”精华讲解
  • 全国城市雕塑建设官方网站免费网站推广网址
  • 傻瓜式网站建设新网网站备案流程
  • 乾安网站建设公司电话用jsp做网站步骤
  • 音乐网站建设策划wordpress插件翻译
  • 如何“优雅”地处理,影刀RPA创建文件文件夹时"含非法字符"的报错?
  • 汽车网站和移动端建设方案300500启迪设计