MySQL常见指令

MySQL中的数据类型

大致分为五种:数值,日期和时间,字符串,json,空间类型

每种类型也包括也一些不同的子类型,根据需要来选择。

如数值类型包括整数类型和浮点数类型 整数类型根据占用的存储空间的不同 又包括TINYINT(1字节),SMALLINT(2字节),INT(4字节),BIGINT(8字节),DECIMAL定点型。可以存储不同范围的整数。

浮点数类型包括FLOAT(4字节)和DOUBLE(8字节),可以存储不同范围的浮点数。日期和时间类型包括DATE日期, TIME时间, DATETIME日期时间, TIMESTAMP时间戳。

字符串类型包括CHAR定长字符串, VARCHAR变长字符串, TEXT文本, BLOB二进制数据, ENUM枚举, SET集合。如VARCHAR(100)表示长度为100的变长字符串。

空间类型包括地理信息、几何图形等。

MySQL大小写

  • 在SQL中,关键字函数名不用区分字母大小写的,比如SELECT、WHERE、 ORDER、 GROUP BY等关键字,以及ABS、MOD、 ROUND、 MAX 等函数名。
  • MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
    1、数据库名、表名、表的别名、变量名严格区分大小写的;
    2、关键字、函数名称在SQL中不区分大小写;
    3、列名(或字段名)与列的别名(或字段别名)在所有的情况下均是忽略大小写的;
  • MySQL在Windows的环境下全部不区分大小写
  • 可通过如下命令查看是否大小写敏感
    SHOW VARIABLES LIKE '%lower_case_table_names%';
    

1.与库相关

进入mysql数据库

mysql -u root -p;

修改密码

update user set password=password(”123456″) where user=’root’; 

刷新数据库

FLUSH PRIVILEGES;

创建数据库

CREATE DATABASE name;

如果数据库已经存在,执行 CREATE DATABASE 将导致错误。

为了避免这种情况,可以在 CREATE DATABASE 语句中添加 IF NOT EXISTS 子句

如果希望在创建数据库时指定一些选项,可以使用 CREATE DATABASE 语句的其他参数,例如,可以指定字符集和排序规则:

CREATE DATABASE [IF NOT EXISTS] database_name[CHARACTER SET charset_name][COLLATE collation_name];

以上代码创建一个使用 utf8mb4 字符集和 utf8mb4_general_ci 排序规则的数据库。

打开数据库

如 use game;

USE name; 

显示所有数据库

SHOW DATABASES; 

删除数据库

//删除数据库,如果存在的话,不提醒
DROP DATABASE IF EXISTS name;//删除数据库前,有提示。
mysqladmin drop NAME;

显示当前mysql版本和当前日期

select version(),current_date;

2.与表相关

创建表

CREATE TABLE table_name (column1 datatype,column2 datatype,...
);
  • table_name 是你要创建的表的名称。
  • column1column2, ... 是表中的列名。
  • datatype 是每个列的数据类型。

 实例1:

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
);

创建了一个users表,其中包含五列: 

  • id: 用户 id,整数类型,AUTO_INCREMENT自增长,PRIMARY KEY作为主键。
  • username: 用户名,变长字符串,不允许为空。
  • email: 用户邮箱,变长字符串,不允许为空。
  • birthdate: 用户的生日,日期类型。
  • is_active: 用户是否已经激活,布尔类型,默认值为 true。

 如果你希望在创建表时指定数据引擎,字符集和排序规则等,可以使用 CHARACTER SET 和 COLLATE 子句:

CREATE TABLE mytable (id INT PRIMARY KEY,name VARCHAR(50)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

以上代码创建一个使用 utf8mb4 字符集和 utf8mb4_general_ci 排序规则的表。 

 实例2:

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;
  • 如果你不想字段为可以设置字段的属性为 NOT NULL,如上实例中的 runoob_title 与 runoob_author 字段, 在操作数据库时如果输入该字段的数据为空,就会报错。

  • AUTO_INCREMENT 定义列为自增的属性,一般用于主键,数值会自动加 1。
  • PRIMARY KEY 关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号 , 分隔。
  • ENGINE 设置存储引擎,CHARSET 设置编码。

显示所有的表

先use mysql;然后

SHOW TABLES;

删除整个表

//删除表,如果存在的话
DROP TABLE IF EXISTS mytable;//直接删除表,不检查是否存在
DROP TABLE mytable;
  • IF EXISTS 是一个可选的子句,表示如果表存在才执行删除操作,避免因为表不存在而引发错误。

 查看表的具体属性信息及表中各字段的描述

DESC name; 

插入数据

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
  • table_name 是你要插入数据的表的名称。
  • column1column2column3, ... 是表中的列名。
  • value1value2value3, ... 是要插入的具体数值。

如果数据是字符型,必须使用单引号 ' 或者双引号 ",如: 'value1', "value1"。

实例1:

INSERT INTO users (username, email, birthdate, is_active)
VALUES ('test', 'test@runoob.com', '1990-01-01', true);

 如果要插入所有列的数据,可以省略列名,如实例2:

INSERT INTO users
VALUES (NULL,'test', 'test@runoob.com', '1990-01-01', true);

这里,NULL 是用于自增长列的占位符,表示系统将为 id 列生成一个唯一的值。

如果你要插入多行数据,可以在 VALUES 子句中指定多组数值,如实例3:

INSERT INTO users (username, email, birthdate, is_active)
VALUES('test1', 'test1@runoob.com', '1985-07-10', true),('test2', 'test2@runoob.com', '1988-11-25', false),('test3', 'test3@runoob.com', '1993-05-03', true);

对表结构进行修改:ALTER

//把player表中的name列数据类型改为VARCHAR(200)
alter table player modify column name VARCHAR(200);//将player表重命名为pp
alter table player rename pp;//把player表中的name列名字改成nick_name
alter table player rename column name to nick_name;//在player表中加入一列last_login,其数据类型为DATETIME
alter table player add column last_login DATETIME;//删掉player中的last_login列
alter table player drop column last_login;

2.GRANT授权

创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个

grant all privileges on *.* to user@localhost identified by ’something’ with

格式 : grant select on 数据库 .* to 用户名@登录主机 identified by ”密码"

GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ’something’ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON . TO monty@”%” IDENTIFIED BY ’something’ WITH GRANT OPTION;

3.更新数据

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
  • table_name 是你要更新数据的表的名称。
  • column1column2, ... 是你要更新的列的名称。
  • value1value2, ... 是新的值,用于替换旧的值。
  • WHERE condition 是一个可选的子句,用于指定更新的行。如果省略 WHERE 子句,将更新表中的所有行。

 实例1,更改两列的值:

UPDATE orders
SET status = 'Shipped', ship_date = '2023-03-01'
WHERE order_id = 1001;

 实例2:更改所有学生的状态为"Graduated"

UPDATE students
SET status = 'Graduated';

实例3: 更新使用子查询的值

UPDATE customers
SET total_purchases = (SELECT SUM(amount)FROM ordersWHERE orders.customer_id = customers.customer_id
)
WHERE customer_type = 'Premium';

 以上 SQL 语句通过子查询计算每个 'Premium' 类型客户的总购买金额,并将该值更新到 total_purchases 列中。

4.查询数据

SELECT column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column_name [ASC | DESC]]
[LIMIT number];
  • column1column2, ... 是你想要选择的列的名称,如果使用 * 表示选择所有列。
  • table_name 是你要从中查询数据的表的名称。
  • WHERE condition 是一个可选的子句,用于指定过滤条件,只返回符合条件的行。
  • ORDER BY column_name [ASC | DESC] 是一个可选的子句,用于指定结果集的排序顺序,默认是升序(ASC)。
  • LIMIT number 是一个可选的子句,用于限制返回的行数。
-- 选择所有列的所有行
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;

 在 WHERE 子句中,你可以使用各种条件运算符(如 =<><=>=!=),逻辑运算符(如 ANDORNOT),以及通配符(如 %)等。

以下是一些进阶的 SELECT 语句实例:

-- 使用 AND 运算符和通配符
SELECT * FROM users WHERE username LIKE 'j%' AND is_active = TRUE;-- 使用 OR 运算符
SELECT * FROM users WHERE is_active = TRUE OR birthdate < '1990-01-01';-- 使用 IN 子句
SELECT * FROM users WHERE birthdate IN ('1990-01-01', '1992-03-15', '1993-05-03');

WHERE子句

WHERE 子句用于过滤查询结果,类似于程序语言中的 if 条件,只返回满足特定条件的行。

WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。

模糊匹配条件(LIKE):

SELECT * FROM customers WHERE first_name LIKE 'J%';

LIKE子句

SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern;

在 MySQL 中使用 SELECT 命令来读取数据可以使用 WHERE 子句来获取指定的记录。WHERE 子句中可以使用等号 = 来设定获取数据的条件,如 "runoob_author = 'RUNOOB.COM'"。

但是有时候我们需要获取 runoob_author 字段含有 "COM" 字符的所有记录,这时我们就需要在 WHERE 子句中使用 LIKE 子句。LIKE 子句是在 MySQL 中用于在 WHERE 子句中进行模糊匹配的关键字。它通常与通配符(%或_)一起使用,用于搜索符合某种模式的字符串。

LIKE 子句中使用%字符来表示任意字符,类似于UNIX或正则表达式中的星号 *。

如果没有使用%, LIKE 子句与等号 = 的效果是一样的。

也可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。

实例1:% 通配符表示零个或多个字符。例如,'a%' 匹配以字母 'a' 开头的任何字符串。

SELECT * FROM customers WHERE last_name LIKE 'S%';

以上 SQL 语句将选择所有姓氏以 'S' 开头的客户。

SELECT * from runoob_tbl  WHERE runoob_author LIKE '%COM';

以上SQL 语句将在 runoob_tbl 表中获取 runoob_author 字段中以 COM 为结尾的的所有记录

实例2:_ 通配符表示一个字符。例如,'_r%' 匹配第二个字母为 'r' 的任何字符串。

SELECT * FROM products WHERE product_name LIKE '_a%';

以上 SQL 语句将选择产品名称的第二个字符为 'a' 的所有产品。

实例3:组合使用 % 和 _

SELECT * FROM users WHERE username LIKE 'a%o_';

以上 SQL 语句将匹配以字母 'a' 开头,然后是零个或多个字符,接着是 'o',最后是一个任意字符的字符串,如 'aaron'、'apol'。

实例4:不区分大小写的匹配

SELECT * FROM employees WHERE last_name LIKE 'smi%' COLLATE utf8mb4_general_ci;

以上 SQL 语句将选择姓氏以 'smi' 开头的所有员工,不区分大小写。 

ORDER BY子句

实例1:多列排序

SELECT * FROM employees
ORDER BY department_id ASC, hire_date DESC;

以上 SQL 语句将选择员工表 employees 中的所有员工,并先按部门 ID 升序 ASC 排序,然后在相同部门中按雇佣日期降序 DESC 排序。

实例2:使用数字表示列的位置

SELECT first_name, last_name, salary
FROM employees
ORDER BY 3 DESC, 1 ASC;

以上 SQL 语句将选择员工表 employees 中的名字和工资列,并按第三列(salary)降序 DESC 排序,然后按第一列(first_name)升序 ASC 排序。 

实例3:使用表达式排序

SELECT product_name, price * discount_rate AS discounted_price
FROM products
ORDER BY discounted_price DESC;
  • AS 关键字可以给表中字段 或者 表名起别名

以上 SQL 语句将选择产品表 products 中的产品名称和根据折扣率计算的折扣后价格 起别名为discounted_price,并按折扣后价格降序 DESC 排序。 

5.删除数据

DELETE FROM table_name
WHERE condition;
  • table_name 是你要删除数据的表的名称。
  • WHERE condition 是一个可选的子句,用于指定删除的行。如果省略 WHERE 子句,将删除表中的所有行。

实例:

DELETE FROM customers
WHERE customer_id IN (SELECT customer_idFROM ordersWHERE order_date < '2023-01-01'
);

 以上 SQL 语句通过子查询删除了 orders 表中在 '2023-01-01' 之前下的订单对应的客户。

6.合并结果集:UNION

MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合,并去除重复的行。

UNION 操作符必须由两个或多个 SELECT 语句组成,每个 SELECT 语句的列数和对应位置的数据类型必须相同。

SELECT column1, column2, ...
FROM table1
WHERE condition1
UNION
SELECT column1, column2, ...
FROM table2
WHERE condition2
[ORDER BY column1, column2, ...];
  • column1column2, ... 是你要选择的列的名称,如果使用 * 表示选择所有列。
  • table1table2, ... 是你要从中查询数据的表的名称。
  • condition1condition2, ... 是每个 SELECT 语句的过滤条件,是可选的。
  • ORDER BY 子句是一个可选的子句,用于指定合并后的结果集的排序顺序。

实例1:

SELECT product_name FROM products WHERE category = 'Electronics'
UNION
SELECT product_name FROM products WHERE category = 'Clothing'
ORDER BY product_name;

以上 SQL 语句将选择电子产品和服装类别的产品名称,并按产品名称升序排序。

实例2:使用 UNION ALL 不去除重复行

SELECT city FROM customers
UNION ALL
SELECT city FROM suppliers
ORDER BY city;

以上 SQL 语句使用 UNION ALL 将客户表和供应商表中的所有城市合并在一起,不去除重复行。

UNION 操作符在合并结果集时会去除重复行,而 UNION ALL 不会去除重复行,因此 UNION ALL 的性能可能更好,但如果你确实希望去除重复行,可以使用 UNION。 

参考MySQL 教程 | 菜鸟教程 (runoob.com)

MySQL的指令大全和注意事项(强烈推荐收藏)_mysql常用命令-CSDN博客

MySQL常用命令总结_常用的mysql命令-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/386955.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cocos Creator2D游戏开发(7)-飞机大战(5)-让子弹飞

飞机大战(5)-碰撞及积分 参考敌机的生成 子弹由飞机生成,放在player_node节点子弹重复使用,要使用预制体;子弹新增了动画 ①创建一个预制体 命名为playerBullet_prefab ② 双击预制体将bullet1图片拖入预制体 保存,关闭(场景编辑器里面的) ③ 发射子弹 player加入代码 prop…

听说它可以让代码更优雅

一提到静态代码检查工具这个词应该比较好理解&#xff0c;所谓静态代码检查工具就是检查静态代码的工具&#xff0c;完美~ 言归正传&#xff0c;相信很多程序员朋友都听说过静态代码检查工具这个概念&#xff0c;它可能是我们IDE里的某一个插件&#xff0c;可能是计算机中的一…

RK3588+MIPI+GMSL+AI摄像机:自动车载4/8通道GMSL采集/边缘计算盒解决方案

RK3588作为目前市面能买到的最强国产SOC&#xff0c;有强大的硬件配置。在智能汽车飞速发展&#xff0c;对图像数据矿场要求越来越多的环境下&#xff0c;如何高效采集数据&#xff0c;或者运行AI应用&#xff0c;成为刚需。 推出的4/8通道GMSL采集/边缘计算盒产品满足这些需求…

Spring验证码

前言&#xff1a;使用Hutool 1.什么是Hutool&#xff1f; 2.代码复制到test类中 3.代码爆红&#xff0c;说明需要引入依赖 4.根据名取Maven仓库相关依赖 5.在pom.xml文件中进行配置 6.引入成功 7. 运行程序 打开d盘&#xff0c;发现已经生成了验证码的图片&#xff0c;路径在…

Codeforces Round 654 (Div. 2) C. A Cookie for You (模拟)

我认为这道题就是个脑筋急转弯。 首先我们知道当a b < n m的时候&#xff0c;饼干总数都不够人的总数&#xff0c;那肯定是NO。 并且注意题干&#xff0c;我们可以得知当a b的时候&#xff0c;第一类和第二类人可以任意选两种饼干中的一种。 之后我们可以分类讨论一下。 …

网格布局 HTML CSS grid layout demo

文章目录 页面效果代码 (HTML CSS)参考 页面效果 代码 (HTML CSS) <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…

[ BLE4.0 ] 伦茨ST17H66开发-串口UART0的接收与发送

目录 一、前言 二、实现步骤 1.设置回调函数 2.关闭睡眠模式 三、效果展示 四、工程源代码 一、前言 串口通信在任何一款单片机开发中都是尤为重要的。本文涉及的开发所使用的例程依然是基于[ BLE4.0 ] 伦茨ST17H66开发-OSAL系统中添加自己的Task任务文章的工程源码&#x…

windows@powershell@任务计划@自动任务计划@taskschd.msc.md

文章目录 使用任务计划windows中的任务计划任务计划命令行程序开发windows 应用中相关api传统图形界面FAQ schtasks 命令常见用法创建计划任务删除计划任务查询计划任务修改计划任务运行计划任务 PowerShell ScheduledTasks常用 cmdlet 简介1. Get-ScheduledTask2. Register-Sc…

Git远程仓库推送

这里我只连接了两个站点的远程仓库&#xff0c;一个是国内的Gitee&#xff0c;另一个是Github&#xff0c;这两个站点的连接方式主要有两种&#xff0c;第一种就是通过https来连接远程仓库&#xff0c;另一种是通过ssh公钥来连接&#xff0c;这两个站点练接的大致过程都是一样的…

我出一道面试题,看看你能拿 3k 还是 30k!

大家好&#xff0c;我是程序员鱼皮。欢迎屏幕前的各位来到今天的模拟面试现场&#xff0c;接下来我会出一道经典的后端面试题&#xff0c;你只需要进行 4 个简单的选择&#xff0c;就能判断出来你的水平是新手&#xff08;3k&#xff09;、初级&#xff08;10k&#xff09;、中…

4 款最佳 C# 无头浏览器

摘要&#xff1a; 在当今大数据时代&#xff0c;高效的数据采集成为众多项目的关键一环。对于偏好C#语言的开发者而言&#xff0c;无头浏览器是实现网页自动化交互、数据抓取的强大工具。本文将深入探讨四款顶尖的C#无头浏览器库&#xff0c;分析它们的特性和应用场景&#xf…

怎么把C盘分成两个盘?让C盘分区更简单,赶快试试!

在日常使用电脑的过程中&#xff0c;有时我们可能希望将C盘分割成两个独立的分区&#xff0c;以便更好地管理文件和数据。这种操作需要谨慎进行&#xff0c;因为错误的分区操作可能导致数据丢失。那么&#xff0c;我们该怎么把C盘分成两个盘呢&#xff1f;下面&#xff0c;我将…

lua 游戏架构 之 游戏 AI (六)ai_auto_skill

定义一个为ai_auto_skill的类&#xff0c;继承自ai_base类。ai_auto_skill类的目的是在AI自动战斗模式下&#xff0c;根据配置和条件自动选择并使用技能。 lua 游戏架构 之 游戏 AI &#xff08;一&#xff09;ai_base-CSDN博客文章浏览阅读379次。定义了一套接口和属性&#…

vue3在元素上绑定自定义事件弹出虚拟键盘

最近开发中遇到一个需求: 焊接机器人的屏幕上集成web前端网页, 但是没有接入键盘。这就需要web端开发一个虚拟键盘,在网上找个很多虚拟键盘没有特别适合,索性自己写个简单的 图片: 代码: (代码可能比较垃圾冗余,也没时间优化,凑合看吧) 第一步:创建键盘组件 为了方便使用…

3.2.微调

微调 ​ 对于一些样本数量有限的数据集&#xff0c;如果使用较大的模型&#xff0c;可能很快过拟合&#xff0c;较小的模型可能效果不好。这个问题的一个解决方案是收集更多数据&#xff0c;但其实在很多情况下这是很难做到的。 ​ 另一种方法就是迁移学习(transfer learning…

c++如何理解多态与虚函数

目录 **前言****1. 何为多态**1.1 **编译时多态**1.1.1 函数重载1.1.2 模板 **1.2 运行时多态****1.2.1 虚函数****1.2.2 为什么要用父类指针去调用子类函数** **2. 注意****2.1 基类的析构函数应写为虚函数****2.2 构造函数不能设为虚函数** **本文参考** 前言 在学习 c 的虚…

打造重庆市数字化教育“新名片”,广阳湾珊瑚中学凭实力“出圈”!

分布于教学楼连廊顶部的智能照明设备,根据不同的时间和场景需求自动调节灯光亮度和开关状态;安装于各个教室内的智能黑板、学校同步时钟、学生互动设备,在极简以太全光网的赋能下,为师生提供丰富的教学体验与学习支持......行走于重庆市广阳湾珊瑚中学,像是与充满科技感的“校园…

病理AI领域的基础模型汇总|顶刊专题汇总·24-07-26

小罗碎碎念 本期文献主题&#xff1a;病理AI领域的最新基础模型 今天的推文是一期生日特辑&#xff0c;定时在下午六点二十一分发表&#xff08;今天农历六月二十一&#xff0c;哈哈&#xff09;&#xff0c;算是自己给自己的24岁生日礼物&#xff0c;希望24岁这一年&#xff0…

ollama本地部署大语言模型记录

目录 安装Ollama更改模型存放位置 拉取模型GemmaMistralQwen1.5(通义千问)codellama 部署Open webui测试性能知识广度问题1问题2 代码能力总结 最近突然对大语言模型感兴趣 同时在平时的一些线下断网的CTF比赛中&#xff0c;大语言模型也可以作为一个能对话交互的高级知识检索…

SSRF中伪协议学习

SSRF常用的伪协议 file:// 从文件系统中获取文件内容,如file:///etc/passwd dict:// 字典服务协议,访问字典资源,如 dict:///ip:6739/info: ftp:// 可用于网络端口扫描 sftp:// SSH文件传输协议或安全文件传输协议 ldap://轻量级目录访问协议 tftp:// 简单文件传输协议 gopher…