Mysql 常用语句及用法记录

一、mysql简介-常用命令:

MySQL是一种关系型数据库管理系统,它提供了许多命令和用法来管理和操作数据库。以下是一些常用的MySQL命令及其用法:

1. 连接数据库:

复制代码
 mysql -u username -p

用于连接到MySQL服务器,其中username是您的用户名。然后,系统会提示您输入密码来访问数据库。

2. 创建数据库:

复制代码
CREATE DATABASE database_name;

用于创建一个新的数据库,其中database_name是您想要创建的数据库的名称。

3. 选择数据库:

复制代码
 USE database_name;

用于选择要使用的数据库,其中database_name是您要选择的数据库的名称。

4. 创建表:

复制代码
   CREATE TABLE table_name (
   column1 datatype constraint,
   column2 datatype constraint,
   ...
   );

用于创建一个新的表,其中table_name是您想要创建的表的名称,column1、column2等是表的列名和数据类型。

5. 插入数据:

复制代码
  INSERT INTO table_name (column1, column2, ...)
   VALUES (value1, value2, ...);

用于向表中插入新的数据,其中table_name是您要插入数据的表的名称。

6. 查询数据:

复制代码
SELECT column1, column2, ...
   FROM table_name
   WHERE condition;

用于从表中检索数据,其中column1、column2等是您要检索的列名,table_name是您要检索数据的表的名称。

7. 更新数据:

复制代码
 UPDATE table_name
   SET column1 = value1, column2 = value2, ...
   WHERE condition;

用于更新表中的数据,其中column1、column2等是您要更新的列名,table_name是您要更新数据的表的名称。

8. 删除数据:

复制代码
  DELETE FROM table_name
   WHERE condition;

用于从表中删除数据,其中table_name是您要删除数据的表的名称。

9. 删除表:

复制代码
  DROP TABLE table_name;

用于删除一个表,其中table_name是您要删除的表的名称。

二、更改MySQL用户的权限和属性命令:

1. 查看当前用户:

复制代码
SELECT user, host FROM mysql.user;

这将显示当前已经创建的用户列表以及他们的主机。您可以在这里找到要更改的用户。

2. 更改用户密码:

复制代码
   ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';

将 'username' 替换为要更改密码的用户的用户名,'host' 是用户的主机,'new_password' 是新的密码。

3. 修改用户权限:

复制代码
 GRANT permissions ON database_name.table_name TO 'username'@'host';

permissions 是要授予用户的权限,可以是ALL PRIVILEGES、SELECT、INSERT、UPDATE、DELETE等,database_name 和 table_name 是数据库和表的名称,'username' 和 'host' 分别是要更改权限的用户和主机。

4. 删除用户权限:

复制代码
 REVOKE permissions ON database_name.table_name FROM 'username'@'host';

permissions、database_name、table_name、'username' 和 'host' 的含义与上述相同,该命令用于从用户上撤销特定权限。

5. 删除用户:

复制代码
DROP USER 'username'@'host';

用于删除特定用户,将 'username' 和 'host' 替换为要删除的用户和主机。

三、MySQL中常见的MySQL函数及其用法示例:

1. COUNT() 函数:

用于计算指定列的行数

语法:SELECT COUNT(列名) FROM 表名 WHERE 条件;

例如:

复制代码
 SELECT COUNT(*) FROM employees; -- 计算员工表中的总行数
 SELECT COUNT(DISTINCT department_id) FROM employees; -- 计算员工表中不重复的部门ID数

2. SUM() 函数:

用于计算指定列的总和

复制代码
 语法:SELECT SUM(列名) FROM 表名 WHERE 条件;
 例如:SELECT SUM(salary) FROM employees; -- 计算员工表中薪水的总和

3. AVG() 函数:

用于计算指定列的平均值

复制代码
 语法:SELECT AVG(列名) FROM 表名 WHERE 条件;
 例如:SELECT AVG(age) FROM employees WHERE department_id = 1; -- 计算部门1员工的平均年龄

4. MAX() 函数:

用于找出指定列的最大值

复制代码
语法:SELECT MAX(列名) FROM 表名 WHERE 条件;
例如:SELECT MAX(salary) FROM employees; -- 找出员工表中薪水的最高值

5. MIN() 函数:

用于找出指定列的最小值

复制代码
语法:SELECT MIN(列名) FROM 表名 WHERE 条件;
例如:SELECT MIN(age) FROM employees; -- 找出员工表中年龄的最小值

6. CONCAT() 函数:

用于连接多个字符串

复制代码
语法:SELECT CONCAT(字符串1, 字符串2, ...) FROM 表名 WHERE 条件;
例如:SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees; -- 将员工的姓和名连接成全名

7. DATE_FORMAT() 函数:

用于格式化日期

复制代码
语法:SELECT DATE_FORMAT(日期列, '格式') FROM 表名 WHERE 条件;
例如:SELECT DATE_FORMAT(birth_date, '%Y-%m-%d') FROM employees; -- 将员工的生日日期格式化为年-月-日的形

8. 字符串函数:

  • CONCAT(str1, str2, ...):将多个字符串连接在一起。

示例:SELECT CONCAT('Hello', ' ', 'World'); -- 输出:Hello World

  • LENGTH(str):返回字符串的长度。

示例:SELECT LENGTH('Hello World'); -- 输出:11

  • UPPER(str):将字符串转换为大写。

示例:SELECT UPPER('hello'); -- 输出:HELLO

  • LOWER(str):将字符串转换为小写。

示例:SELECT LOWER('WORLD'); -- 输出:world

  • SUBSTRING(str, start, length):返回字符串的子串。

示例:SELECT SUBSTRING('Hello World', 7, 5); -- 输出:World

  • REPLACE(str, search_str, replace_str):用一个字符串替换另一个字符串。

示例:SELECT REPLACE('Hello World', 'World', 'Universe'); -- 输出:Hello Universe

9. 数值函数:

  • ABS(x):返回x的绝对值。

示例:SELECT ABS(-10); -- 输出:10

  • ROUND(x, d):将x四舍五入到d位小数。

示例:SELECT ROUND(3.14159, 2); -- 输出:3.14

  • CEIL(x):返回大于或等于x的最小整数。

示例:SELECT CEIL(4.25); -- 输出:5

  • FLOOR(x):返回小于或等于x的最大整数。

示例:SELECT FLOOR(4.25); -- 输出:4

  • RAND():返回0到1之间的随机数。

示例:SELECT RAND(); -- 输出:随机数

10. 日期和时间函数:

  • NOW():返回当前日期和时间。

示例:SELECT NOW(); -- 输出:当前日期和时间

  • CURDATE():返回当前日期。

示例:SELECT CURDATE(); -- 输出:当前日期

  • CURTIME():返回当前时间。

示例:SELECT CURTIME(); -- 输出:当前时间

  • DATE_FORMAT(date, format):将日期格式化为指定格式。

示例:SELECT DATE_FORMAT(NOW(), '%Y-%m-%d'); -- 输出:当前日期的年-月-日格式

  • ADDDATE(date, INTERVAL value unit):将日期增加指定的时间间隔。

示例:SELECT ADDDATE(CURDATE(), INTERVAL 1 WEEK); -- 输出:当前日期加1周后的日期

11.if条件函数:

  1. IF(condition, value_if_true, value_if_false):根据条件返回不同的值。

示例:SELECT IF(10 > 5, 'Yes', 'No'); -- 输出:Yes

  1. CASE表达式:用于根据条件进行多重分支判断。

示例:

复制代码
   SELECT column_name,
          CASE
             WHEN condition1 THEN value1
             WHEN condition2 THEN value2
             ...
             ELSE default_value
          END AS alias_name
   FROM table_name;
  1. COALESCE(value1, value2, ...):返回参数中的第一个非NULL值。

示例:SELECT COALESCE(NULL, 'Value', 'Default'); -- 输出:Value

  1. NULLIF(expr1, expr2):如果expr1和expr2的值相等,则返回NULL,否则返回expr1的值。

示例:SELECT NULLIF(10, 10); -- 输出:NULL

  1. IFNULL(expr1, expr2):如果expr1为NULL,则返回expr2的值,否则返回expr1的值。

示例:SELECT IFNULL(NULL, 'Value'); -- 输出:Value

  1. CASE WHEN...THEN...ELSE...END函数:用于在查询中进行条件判断。

示例:

复制代码
   SELECT column_name,
          CASE
             WHEN condition1 THEN value1
             WHEN condition2 THEN value2
             ...
             ELSE value_if_false
          END AS alias_name
   FROM table_name;

四、Mysql存储过程使用:

1. 创建存储过程:

通过CREATE PROCEDURE语句来创建存储过程。

示例:

复制代码
CREATE PROCEDURE procedure_name()
   BEGIN
       -- 存储过程的SQL语句
   END;

2. 参数传递:

存储过程可以接受输入参数和输出参数。

示例:

复制代码
 CREATE PROCEDURE procedure_name(IN param1 INT, OUT param2 VARCHAR(255))
   BEGIN
       -- 存储过程的SQL语句
   END;

3. 调用存储过程:

使用CALL语句来调用存储过程。

示例:

复制代码
 CALL procedure_name();

4. 条件判断:

可以在存储过程中使用条件判断语句,如IF、CASE等来实现逻辑控制。

示例:

复制代码
 IF condition THEN
       -- 执行的操作
   ELSE
       -- 执行的操作
   END IF;

5. 循环:

可以在存储过程中使用循环语句来实现迭代操作,如WHILE、LOOP等。

示例:

复制代码
 WHILE condition DO
       -- 执行的操作
   END WHILE;

6. 返回结果:

存储过程可以返回结果集或者单个值。

示例:

复制代码
 CREATE PROCEDURE procedure_name()
   BEGIN
       SELECT column_name FROM table_name;
   END;

五、MySQL视图的创建和使用:

1. 创建视图:

使用CREATE VIEW语句来创建视图。

示例:

复制代码
   CREATE VIEW view_name AS
   SELECT column1, column2
   FROM table_name
   WHERE condition;

2. 查看视图:

使用SELECT语句来查询和查看视图的数据。

示例:

复制代码
 SELECT * FROM view_name;

3. 更新视图:

视图可以通过更新操作来修改基础表的数据。

示例:

复制代码
 UPDATE view_name
   SET column1 = value
   WHERE condition;

4. 删除视图:

使用DROP VIEW语句来删除视图。

示例:

复制代码
 DROP VIEW view_name;

5. 视图的替代表达式:

在视图定义中,可以使用计算字段、函数、子查询等来创建复杂的查询逻辑和结果集。

示例:

复制代码
 CREATE VIEW view_name AS
   SELECT column1, column2, column1 + column2 AS total
   FROM table_name;

6. 视图的嵌套:

可以在一个视图中引用另一个视图,从而创建更复杂的查询结果。 示例:

复制代码
CREATE VIEW view1 AS
   SELECT column1, column2
   FROM table_name;

   CREATE VIEW view2 AS
   SELECT column1
   FROM view1;
相关推荐
JavaGuide34 分钟前
公司来的新人用字符串存储日期,被组长怒怼了...
后端·mysql
怒放吧德德3 小时前
MySQL篇:MySQL主从集群同步延迟问题
后端·mysql·面试
数据智能老司机4 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
Eip不易也不e5 小时前
教程之同时安装两个版本的 mysql
mysql
数据智能老司机5 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
松果猿5 小时前
空间数据库学习(二)—— PostgreSQL数据库的备份转储和导入恢复
数据库
Kagol5 小时前
macOS 和 Windows 操作系统下如何安装和启动 MySQL / Redis 数据库
redis·后端·mysql
无名之逆5 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
s9123601015 小时前
rust 同时处理多个异步任务
java·数据库·rust
数据智能老司机5 小时前
CockroachDB权威指南——CockroachDB 架构
数据库·分布式·架构