文章目录
目录
一、mysql数据库的安装
























配置环境变量到系统之中









后面要一路确定
win + r 打开命令行

二、数据库的操作
一、什么是mysql数据库?
关系型数据库是一种以表格形式组织数据的数据库系统(mysql数据库属于一种关系型数据库)。数据被存储在表中,每个表由行和列组成。每一行代表一个记录,每一列代表一个属性。例如,一个用户表可能包含以下列:用户ID、用户名、密码、邮箱等
特点
-
开源免费:MySQL是开源软件,基于GPL许可证发布,用户可以免费使用和修改。
-
高性能:支持多种存储引擎,如InnoDB(支持事务处理)、MyISAM(适合读密集型应用)等,能够处理高并发请求。
-
跨平台:可以在多种操作系统上运行,包括Linux、Windows、macOS等。
-
安全性高:支持多种安全机制,如用户权限管理、SSL加密连接等。
-
易于使用:提供了丰富的SQL语法支持,易于学习和使用。
简单总结三句话:
1、基于关系模型构建的数据库管理系统
2、 数据库、表、行、列、主键、外键
3、表与表之间存在关联关系
二、数据库操作
1、登录指令
mysql -u root -p 命令行中登录指令(确保你的mysql已经配置到环境变量中)
quit 退出
不区分大小写,单行分号结尾
-u username: 指定用户名 (如 root)。
-p: 提示输入密码。也可以直接在 -p 后面写密码(不安全,不推荐)。
2、查看所有数据库
SHOW DATABASES;
3、创建新数据库:
CREATE DATABASE database_name;
CREATE DATABASE my_shop;
4、选择/使用数据库:
USE database_name; USE my_shop;
5、删除数据库:
DROP DATABASE database_name; DROP DATABASE old_backup;
6、查看当前使用的数据库:
SELECT DATABASE();
三、表操作
1、查看当前数据库中的所有表(show + 表名):
SHOW TABLES;
2、创建新表:
简单创建一个表:
CREATE TABLE `students`.`Untitled` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
);
效果如下图所示:

常用数据类型:
-
INT: 整数 -
VARCHAR(n): 可变长度字符串,最大长度n -
CHAR(n): 定长字符串,长度n -
TEXT: 长文本 -
DATE: 日期 (YYYY-MM-DD) -
DATETIME/TIMESTAMP: 日期和时间 -
FLOAT,DOUBLE: 浮点数 -
DECIMAL(m, d): 精确小数(m总位数,d小数位数) -
BOOLEAN/BOOL/TINYINT(1): 布尔值
常用约束 (Constraints):
-
PRIMARY KEY: 唯一标识一条记录,不能为NULL。 -
FOREIGN KEY: 建立表之间的关系,确保引用完整性。 -
NOT NULL: 该列必须有值。 -
UNIQUE: 该列的值在表中必须是唯一的。 -
DEFAULT value: 当插入新记录未指定该列值时,设置默认值。 -
AUTO_INCREMENT: (通常用于主键) 自动为新记录生成唯一递增的值。 -
CHECK: 定义列值必须满足的条件(MySQL 8.0.16+ 对存储引擎强制执行)
3、查看表结构(desc+表名):
DESCRIBE table_name;(完整写法) DESC table_name;(简写) 获取表中更详细的信息 SHOW CREATE TABLE table_name;
4、修改表结构 (ALTER TABLE):
添加列:
create table if not exists 表名 (列名 类型 约束1 约束2 ...,列名 类型 约束1 约束2 ... )
(关键字的大小写均可以)
ALTER TABLE users ADD COLUMN phone_number VARCHAR(15);
修改表名
alter table 表名 rename to 新名字;
修改现有列
alter table 表名 change 原列名 新列名 类型 约束...
修改 email 列长度为 150
ALTER TABLE users MODIFY COLUMN email VARCHAR(150) NOT NULL UNIQUE;
添加列
alter table 表名 add 列名 类型 约束...
例:
ALTER TABLE users ADD COLUMN phone_number VARCHAR(15);
删除列
alter table 表名 drop 列名;
ALTER TABLE users DROP COLUMN mobile;
删除表
drop table if exists 表名;
DROP TABLE temporary_data;
四、数据操作
查询数据 (SELECT): 最常用和最重要的操作
select ()
select * from 表名;
select 列1, 列2 from 表名
select 列1 as 别名1, 列2 as 别名2 from 表名
insert(插入数据)
全列插入
insert into 表名 values (值1,值2.....)
有几列就要有几个值
插入多行
values (值1,值2.....), (值1,值2.....), (值1,值2.....),
缺省插入
insert into 表名 set 列1=值1,列2=值2....
只需要插入必填列
不能插入多行
insert into 表名 (列1, 列2...) values (值1,值2....)
示例:
-- 插入所有列的值(按表结构顺序)
INSERT INTO table_name VALUES (value1, value2, value3, ...);
-- 插入指定列的值(更安全、清晰)
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
-- 一次插入多行数据
INSERT INTO table_name (column1, column2, ...)
VALUES
(value1a, value2a, ...),
(value1b, value2b, ...),
...;
-- 示例
INSERT INTO users (username, email, password)
VALUES ('john_doe', 'john@example.com', 'secure_hash123');
INSERT INTO users (username, email, password)
VALUES
('alice_smith', 'alice@example.com', 'hash456'),
('bob_jones', 'bob@example.com', 'hash789');
更新数据 (UPDATE):
update 表名 set 列=值, 列=值 where 条件
删除数据 (DELETE):
delete from 表名 where 条件
示例:
-- 查询表中所有列的所有行
SELECT * FROM table_name;
-- 查询指定列
SELECT column1, column2, ... FROM table_name;
-- 带条件查询 (WHERE)
SELECT * FROM table_name WHERE condition;
-- 示例: 查找用户名为 'john_doe' 的用户
SELECT * FROM users WHERE username = 'john_doe';
-- 排序结果 (ORDER BY)
SELECT * FROM table_name ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
-- 示例: 按创建时间降序排序
SELECT * FROM users ORDER BY created_at DESC;
-- 限制返回行数 (LIMIT) 和偏移 (OFFSET - 用于分页)
SELECT * FROM table_name LIMIT number_of_rows;
SELECT * FROM table_name LIMIT offset, number_of_rows; -- MySQL 语法
SELECT * FROM table_name LIMIT number_of_rows OFFSET offset; -- 标准 SQL 语法
-- 示例: 获取第 2 页的数据,每页 10 条
SELECT * FROM users ORDER BY id LIMIT 10 OFFSET 10;
-- 去重 (DISTINCT)
SELECT DISTINCT column_name FROM table_name;
-- 聚合函数 (COUNT, SUM, AVG, MAX, MIN)
SELECT COUNT(*) FROM table_name; -- 总行数
SELECT AVG(price) FROM products; -- 平均价格
SELECT MAX(salary) FROM employees; -- 最高薪水
-- 分组统计 (GROUP BY)
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;
-- 连接查询 (JOIN - INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN)
SELECT orders.order_id, customers.customer_name, orders.order_date
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
五、用户与权限管理
创建用户:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
-- 示例:创建只能在本地登录的用户
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'Str0ngP@ss';
-- 示例:创建可从任何主机登录的用户 (谨慎使用!)
CREATE USER 'admin'@'%' IDENTIFIED BY 'V3ryS3cure!';
授予权限 (GRANT):
GRANT privilege_type ON database_name.table_name TO 'username'@'host';
-- 常用权限: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, ALL PRIVILEGES
-- 示例:授予 app_user 对 my_shop 数据库中所有表的所有权限
GRANT ALL PRIVILEGES ON my_shop.* TO 'app_user'@'localhost';
-- 示例:授予只读权限
GRANT SELECT ON my_shop.products TO 'report_user'@'%';
查看用户权限:
SHOW GRANTS FOR 'username'@'host';
撤销权限 (REVOKE):
REVOKE privilege_type ON database_name.table_name FROM 'username'@'host';
-- 示例:撤销 app_user 的删除权限
REVOKE DELETE ON my_shop.* FROM 'app_user'@'localhost';
修改用户密码:
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
-- 示例
ALTER USER 'app_user'@'localhost' IDENTIFIED BY 'N3wS3cureP@ss';
删除用户:
DROP USER 'username'@'host';
-- 示例
DROP USER 'old_user'@'localhost';
六、其他常用命令
退出 MySQL 命令行:
EXIT; 或 QUIT;
查看 MySQL 版本:
SELECT VERSION();
显示服务器状态:
STATUS;
执行外部 SQL 文件:
SOURCE /path/to/file.sql;

501

被折叠的 条评论
为什么被折叠?



