《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 支持中文和各种特殊字符,避免乱码问题。

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

相关推荐
发际线还在2 小时前
互联网大厂Java三轮面试全流程实战问答与解析
java·数据库·分布式·面试·并发·系统设计·大厂
小王不爱笑1323 小时前
MyBatis 执行流程源码级深度解析:从 Mapper 接口到 SQL 执行的全链路逻辑
数据库·sql·mybatis
Seven973 小时前
MySQL语句执行深度剖析:从连接到执行的全过程
mysql
神秘喵学长3 小时前
HNU信息系统安全第一章
安全·系统安全·学习笔记
山峰哥3 小时前
SQL优化实战:从索引策略到执行计划的极致突破
数据库·sql·性能优化·编辑器·深度优先
总要冲动一次4 小时前
离线安装 percona-xtrabackup-24
linux·数据库·mysql·centos
lcrml4 小时前
nacos2.3.0 接入pgsql或其他数据库
数据库
阿达_优阅达4 小时前
告别手工对账:xSuite 如何帮助 SAP 企业实现财务全流程自动化?
服务器·数据库·人工智能·自动化·sap·企业数字化转型·xsuite
IvorySQL4 小时前
IvorySQL v5 发布后,我们想听听大家的使用体验
数据库·postgresql·开源
Maverick064 小时前
01- Oracle核心架构:理解数据库如何运转
数据库·oracle·架构