《Mysql数据库应用》 第2版 郭文明 实验1 在MySQL中创建数据库和表核心操作与思路解析

【实验1-1】MySQL的安装与配置。

1.MySQL与MySQL Workbench下载

MySQL官方网站地址:http://www.mysql.com/

下载MySQL:

下载MySQL Workbench :

2.MySQL与MySQL Workbench安装与配置

3.设置环境变量,以便通过命令提示符操作mysql

【实验1-2】创建"汽车用品网上商城系统"数据库。

【实验1-3】在Shopping数据库下,参见3.5节,创建表3-4~表3-11的八个表。

【实验1-4】使用SHOW、DESCRIBE语句查看表。

【实验1-5】使用ALTER TABLE、RENAME TABLE语句管理表。

【实验1-6】使用DROP TABLE语句删除表,也可以使用MySQL Workbench删除表。

【实验1-7】连接、断开MySQL服务器,启动、停止MySQL服务器。

1.通过系统服务启动和停止MySQL服务器:

2.在命令提示符下启动和停止MySQL服务器:

3.在命令提示符下连接、断开MySQL服务器:

4.在MySQL Workbench中连接、断开MySQL服务器:

【实验1-8】使用SHOW DATABASE、USE DATABASE、DROP DATABASE语句管理"网上商城系统" Shopping数据库。

以下为代码:

本实验用到的sql语句如下:

create table `shopping`;

use shopping;

show tables;

describe autoparts;

alter table autoparts add cid int;

rename table autopartsto shoppingcart;

drop table shoppingcart;

show databases;

drop databases shopping1;

以下为命令行下的语句:

net stop mysql

mysql -u root -p test

exit

sql 复制代码
create table `shopping`;
use shopping;
show tables;
describe autoparts;
alter table autoparts add cid int;
rename table autopartsto shoppingcart;
drop table shoppingcart;
show databases;
drop databases shopping1;
 
以下为命令行下的语句:
 
net stop mysql
mysql -u root -p test
exit

一、mysql基础配置示例

client

default-character-set = utf8mb4

mysql

default-character-set = utf8mb4

mysqld

字符集设置(防乱码关键)

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

连接设置

max_connections = 200

default_storage_engine = InnoDB

日志设置

general_log = 0

slow_query_log = 1

long_query_time = 2

内存设置(根据实际情况调整)

innodb_buffer_pool_size = 1G

key_buffer_size = 256M

二、中文乱码问题全面解决方案

1. 理解字符集概念

  • utf8:MySQL的"utf8"是阉割版(最多3字节,不支持emoji)

  • utf8mb4:真正的UTF-8(4字节,支持所有Unicode字符)

  • 推荐一律使用 utf8mb4

2. 安装时的字符集设置

Windows安装程序

  1. 在配置步骤选择"Server Machine"

  2. 在字符集设置页面选择"Use UTF8MB4 as default character set"

源码编译安装:

cmake . -DDEFAULT_CHARSET=utf8mb4 \

-DDEFAULT_COLLATION=utf8mb4_unicode_ci

3.配置文件中的字符集设置(关键)

mysqld

服务器默认字符集

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

连接字符集

init_connect = 'SET NAMES utf8mb4'

各种字符集统一设置

character-set-client-handshake = TRUE

client

default-character-set = utf8mb4

mysql

default-character-set = utf8mb4

4.创建数据库和表时的设置

-- 创建数据库时指定字符集

CREATE DATABASE `mydb`

DEFAULT CHARACTER SET utf8mb4

COLLATE utf8mb4_unicode_ci;

-- 创建表时指定字符集

CREATE TABLE `users` (

`id` INT NOT NULL AUTO_INCREMENT,

`name` VARCHAR(100) NOT NULL COMMENT '用户名',

PRIMARY KEY (`id`)

) ENGINE=InnoDB

DEFAULT CHARSET=utf8mb4

COLLATE=utf8mb4_unicode_ci

COMMENT='用户表';

5. 检查字符集配置

-- 查看服务器字符集设置

SHOW VARIABLES LIKE 'character_set%';

SHOW VARIABLES LIKE 'collation%';

-- 查看数据库字符集

SELECT

SCHEMA_NAME '数据库',

DEFAULT_CHARACTER_SET_NAME '字符集',

DEFAULT_COLLATION_NAME '排序规则'

FROM information_schema.SCHEMATA;

-- 查看表字符集

SELECT

TABLE_SCHEMA '数据库',

TABLE_NAME '表',

TABLE_COLLATION '排序规则'

FROM information_schema.TABLES

WHERE TABLE_SCHEMA = 'your_database';

6. 连接时的字符集设置

JDBC连接(Java)

String url = "jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai";

Python连接

import pymysql

conn = pymysql.connect(

host='localhost',

user='root',

password='password',

database='mydb',

charset='utf8mb4', # 关键!

cursorclass=pymysql.cursors.DictCursor

)

PHP PDO连接

$pdo = new PDO(

'mysql:host=localhost;dbname=test;charset=utf8mb4',

'username',

'password'

);

7. 已存在数据的转换

-- 修改数据库字符集

ALTER DATABASE `database_name`

CHARACTER SET = utf8mb4

COLLATE = utf8mb4_unicode_ci;

-- 修改表字符集

ALTER TABLE `table_name`

CONVERT TO CHARACTER SET utf8mb4

COLLATE utf8mb4_unicode_ci;

-- 修改字段字符集

ALTER TABLE `table_name`

MODIFY `column_name` VARCHAR(255)

CHARACTER SET utf8mb4

COLLATE utf8mb4_unicode_ci;

8. 常见乱码场景及解决

场景1:插入数据时乱码

-- 临时解决方案(会话级别)

SET NAMES utf8mb4;

SET CHARACTER SET utf8mb4;

-- 然后执行插入操作

INSERT INTO table (name) VALUES ('中文内容');

场景2:查询结果乱码

-- 确保连接时指定字符集

-- 或在查询前设置

SET character_set_results = utf8mb4;

SELECT * FROM table;

场景3:命令行显示乱码

Linux/Mac终端

mysql --default-character-set=utf8mb4 -u root -p

Windows命令行

chcp 65001 # 设置控制台为UTF-8

mysql -u root -p --default-character-set=utf8mb4

  1. 备份与恢复时的字符集

备份时指定字符集

mysqldump -u root -p --default-character-set=utf8mb4 \

--set-charset \

--skip-set-charset \

database_name > backup.sql

恢复时指定字符集

mysql -u root -p --default-character-set=utf8mb4 \

database_name < backup.sql

三、总结要点

  1. 统一使用 utf8mb4:从安装到应用,全程统一字符集

  2. 配置文件优先:在 my.cnf/my.ini 中配置全局字符集

  3. 连接时明确指定:所有客户端连接都要指定 utf8mb4

  4. 四层字符集统一

    • 服务器层(character-set-server)

    • 数据库层(CREATE DATABASE)

    • 表/字段层(CREATE TABLE)

    • 连接层(SET NAMES/连接参数)

  5. 备份恢复一致性:备份恢复时保持字符集一致

  6. 工具配置:确保所有管理工具(Workbench、Navicat等)使用正确编码

按照以上步骤配置,可以确保 MySQL 支持中文和各种特殊字符,避免乱码问题。

本文为个人学习笔记与经验总结,仅供学习交流参考

相关推荐
sim202015 小时前
systemctl isolate graphical.target命令不能随便敲
linux·mysql
档案宝档案管理16 小时前
档案宝自动化档案管理,从采集、整理到归档、利用,一步到位
大数据·数据库·人工智能·档案·档案管理
C_心欲无痕16 小时前
浏览器缓存: IndexDB
前端·数据库·缓存·oracle
lkbhua莱克瓦2416 小时前
进阶-索引3-性能分析
开发语言·数据库·笔记·mysql·索引·性能分析
剑来.17 小时前
事务没提交,数据库为什么会越来越慢?
数据库·oracle
IT教程资源C17 小时前
(N-089)基于springboot网上订餐系统
mysql·springboot订餐系统
IT教程资源D18 小时前
[N_083]基于springboot毕业设计管理系统
mysql·springboot毕业设计
韦东东18 小时前
DeepSeek:R1本地RAG 问答: 功能新增,附 六大关键技术优化路径参考
数据库·mysql
Leon-Ning Liu18 小时前
19c RAC 环境 Patch 38326922 应用实战
数据库·oracle
虫小宝18 小时前
优惠券省钱app高并发秒杀系统:基于Redis与消息队列的架构设计
数据库·redis·缓存