当前位置: 首页 > news >正文

MySql 基本操作指令大全

MySQL 基本操作指令大全

1. 数据库操作

连接数据库

sql

mysql -u username -p
mysql -h hostname -u username -p

查看数据库

sql

SHOW DATABASES;

创建数据库

sql

CREATE DATABASE database_name;
CREATE DATABASE IF NOT EXISTS database_name;
CREATE DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

选择数据库

sql

USE database_name;

删除数据库

sql

DROP DATABASE database_name;
DROP DATABASE IF EXISTS database_name;

查看当前数据库

sql

SELECT DATABASE();

2. 表操作

查看表

sql

SHOW TABLES;
SHOW TABLES FROM database_name;

创建表

sql

CREATE TABLE table_name (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,age INT,email VARCHAR(255) UNIQUE,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);-- 带索引的表
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(255) NOT NULL,email VARCHAR(100),created_at DATETIME DEFAULT CURRENT_TIMESTAMP,INDEX idx_username (username),INDEX idx_email (email)
);

查看表结构

sql

DESCRIBE table_name;
DESC table_name;
SHOW COLUMNS FROM table_name;

查看建表语句

sql

SHOW CREATE TABLE table_name;

修改表

sql

-- 添加列
ALTER TABLE table_name ADD COLUMN new_column VARCHAR(100);-- 修改列
ALTER TABLE table_name MODIFY COLUMN column_name TEXT;-- 重命名列
ALTER TABLE table_name CHANGE old_name new_name VARCHAR(100);-- 删除列
ALTER TABLE table_name DROP COLUMN column_name;-- 添加主键
ALTER TABLE table_name ADD PRIMARY KEY (column_name);-- 添加索引
ALTER TABLE table_name ADD INDEX index_name (column_name);-- 删除表
DROP TABLE table_name;
DROP TABLE IF EXISTS table_name;

重命名表

sql

RENAME TABLE old_name TO new_name;
ALTER TABLE old_name RENAME TO new_name;

3. 数据操作(CRUD)

插入数据

sql

-- 插入单条数据
INSERT INTO table_name (column1, column2) VALUES (value1, value2);-- 插入多条数据
INSERT INTO table_name (name, age, email) VALUES 
('John', 25, 'john@email.com'),
('Jane', 30, 'jane@email.com'),
('Bob', 35, 'bob@email.com');-- 插入查询结果
INSERT INTO table_backup SELECT * FROM table_original WHERE condition;

查询数据

sql

-- 基本查询
SELECT * FROM table_name;
SELECT column1, column2 FROM table_name;-- 条件查询
SELECT * FROM table_name WHERE condition;
SELECT * FROM users WHERE age > 18 AND status = 'active';-- 排序
SELECT * FROM table_name ORDER BY column_name ASC;  -- 升序
SELECT * FROM table_name ORDER BY column_name DESC; -- 降序
SELECT * FROM table_name ORDER BY column1 ASC, column2 DESC;-- 限制结果
SELECT * FROM table_name LIMIT 10;           -- 前10条
SELECT * FROM table_name LIMIT 5, 10;        -- 从第6条开始取10条
SELECT * FROM table_name LIMIT 10 OFFSET 5;  -- 同上-- 去重
SELECT DISTINCT column_name FROM table_name;-- 分组
SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;
SELECT department, AVG(salary) FROM employees GROUP BY department;-- 分组过滤
SELECT department, AVG(salary) 
FROM employees 
GROUP BY department 
HAVING AVG(salary) > 5000;

更新数据

sql

UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;-- 示例
UPDATE users SET status = 'inactive' WHERE last_login < '2023-01-01';
UPDATE products SET price = price * 1.1 WHERE category = 'electronics';

删除数据

sql

DELETE FROM table_name WHERE condition;-- 清空表(不可恢复)
TRUNCATE TABLE table_name;-- 示例
DELETE FROM users WHERE status = 'inactive';
DELETE FROM logs WHERE created_at < DATE_SUB(NOW(), INTERVAL 1 YEAR);

4. 高级查询

连接查询

sql

-- 内连接
SELECT * FROM table1 
INNER JOIN table2 ON table1.id = table2.table1_id;-- 左连接
SELECT * FROM table1 
LEFT JOIN table2 ON table1.id = table2.table1_id;-- 右连接
SELECT * FROM table1 
RIGHT JOIN table2 ON table1.id = table2.table1_id;-- 全外连接(MySQL不支持,用UNION模拟)
SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.table1_id
UNION
SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = table2.table1_id;

子查询

sql

-- WHERE子句中的子查询
SELECT * FROM users 
WHERE age > (SELECT AVG(age) FROM users);-- IN子查询
SELECT * FROM products 
WHERE category_id IN (SELECT id FROM categories WHERE status = 'active');-- EXISTS子查询
SELECT * FROM customers 
WHERE EXISTS (SELECT 1 FROM orders WHERE orders.customer_id = customers.id);

联合查询

sql

SELECT column_name FROM table1
UNION
SELECT column_name FROM table2;SELECT column_name FROM table1
UNION ALL
SELECT column_name FROM table2;

5. 聚合函数

sql

SELECT COUNT(*) FROM table_name;                    -- 计数
SELECT COUNT(DISTINCT column_name) FROM table_name; -- 去重计数
SELECT SUM(column_name) FROM table_name;            -- 求和
SELECT AVG(column_name) FROM table_name;            -- 平均值
SELECT MAX(column_name) FROM table_name;            -- 最大值
SELECT MIN(column_name) FROM table_name;            -- 最小值
SELECT GROUP_CONCAT(column_name) FROM table_name;   -- 连接字符串

6. 索引操作

sql

-- 创建索引
CREATE INDEX index_name ON table_name (column_name);
CREATE UNIQUE INDEX index_name ON table_name (column_name);-- 创建复合索引
CREATE INDEX index_name ON table_name (col1, col2, col3);-- 删除索引
DROP INDEX index_name ON table_name;-- 查看索引
SHOW INDEX FROM table_name;

7. 用户和权限管理

用户管理

sql

-- 创建用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';-- 删除用户
DROP USER 'username'@'host';-- 修改密码
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';-- 查看用户
SELECT user, host FROM mysql.user;

权限管理

sql

-- 授予权限
GRANT privilege_type ON database_name.table_name TO 'username'@'host';-- 示例
GRANT SELECT, INSERT ON mydb.* TO 'user1'@'localhost';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';-- 撤销权限
REVOKE privilege_type ON database_name.table_name FROM 'username'@'host';-- 刷新权限
FLUSH PRIVILEGES;-- 查看权限
SHOW GRANTS FOR 'username'@'host';

8. 事务操作

sql

-- 开始事务
START TRANSACTION;
BEGIN;-- 提交事务
COMMIT;-- 回滚事务
ROLLBACK;-- 设置自动提交
SET autocommit = 0;  -- 关闭自动提交
SET autocommit = 1;  -- 开启自动提交

9. 备份与恢复

备份数据库

bash

# 命令行备份
mysqldump -u username -p database_name > backup.sql
mysqldump -u username -p --all-databases > all_backup.sql
mysqldump -u username -p database_name table1 table2 > partial_backup.sql

恢复数据库

bash

# 命令行恢复
mysql -u username -p database_name < backup.sql

10. 实用函数

字符串函数

sql

SELECT CONCAT('Hello', ' ', 'World');           -- 字符串连接
SELECT SUBSTRING('Hello World', 1, 5);         -- 子字符串
SELECT LENGTH('Hello');                        -- 字符串长度
SELECT UPPER('hello');                         -- 转大写
SELECT LOWER('HELLO');                         -- 转小写
SELECT TRIM('  hello  ');                      -- 去除空格
SELECT REPLACE('Hello World', 'World', 'MySQL'); -- 替换

日期函数

sql

SELECT NOW();                                  -- 当前日期时间
SELECT CURDATE();                             -- 当前日期
SELECT CURTIME();                             -- 当前时间
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); -- 日期格式化
SELECT DATEDIFF('2023-12-31', '2023-01-01');  -- 日期差
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);       -- 日期加法
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH);     -- 日期减法

数学函数

sql

SELECT ABS(-10);                              -- 绝对值
SELECT ROUND(3.14159, 2);                    -- 四舍五入
SELECT CEIL(3.14);                           -- 向上取整
SELECT FLOOR(3.14);                          -- 向下取整
SELECT RAND();                               -- 随机数

11. 系统信息

sql

SELECT VERSION();         -- MySQL版本
SELECT DATABASE();        -- 当前数据库
SELECT USER();           -- 当前用户
SELECT NOW();            -- 当前时间
SHOW PROCESSLIST;        -- 显示进程
SHOW VARIABLES;          -- 显示系统变量
SHOW STATUS;             -- 显示系统状态

这些命令涵盖了MySQL日常使用的大部分场景,从基本的数据库操作到高级的查询和系统管理。

http://www.dtcms.com/a/487352.html

相关文章:

  • 军用网站建设ui设计一个月挣多少钱
  • 海宁市住房和城乡建设网站网站源码程序修改
  • 做足球预测的网站小程序开发教程视频
  • 消息队列相关知识总结
  • Kafka集群Broker一点通
  • 怎样看网站建设制作方松北区建设局网站
  • 锂电电芯卷绕提质增效!光子精密边缘传感器+颜色传感器组合方案
  • 堆的 shift down 操作详解
  • QT(day1)
  • 天津做网站的公司怎么样google手机官网
  • 门户网站建设滞后微信小程序功能开发
  • miniconda 配置问题 ,未解之谜
  • 西安做营销型网站建设男性产品哪个网站可以做
  • 开源CICD工具深度横评,Jenkins vs Arbess哪个更适合你?
  • 厦门建设工程招标中心网站ps 做ui比较好的网站有哪些
  • 犀牛云网站做的怎么样深圳企业网站建设服务
  • 有关maven的一些知识点
  • 低代码建站平台汽车电子商务网站建设规划书
  • 数据的“点阵密码”:用散点图看出相关性
  • 微信游戏网站开发绵阳市网站建立
  • 一些常用的网站专业建设规划及实施方案
  • Process Monitor 学习笔记(5.7):长时间运行追踪与日志文件体积的控制
  • 读懂目标检测:从基础概念到主流算法
  • 网站里的图片切换怎么做成都工业设计公司
  • 网站设计可以吗wordpress怎样加快访问
  • leetcode 375 猜数字大小II
  • 测试用例之正交试验法、功能图法
  • Vue 通信组件传值【10】
  • web vue之状态管理Pinia
  • [Backstage] 前端扩展 | 应用扩展树 | 工厂函数 | attachTo附着点