MySQL操作库

目录

一、对数据库的操作

[1.1 创建数据库](#1.1 创建数据库)

[1.1.1 正常创建数据库](#1.1.1 正常创建数据库)

[1.1.2 指定数据库的字符集进行创建](#1.1.2 指定数据库的字符集进行创建)

[1.1.3 指定数据库的校验规则进行创建](#1.1.3 指定数据库的校验规则进行创建)

[1.1.4 同时指定数据库的字符集和校验规则进行创建](#1.1.4 同时指定数据库的字符集和校验规则进行创建)

[1.1.5 查看字符集](#1.1.5 查看字符集)

[1.1.6 查看校验规则](#1.1.6 查看校验规则)

[1.2 查看数据库](#1.2 查看数据库)

[1.2.1 详细查看数据库(显示创建语句)](#1.2.1 详细查看数据库(显示创建语句))

[1.3 修改数据库](#1.3 修改数据库)

[1.4 删除数据库](#1.4 删除数据库)

[1.5 数据库的备份与恢复](#1.5 数据库的备份与恢复)

[1.5.1 备份数据库(在命令行执行操作)](#1.5.1 备份数据库(在命令行执行操作))

[1.5.2 恢复数据库(登录mysql)](#1.5.2 恢复数据库(登录mysql))

[1.5.3 备份表结构](#1.5.3 备份表结构)

[1.5.4 恢复表结构](#1.5.4 恢复表结构)

[1.6 代码案例](#1.6 代码案例)

二、对表的操作

[2.1 创建表](#2.1 创建表)

[2.2 查看表](#2.2 查看表)

[2.3 修改表](#2.3 修改表)

[2.4 删除表](#2.4 删除表)

总结


一、对数据库的操作

1.1 创建数据库

1.1.1 正常创建数据库

sql 复制代码
-- 正常创建数据库
CREATE DATABASE IF NOT EXISTS d1;

1.1.2 指定数据库的字符集进行创建

sql 复制代码
-- 指定数据库的字符集
CREATE DATABASE IF NOT EXISTS d2 CHARACTER SET utf8;-- 或CHARSET=utf8;

1.1.3 指定数据库的校验规则进行创建

sql 复制代码
- 指定数据库的校验规则
CREATE DATABASE IF NOT EXISTS d3 COLLATE utf8_general_ci;

1.1.4 同时指定数据库的字符集和校验规则进行创建

sql 复制代码
-- 同时指定字符集和校验规则
CREATE DATABASE IF NOT EXISTS d4 CHARACTER SET utf8 COLLATE utf8_general_ci;

1.1.5 查看字符集

sql 复制代码
-- 查看字符集
SHOW CHARACTER SET;-- 或SHOW CHARSET;

1.1.6 查看校验规则

sql 复制代码
-- 查看校验规则
SHOW COLLATION;

1.2 查看数据库

1.2.1 详细查看数据库(显示创建语句)

sql 复制代码
-- 详细查看数据库(显示创建语句)
SHOW CREATE DATABASE test1;
SHOW CREATE DATABASE test2;

1.3 修改数据库

sql 复制代码
-- 修改数据库
ALTER DATABASE test1 CHARACTER SET gbk;
ALTER DATABASE test2 CHARACTER SET gbk;
SHOW CREATE DATABASE test1;
SHOW CREATE DATABASE test2;

1.4 删除数据库

sql 复制代码
-- 删除数据库
DROP DATABASE test1;
DROP DATABASE test2;

1.5 数据库的备份与恢复

查看连接情况

sql 复制代码
SHOW PROCESSLIST;

1.5.1 备份数据库(在命令行执行操作)

语法:

sql 复制代码
mysqldump -u root -p -B 数据库名1 数据库名2 数据库名3... > 数据库存放路径 
sql 复制代码
mysqldump -P 3306 -u root -p 密码 -B 数据库名 mytest > D:/mytest.sql

其中,没有带上-B参数,在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source还原,因为不带-B参数,只会把所有的表信息数据备份起来。

1.5.2 恢复数据库(登录mysql)

语法:

sql 复制代码
source D:/mysql-5.7.22/mysql.sql

1.5.3 备份表结构

语法:

sql 复制代码
mysqldump -u root -p 数据库名 表1 表2 > D:/mytest.sql

1.5.4 恢复表结构

语法:

sql 复制代码
source D:/mysql-5.7.22/mysql.sql

1.6 代码案例

sql 复制代码
SHOW DATABASES;
-- 创建数据库
-- 正常创建数据库
CREATE DATABASE IF NOT EXISTS d1;
-- 指定数据库的字符集
CREATE DATABASE IF NOT EXISTS d2 CHARACTER SET utf8;-- 或CHARSET=utf8;
-- 指定数据库的校验规则
CREATE DATABASE IF NOT EXISTS d3 COLLATE utf8_general_ci;
-- 同时指定数据库的字符集和校验规则
CREATE DATABASE IF NOT EXISTS d4 CHARACTER SET utf8 COLLATE utf8_general_ci;
-- 查看字符集
SHOW CHARACTER SET;-- 或 SHOW CHARSET;
-- 查看校验规则
SHOW COLLATION;
-- 创建一个数据库,指定其校验规则为utf8_general_ci(不区分大小写)
CREATE DATABASE IF NOT EXISTS test1 COLLATE utf8_general_ci;
-- 使用数据库
USE test1;
-- 创建表结构
CREATE TABLE IF NOT EXISTS person(name VARCHAR(20));
-- 向表中插入数据
INSERT INTO person VALUES('a');
INSERT INTO person VALUES('A');
INSERT INTO person VALUES('b');
INSERT INTO person VALUES('B');
INSERT INTO person VALUES('c');
INSERT INTO person VALUES('C');
-- 不区分大小写查询表中内容
SELECT * FROM person;
-- 不区分大小写查询表中元素
SELECT * FROM person WHERE name = 'a';
-- 不区分大小写对name列进行排序
SELECT * FROM person ORDER BY name;
-- 创建一个数据库,指定其校验规则为utf8_bin(区分大小写)
CREATE DATABASE IF NOT EXISTS test2 COLLATE utf8_bin;
-- 使用数据库
USE test2;
-- 查看当前在哪个数据库当中
SELECT DATABASE();
-- 查看当前数据库有哪些表结构
SHOW TABLES;
-- 创建表结构
CREATE TABLE IF NOT EXISTS person(name VARCHAR(20));
-- 向表中插入数据
INSERT INTO person VALUES('a');
INSERT INTO person VALUES('A');
INSERT INTO person VALUES('b');
INSERT INTO person VALUES('B');
INSERT INTO person VALUES('c');
INSERT INTO person VALUES('C');
-- 区分大小写查询表中内容
SELECT * FROM person;
-- 区分大小写查询表中元素
SELECT * FROM person WHERE name = 'a';
-- 区分大小写对name列进行排序
SELECT * FROM person ORDER BY name;
-- 详细查看数据库(显示创建语句)
SHOW CREATE DATABASE test1;
SHOW CREATE DATABASE test2;
-- 修改数据库
ALTER DATABASE test1 CHARACTER SET gbk;
ALTER DATABASE test2 CHARSET gbk;
SHOW CREATE DATABASE test1;
SHOW CREATE DATABASE test2;
-- 删除数据库
DROP DATABASE test1;
DROP DATABASE test2;
-- 查看连接情况
SHOW PROCESSLIST;

二、对表的操作

2.1 创建表

sql 复制代码
-- 创建表结构
CREATE TABLE IF NOT EXISTS user1(
id INT COMMENT '用户序号',
name VARCHAR(32) COMMENT '用户名',
password CHAR(32) COMMENT '用户密码',
birthday DATE COMMENT '用户生日'
)CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE MyISAM;
CREATE TABLE IF NOT EXISTS user2(
id INT COMMENT '用户序号',
name VARCHAR(32) COMMENT '用户名',
password CHAR(32) COMMENT '用户密码',
birthday DATE COMMENT '用户生日'
)CHARSET=utf8 COLLATE=utf8 ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS user3(name VARCHAR(32));

其中,int为整数类型,varchar为变长字符串类型,char为定长字符串类型,date为日期类型,comment为关键字,表示对该列的文字说明。

2.2 查看表

sql 复制代码
-- 查看表
SELECT DATABASE();
SHOW TABLES;
DESC user1;
DESC user2;
DESC user3;
SHOW CREATE TABLE user1;
SHOW CREATE TABLE user2;
SHOW CREATE TABLE user3;

2.3 修改表

sql 复制代码
-- 修改表
-- 该表名(to可以省略)
ALTER TABLE user1 RENAME To U1;
ALTER TABLE user2 RENAME To U2;
ALTER TABLE user3 RENAME TO U3;
SHOW TABLES;
ALTER TABLE U1 RENAME TO user1;
ALTER TABLE U2 RENAME TO user2;
ALTER TABLE U3 RENAME To user3;
-- 表中插入数据
ALTER TABLE user1 RENAME TO user;
SHOW TABLES;
DESC user;
INSERT INTO user VALUES (1,'张三','12345','2010-10-1');
INSERT INTO user VALUES (1,'李四','54321','2020-10-1');
-- 增加新的一列在birthday的后面
ALTER TABLE user ADD image_path VARCHAR(128) COMMENT '用户图片路径' AFTER birthday;
SELECT * FROM user;
SHOW CREATE TABLE user;
-- 修改某一列的属性(会覆盖之前的属性)
ALTER TABLE user MODIFY name VARCHAR(60) COMMENT '用户名';
SHOW CREATE TABLE user;
-- 删除某一列
ALTER TABLE user DROP password;
DESC user;
SELECT * FROM user;
-- 修改某一列的列名(这一列的相关属性也要提供)
ALTER TABLE user CHANGE name xingming VARCHAR(60) COMMENT '用户名';
SELECT * FROM user;

2.4 删除表

sql 复制代码
-- 删除表结构
DROP TABLE user;
SHOW TABLES;

总结

1.表的操作和数据库的操作属于SQL语句中的DDL;

2.SELECT不是操作表结构,而是操作表的内容;

相关推荐
Javatutouhouduan1 小时前
Java小白如何快速玩转Redis?
java·数据库·redis·分布式锁·java面试·后端开发·java程序员
Lyyaoo.3 小时前
Redisson
数据库·缓存
网络工程小王3 小时前
【LCEL 链式调用详解】调用篇-2
java·服务器·前端·数据库·人工智能
道法自然,人法天4 小时前
PostgreSQL安装与初始化教程(二进制压缩包)
数据库·postgresql
zx2859634004 小时前
Laravel5.x版本革新特性全解析
mysql·gateway·智能路由器
yzs874 小时前
从Hydra到storage_engine:PostgreSQL列存引擎的性能跃迁与技术进化
数据库·postgresql
红云梦4 小时前
官方 Anthropic Postgres MCP Server 存在 SQL 注入漏洞 -- SafeDB 是如何做到 4 层防御的
数据库·sql
TDengine (老段)4 小时前
红有软件重构智能油田时序数据底座,支撑生产实时感知与设备预测性维护
大数据·数据库·人工智能·重构·时序数据库·tdengine
倒霉蛋小马5 小时前
【Redis】什么是缓存击穿?
数据库·redis·缓存