MySQL学习----------相关库表操作

MySQL的相关库表操作

一、库的相关操作

1、看当前 MySQL 服务器中存在的所有数据库:

①、查看所有数据库(最常用)

sql 复制代码
SHOW DATABASES;

②、查看所有数据库(包含字符集等详细信息)

sql 复制代码
-- -- 模糊查询,比如 LIKE '%db%' 查找含db的数据库
show databases like '%db%';

2、创建数据库

①、基础创建(默认字符集,不推荐)

sql 复制代码
CREATE DATABASE 数据库名;

②、指定字符集和排序规则(UTF8mb4兼容emoji,适配中文)

sql 复制代码
-- 基础创建(默认字符集,不推荐)
CREATE DATABASE 数据库名;

-- 推荐:指定字符集和排序规则(UTF8mb4兼容emoji,适配中文)
CREATE DATABASE IF NOT EXISTS 数据库名  -- IF NOT EXISTS:避免重复创建报错
DEFAULT CHARACTER SET utf8mb4        -- 字符集
DEFAULT COLLATE utf8mb4_general_ci;  -- 排序规则

3、选择 / 切换数据库

操作数据库中的表、数据前,必须先指定要操作的数据库:

sql 复制代码
USE 数据库名;

①、切换到 my_test_db 数据库

sql 复制代码
USE my_test_db;
-- 成功后会提示:Database changed

4、查看当前选中的数据库

确认当前正在操作的数据库:

sql 复制代码
SELECT DATABASE();
--执行后会返回当前选中的数据库名,若未选中则返回 NULL。

5、查看数据库创建信息

查看指定数据库的创建语句(包含字符集、排序规则等)

sql 复制代码
SHOW CREATE DATABASE 数据库名;

6、删除数据库

删除数据库会清空其中所有表和数据,且无法恢复:

sql 复制代码
-- 基础删除(存在则删,不存在报错)
DROP DATABASE 数据库名;
-- 推荐:不存在则不报错(更安全)
DROP DATABASE IF EXISTS 数据库名;

二、表的相关操作

1、创建表的基础语法

sql 复制代码
CREATE TABLE [IF NOT EXISTS] 表名 (
    字段名1 数据类型 [约束条件] [COMMENT '字段注释'],
    字段名2 数据类型 [约束条件] [COMMENT '字段注释'],
    ...
    [表级约束条件]  -- 如主键、外键等
) 
[ENGINE=存储引擎] 
[DEFAULT CHARSET=字符集] 
[COMMENT='表注释'];

接下来,我们通过创建一张表,来向大家演示

sql 复制代码
-- 先选中数据库(必做!)
USE my_test_db;

-- 创建一个最简单的「用户表」
CREATE TABLE IF NOT EXISTS user_info (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户ID(主键)',
    username VARCHAR(30) NOT NULL COMMENT '用户名',
    age TINYINT UNSIGNED DEFAULT 0 COMMENT '年龄(默认0)',
    create_time DATETIME COMMENT '创建时间',
    -- 表级约束:设置id为主键
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户基础信息表';

2、查看当前数据库中的相关表

①、查看当前数据库所有表

sql 复制代码
-- 1、 查看当前数据库所有表
SHOW TABLES;
sql 复制代码
--2、模糊查询表:例如查找含user的表
SHOW TABLES LIKE '%user%';

3、 查看表

sql 复制代码
DESC 表名;  -- 简写
-- 或(更详细)
DESCRIBE 表名;

①、查看表的创建语句(含引擎、字符集、完整结构)

sql 复制代码
SHOW CREATE TABLE 表名;

②、查看表的状态(行数、大小、更新时间等)

sql 复制代码
SHOW TABLE STATUS LIKE '表名'\G;  -- \G 让结果竖向显示,更易读

③、SHOW WARNINGS

用于查看最近一次 SQL 语句执行后产生的警告信息,这些警告不会导致 SQL 执行失败,但可能暗示数据异常、语法不规范或隐式转换等问题(比如字段类型不匹配、数据截断等)。

sql 复制代码
-- 查看最近一次SQL的所有警告(默认最多显示64条)
SHOW WARNINGS;

-- 查看指定数量的警告
SHOW WARNINGS LIMIT 行数;

-- 只查看指定级别(Warning/Error/Note)的信息
SHOW WARNINGS LIKE '%关键词%';
SHOW WARNINGS WHERE level = 'WARNING';

eg1:

sql 复制代码
-- 先创建测试表
CREATE TABLE test_warn (name VARCHAR(5) COMMENT '姓名(最多5个字符)');

-- 插入超过长度的字符串
INSERT INTO test_warn (name) VALUES ('张三李四王五');

-- 查看警告
SHOW WARNINGS;

4、修改表

基础语法框架

所有修改表的操作都基于这个核心结构:

sql 复制代码
ALTER TABLE 表名 [修改操作];

①、修改表名

用于调整表的名称,不影响表内的字段和数据。

sql 复制代码
-- 语法
ALTER TABLE 旧表名 RENAME [TO] 新表名;  -- TO 可省略

②、添加字段

sql 复制代码
-- 基础语法
ALTER TABLE 表名 ADD COLUMN 字段名 数据类型 [约束] [COMMENT '注释'] [AFTER 已有字段];
-- 可选:FIRST 表示加在第一个位置,AFTER 表示加在指定字段后

eg1:

sql 复制代码
-- 示例1:给 user_info 加「手机号」字段(默认加在最后)
ALTER TABLE user_info ADD COLUMN phone VARCHAR(11) COMMENT '手机号';

eg2:

sql 复制代码
-- 示例2:给 user_info 加「邮箱」字段,放在 name 字段后
ALTER TABLE user_info ADD COLUMN email VARCHAR(50) COMMENT '邮箱' AFTER username;

eg3:

sql 复制代码
-- 示例3:加「状态」字段,放在第一个位置,非空且默认1
ALTER TABLE user_info ADD COLUMN status TINYINT NOT NULL DEFAULT 1 COMMENT '状态(1正常/0禁用)' FIRST;

③、修改字段类型 / 约束 / 注释(不改字段名)

(1)修改字段类型 / 约束 / 注释(不改字段名)
sql 复制代码
-- 语法
ALTER TABLE 表名 MODIFY COLUMN 字段名 新数据类型 [新约束] [新注释];

eg1:

sql 复制代码
-- 示例1:将 phone 字段改为唯一约束,注释补充说明
ALTER TABLE user_info MODIFY COLUMN phone VARCHAR(11) UNIQUE COMMENT '手机号(唯一)';
```![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/da1c65aaf4d749e586716ed02c7868ee.png)
eg2:

```sql
-- 示例2:将 age 字段改为非空,默认值0
ALTER TABLE user_info MODIFY COLUMN age TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年龄(非空)';
(2)修改字段名(可同时改类型 / 约束)
sql 复制代码
-- 语法
ALTER TABLE 表名 CHANGE COLUMN 旧字段名 新字段名 数据类型 [约束] [注释];

eg1:

sql 复制代码
-- 示例:将 username 改名为 user_name,同时加非空约束
ALTER TABLE user_info CHANGE COLUMN username user_name VARCHAR(30) NOT NULL COMMENT '用户名(非空)';

④、删除字段

删除字段会直接清空该字段的所有数据,且无法恢复。

sql 复制代码
-- 语法
ALTER TABLE 表名 DROP COLUMN 字段名;

eg1:

sql 复制代码
-- 示例:删除 user_info 中的 email 字段
ALTER TABLE user_info DROP COLUMN email;
相关推荐
聪明人7 分钟前
macOS安装Redis
数据库·redis·macos
北漂Zachary12 分钟前
Mysql中使用sql语句生成雪花算法Id
sql·mysql·算法
weixin_5051544617 分钟前
Bowell Studio:重塑工业互联网时代的装配制造与运维检修
运维·数据库·人工智能·制造·数字孪生·3d产品配置器·3d交互展示
sa1002720 分钟前
淘宝商品详情 API 接口开发实战:item_detail 调用、参数与 Python 示例
linux·数据库·python
小光学长1 小时前
基于ssm的膳食健康管理系统e6whl4q7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·开发语言·数据库·学习·ssm
一个天蝎座 白勺 程序猿1 小时前
KingbaseES融合数据库:一库多能,企业数据管理新思路
数据库·性能优化·kingbasees·金仓数据库
橘颂TA1 小时前
【MySQL】解锁表的 N 种牵手方式:SQL 连接与子查询漫游(复合查询)
数据库·mysql
数据知道1 小时前
MongoDB基于角色的访问控制(RBAC):精细化权限管理的实用方法
数据库·mongodb
代码派2 小时前
NineData社区版:免费+本地化部署,满足数据库DevOps、数据复制与一致性对比的数据库管理平台
运维·数据库·database·devops·数据库管理工具·ninedata·数据库迁移
jarvisuni2 小时前
GLM5实战测试,挑战Opus4.6 !
前端·数据库