Linux下使用mysql
安装
源码安装和yum安装。
可以看教程:菜鸟教程:mysql安装
使用
日常操作命令
启停服务
1.查看进程状态
ps -ef |grep mysql
2.mysql服务启停
sudo systemctl start mysql #启动
sudo systemctl stop mysql #关闭
sudo systemctl restart mysql #重启
sudo systemctl status mysql #检查mysql服务状态
用户设置
参考:Mysql创建用户与授权
1.以root用户连接mysql服务器
mysql -u root -p
-- 如果没有设置的话需要直接找到bin目录下去启动
-- 退出 mysql> 命令提示窗口可以使用 exit 命令
2.添加mysql用户
-- 严格模式下是无法通过直接在user表插入数据添加用户的,当然,这种方式很不安全。
-- 可以通过先创建用户然后授权的方式创建。
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
-- username:你将创建的用户名
-- host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
-- password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
3.授权
GRANT privileges ON databasename.tablename TO 'username'@'host';
-- privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
-- databasename:数据库名
-- tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
#用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
4.设置与更改用户密码
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
-- 如果是当前登陆用户用:SET PASSWORD = PASSWORD("newpassword");
5.撤销用户权限
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
-- 假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%',则在使用REVOKE SELECT ON *.* FROM 'pig'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 操作。相反,如果授权使用的是GRANT SELECT ON *.* TO 'pig'@'%';则REVOKE SELECT ON test.user FROM 'pig'@'%';命令也不能撤销该用户对test数据库中user表的Select权限。
-- 具体信息可以用命令SHOW GRANTS FOR 'pig'@'%'; 查看。
6.删除用户
DROP USER 'username'@'host';
7.刷新权限相关表
flush privileges;
-- mysql 新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问,还有一种方法,就是重新启动mysql服务器,来使新设置生效。
管理mysql的常用命令
1.列出mysql数据库列表
SHOW DATABASES;
2.选择要操作的数据库,使用该命令后,所有mysql命令都只针对该数据库。
USE database_name;
3.显示指定数据库里的所有表
SHOW TABLES;
4.显示数据表的属性:类型、主键、默认值等等
SHOW COLUMNS FROM table_name;
5.显示数据表的索引信息
SHOW INDEX FROM table_name;
6.输出Mysql数据库管理系统的性能及统计信息
SHOW TABLE STATUS FROM table_name;
创建和删除数据库
1.创建数据库
CREATE DATABASE [IF NOT EXISTS] database_name
[CHARACTER SET charset_name]
[COLLATE collation_name];
# IF NOT EXISTS避免数据库已存在报错
2.删除数据库
DROP DATABASE [IF EXISTS] <database_name>;
-- 注意:在执行删除数据库操作前,请确保你确实想要删除数据库及其所有数据,因为该操作是不可逆的。为了避免误操作,通常建议在执行删除之前备份数据库。
-- 也可以使用 MySQL mysqladmin 命令在终端来执行删除命令:
mysqladmin -u your_username -p drop your_database # your_username 是 MySQL 用户名,your_database 是要删除的数据库的名称
创建和删除数据表
MySQL 数据类型
MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。
MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
-- 创建数据表需要包括:表名、表字段名、定义每个表字段的数据类型。
-- 创建一个用户表 users:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
birthdate DATE,
is_active BOOLEAN DEFAULT TRUE
);
-- 创建一个使用 utf8mb4 字符集和 utf8mb4_general_ci 排序规则的表:
CREATE TABLE mytable (
id INT PRIMARY KEY,
name VARCHAR(50)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 在 RUNOOB 数据库中创建数据表 runoob_tbl:
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 注意:MySQL 命令终止符为分号 ;
-- 注意: -> 是换行符标识
-- MySQL中删除数据表是非常容易操作的,但是在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。
DROP TABLE [IF EXISTS] table_name;
-- 也可以使用 MySQL mysqladmin 命令在终端来执行删除命令:
mysqladmin -u your_username -p drop your_table
插入数据
-- 插入了一行数据到名为 users 的表中:
INSERT INTO users (username, email, birthdate, is_active)
VALUES ('test', 'test@runoob.com', '1990-01-01', true);
-- 如果你要插入所有列的数据,可以省略列名:
INSERT INTO users
VALUES (NULL,'test', 'test@runoob.com', '1990-01-01', true);
-- NULL 是用于自增长列的占位符,表示系统将为 id 列生成一个唯一的值。
--尝试
mysql> create database test1;
Query OK, 1 row affected (0.52 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test1 |
+--------------------+
4 rows in set (0.00 sec)
mysql> use test1;
Database changed
mysql> create table students(
-> id INT AUTO_INCREMENT PRIMARY KEY,
-> stu_name VARCHAR(50) NOT NULL,
-> score FLOAT DEFAULT 0,
-> pass BOOLEAN DEFAULT FALSE
-> );
Query OK, 0 rows affected (0.87 sec)
mysql> insert into students
-> values (null,'tom',72.8,true);
Query OK, 1 row affected (0.30 sec)
mysql> select * from students;
+----+----------+-------+------+
| id | stu_name | score | pass |
+----+----------+-------+------+
| 1 | tom | 72.8 | 1 |
+----+----------+-------+------+
1 row in set (0.00 sec)
查询数据
和之前学习的mysql workbench差不多。
-- 选择所有列的所有行
SELECT * FROM users;
-- 选择特定列的所有行
SELECT username, email FROM users;
-- 添加 WHERE 子句,选择满足条件的行
SELECT * FROM users WHERE is_active = TRUE;
-- 添加 ORDER BY 子句,按照某列的升序排序
SELECT * FROM users ORDER BY birthdate;
-- 添加 ORDER BY 子句,按照某列的降序排序
SELECT * FROM users ORDER BY birthdate DESC;
-- 添加 LIMIT 子句,限制返回的行数
SELECT * FROM users LIMIT 10;
修改(更新)数据
如果需要修改或更新 MySQL 中的数据,可以使用 UPDATE 命令来操作。
通用语法如下:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
-- table_name 是你要更新数据的表的名称。
-- column1, column2, ... 是你要更新的列的名称。
-- value1, value2, ... 是新的值,用于替换旧的值。
-- WHERE condition 是一个可选的子句,用于指定更新的行。如果省略 WHERE 子句,将更新表中的所有行。
注意:如果省略 WHERE 子句,将更新表中的所有行。很多时候这不是我们想要看到的,所以不要忘了使用 WHERE 限制更新条件。
下面是几个案例:
-- 更新单个列的值:
UPDATE employees
SET salary = 60000
WHERE employee_id = 101;
-- 更新多个列的值:
UPDATE orders
SET status = 'Shipped', ship_date = '2023-03-01'
WHERE order_id = 1001;
-- 使用表达式更新值:
UPDATE products
SET price = price * 1.1
WHERE category = 'Electronics';
-- 更新所有值
UPDATE students
SET status = 'Graduated';
-- 更新使用子查询的值:
UPDATE customers
SET total_purchases = (
SELECT SUM(amount)
FROM orders
WHERE orders.customer_id = customers.customer_id
)
WHERE customer_type = 'Premium';
注意: 在使用 UPDATE 语句时,请确保你提供了足够的条件来确保只有你想要更新的行被修改。如果不提供 WHERE 子句,将更新表中的所有行,可能导致不可预测的结果。
删除记录
可以使用 DELETE FROM 命令来删除 MySQL 数据表中的记录。
通用语法如下:
DELETE FROM table_name
WHERE condition;
-- table_name 是你要更新数据的表的名称。
-- WHERE condition 是一个可选的子句,用于指定更新的行。如果省略 WHERE 子句,将更新表中的所有行。
案例:
-- 删除符合条件的行:
DELETE FROM students
WHERE graduation_year = 2021;
-- 删除所有行:
-- SQL 语句删除了 orders 表中的所有记录,但表结构保持不变。
DELETE FROM orders;
-- 使用子查询删除符合条件的行:
DELETE FROM customers
WHERE customer_id IN (
SELECT customer_id
FROM orders
WHERE order_date < '2023-01-01'
);
注意: 在使用 DELETE 语句时,请确保你提供了足够的条件来确保只有你想要删除的行被删除。如果不提供 WHERE 子句,将删除表中的所有行,可能导致不可预测的结果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现