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

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

相关推荐
Haooog6 小时前
Redis面试题(不定时更新)
数据库·redis·缓存·面试
孙同学_6 小时前
【Linux篇】线程互斥、同步与线程池设计:原理与实践
数据库·redis·缓存
九转苍翎6 小时前
深入解析MySQL(8)——核心日志与备份恢复
mysql
running up6 小时前
JDBC-一套操作数据库的api
数据库
羑悻的小杀马特6 小时前
Docker高阶实战:从镜像构建优化策略实践到MySQL主从集群详解+一主二从容器化实现,一文打通生产级部署!
mysql·docker·容器·镜像实战
醉舞经阁半卷书17 小时前
从零到1了解etcd
数据库·etcd
云老大TG:@yunlaoda3607 小时前
如何确保数据在腾讯云国际站代理商的归档存储服务中的安全性?
数据库·云计算·腾讯云
wuletaotao7 小时前
Redis 主从搭建笔记
数据库·redis·笔记
NocoBase7 小时前
如何快速搭建一个替换 Excel 的系统?(完整指南)
数据库·低代码·开源·excel·个人开发·零代码·无代码