mysql语法大全

news2024/11/23 19:29:53

首先来一个全局总览,后面我会分别对每个命令进行说明:
在这里插入图片描述
如果你的mysql导入环境变量,可以在命令行输入:

mysql -u root -p

然后输入密码登录数据库
否则,打开mysql command line并输入密码进入数据库

在这里插入图片描述

一,基础数据库操作

1.创建数据库

create database my_database;

2.查询数据库

show databases;

在这里插入图片描述

3.删除数据库

drop database my_databases;

在这里插入图片描述
4.选择数据库

use my_database;

5.查询数据表

show tables;

在这里插入图片描述

6.创建数据表

create table student(id int,name char(10),age int,sex char(5));

在这里插入图片描述

7.查询表结构

desc student;

在这里插入图片描述
8.删除表

drop table student;

9.数据表添加列

alter table student add height int(10);

在这里插入图片描述
10.数据表删除列

alter table student drop height;

在这里插入图片描述
11.数据列改名

alter table student change column height high int(3);

在这里插入图片描述
12.数据列修改数据类型

alter table student modify column high char(10);

在这里插入图片描述
13.修改表名

alter table student rename to student_table;

在这里插入图片描述
14.插入数据项

insert into student(id,name,age,sex,high) value (001,"张三",10,"男",160);

在这里插入图片描述
15.删除数据项

 delete from student where high=140;

16.更新数据项

 update student set age=12;

在这里插入图片描述

二,逻辑运算符

  1. between 最小值 and 最大值
    语法:select * from 表名 where 列名 between 最小值 and 最大值;
select * from student where id between 2 and 5;

在这里插入图片描述
作用和使用><是一样的

 select * from student where id>2 and id<5;

在这里插入图片描述

2.null
语法:select * from 表名 where 列名 is null;(判断这一列有空值)

select * from student where high is null;

select * from 表名 where 列名 is not null;(判断这一列没有空)

  1. in (取值范围)
    语法:select * from 表名 where 列名 in (值1,值2,…)
 select * from student where age in(9,12);

在这里插入图片描述

  1. like 好像
    通配符: % 代表任意字符 _ 一个下划线代替一个字符
    语法:select * from 表名 where 列名 like ‘通配符 特征 通配符’;
 select * from student where name like '张_';

在这里插入图片描述

具体参考:mysql的like语句
5.as 为表名称或者列名称指定别名

 select id as student_id from student where name like '张_';

在这里插入图片描述

6.union 合并两个或多个select语句结果集

 select id from student as st where st.name like '张_' union select name from student where age=9;

在这里插入图片描述

三,排序

关键词 order by
排序规则:升序排序 asc (默认可省略) 降序排序 desc
语法:
单列 select * from 表名 order by 列名 asc或者 desc;
多列 select * from 表名 order by 列名 asc或者 desc,列名2 asc或者desc,…;

 select * from student order by age asc,name desc;

在这里插入图片描述

四,去重

GROUP BY 和 DISTINCT 都是用于从数据库中选择唯一值的 SQL 子句
两者的不同请参考:mysql的distinct和group by的区别

 select distinct age from student;
select age,count(*) from student group by age;

在这里插入图片描述

五,统计函数

语法:select 统计函数(列名),统计函数(列名2)… from 表名;
1.count(列名) 统计这一列的非空总行数

select id,count(*) from student group by id;

在这里插入图片描述

2.sum(列名) 统计这一列的总和

select sum(id) from student;

在这里插入图片描述

3.avg(列名) 统计这一列的平均值

 select avg(id) from student;

4.max(列名) 统计这一列的最大值

 select max(id) from student;

5.min(列名) 统计这一列的最小值

 select min(id) from student;

六,多表查询

1. 查询的数据来自于多张表—— 表连接
表连接有三种情况:
内链接: inner join
外链接:
左外链接: left join 获取左表所有记录,即使右表没有对应匹配的记录,则为空
右外链接: right join 获取右表所有记录,即使左表没有对应匹配的记录,则为空

在 MySQL 中,JOIN 是一种用于将多个表中的数据组合在一起的操作。JOIN 通过在多个表之间比较一个或多个列的值来确定如何组合这些表中的数据。
INNER JOIN:INNER JOIN 返回所有在两个表中都有匹配的行。它是默认的 JOIN 类型,如果没有指定 JOIN 类型,则使用 INNER JOIN。

LEFT JOIN(或 LEFT OUTER JOIN):LEFT JOIN 返回左表中所有的行,以及右表中所有匹配的行。如果右表中没有匹配的行,则返回 NULL 值。

RIGHT JOIN(或 RIGHT OUTER JOIN):RIGHT JOIN 返回右表中所有的行,以及左表中所有匹配的行。如果左表中没有匹配的行,则返回 NULL 值。

FULL JOIN(或 FULL OUTER JOIN):FULL JOIN 返回左表和右表中的所有行,并将没有匹配的行设置为 NULL 值。

以下是在 MySQL 中使用 INNER JOIN 和 LEFT JOIN 的示例:

– INNER JOIN 示例

SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers
ON orders.customer_id = customers.customer_id;

– LEFT JOIN 示例

SELECT customers.customer_name, orders.order_id
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id;

在上面的示例中,第一个查询使用 INNER JOIN 将 orders 表和 customers 表组合在一起,并根据它们的 customer_id 列进行匹配。第二个查询使用 LEFT JOIN 将 customers 表和 orders 表组合在一起,并根据它们的 customer_id 列进行匹配,返回所有的 customers 表中的行和与之匹配的 orders 表中的行。如果没有匹配的行,则返回 NULL 值。

INNER JOIN 多表查询

SELECT orders.order_id, customers.customer_name, products.product_name
FROM orders
INNER JOIN customers
ON orders.customer_id = customers.customer_id
INNER JOIN products
ON orders.product_id = products.product_id;

在上面的示例中,INNER JOIN 用于连接三个表:orders、customers 和 products。通过连接 customer_id 和 product_id 列,我们可以获取订单、顾客名称和产品名称的数据。

LEFT JOIN 多表查询

SELECT customers.customer_name, COUNT(orders.order_id)
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id
GROUP BY customers.customer_name;

在上面的示例中,LEFT JOIN 用于连接 customers 和 orders 表。通过连接 customer_id 列,我们可以获取每个顾客名称以及他们的订单数量。由于使用了 LEFT JOIN,如果某个顾客没有订单,他们的订单数量将显示为零。

2. 查询的条件来自于多张表—— 子查询
一个查询语句里面 包含了另外一条或多条查询语句
特征:一对 括号 把 查询语句给包起来了
子查询多表查询

SELECT orders.order_id, orders.order_date, customers.customer_name
FROM orders
INNER JOIN (
  SELECT customer_id, MAX(order_date) AS latest_order
  FROM orders
  GROUP BY customer_id
) AS latest_orders
ON orders.customer_id = latest_orders.customer_id
AND orders.order_date = latest_orders.latest_order
INNER JOIN customers
ON orders.customer_id = customers.customer_id;

在上面的示例中,子查询用于获取每个顾客的最新订单日期。然后,INNER JOIN 用于连接 orders 表和 customers 表,并将订单日期与最新订单日期进行比较,以获取最新订单的订单号、订单日期和顾客名称。

还可以别名结合join使用:
select * from 表名 as 别名1 join 表名 as 别名2 on 别名1.列名=别名2.列名;

七,索引

在 MySQL 中创建索引可以大大提高查询效率,加快数据检索速度,他的索引包含 普通索引和唯一索引,以及主键索引
具体参考:mysql索引

八,约束

SQL 约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止。

约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)

CREATE TABLE table_name
(
column_name1 data_type(size) constraint_name,
column_name2 data_type(size) constraint_name,
column_name3 data_type(size) constraint_name,
....
);

在 SQL 中,我们有如下约束:

主键约束(Primary Key Constraint):主键是用于标识表中每行记录的唯一标识符。主键可以是一个或多个列组成,用于唯一标识每一行。主键约束确保主键的值不为空并且唯一。

唯一约束(Unique Constraint):唯一约束确保一个或多个列中的每个值都是唯一的。与主键约束不同,唯一约束可以允许空值。

非空约束(Not Null Constraint):非空约束确保一个或多个列中的值不为空,即不允许 NULL 值。

外键约束(Foreign Key Constraint):外键约束用于定义两个表之间的关系。外键约束可以确保一个表中的数据与另一个表中的数据相匹配,通常用于建立表之间的关联关系。

检查约束(Check Constraint):检查约束用于定义列中允许的值的范围或条件。例如,可以使用检查约束确保一个列中的值不超过一定范围。

创建包含主键约束和外键约束的表的示例:

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

在上面的例子中,orders 表中的 order_id 列被定义为主键,customer_id 列定义为外键,关联到 customers 表中的 customer_id 列。

可以使用ALTER TABLE语句来给MySQL数据表添加约束,以下是一些常用的约束类型及其示例:

主键约束:
主键是唯一标识数据表中每个记录的列或列组合,可以使用以下语句添加主键约束:

ALTER TABLE table_name ADD PRIMARY KEY (column_name);

其中,table_name是数据表名称,column_name是要设置为主键的列名。

唯一约束:
唯一约束用于确保数据表中的某个列或列组合中的值是唯一的。可以使用以下语句添加唯一约束:

ALTER TABLE table_name ADD UNIQUE (column_name);

其中,table_name是数据表名称,column_name是要设置为唯一的列名。

外键约束:
外键约束用于确保数据表中的某个列或列组合的值与另一个表中的某个列或列组合的值相匹配。可以使用以下语句添加外键约束:

ALTER TABLE table_name ADD FOREIGN KEY (column_name) REFERENCES other_table_name (other_column_name);

其中,table_name是数据表名称,column_name是要设置为外键的列名,other_table_name是关联的其他表名称,other_column_name是在其他表中要匹配的列名。

九,事务

MySQL 事务是一组操作的集合,这些操作被视为单个不可分割的工作单元,要么全部完成,要么全部不完成。事务通常用于保证数据库操作的一致性和完整性,并且在处理高并发数据操作时非常有用。

在 MySQL 中,事务具有以下四个特性,通常被称为 ACID 特性:

原子性(Atomicity):事务是一个不可分割的工作单元,事务中的所有操作要么全部完成,要么全部不完成。

一致性(Consistency):在事务开始和结束时,数据库必须保持一致状态。这意味着,在事务执行之前和之后,所有相关的数据必须满足所有预定义的规则。

隔离性(Isolation):每个事务必须与其他事务隔离,以避免数据损坏。隔离级别定义了多个事务可以访问数据库的方式。

持久性(Durability):一旦事务完成,它所做的更改必须永久保存在数据库中,并且不应该被回滚。

在 MySQL 中,可以使用 BEGIN、COMMIT 和 ROLLBACK 语句来控制事务。BEGIN 语句用于启动事务,COMMIT 语句用于提交事务,而 ROLLBACK 语句用于撤消事务。例如,以下是在 MySQL 中使用事务的示例:

BEGIN;  -- 开始事务

UPDATE accounts SET balance = balance - 1000 WHERE id = 1;
UPDATE accounts SET balance = balance + 1000 WHERE id = 2;

COMMIT;  -- 提交事务

在上面的示例中,BEGIN 语句用于启动事务,两个 UPDATE 语句用于更新 accounts 表中的记录,COMMIT 语句用于提交事务。如果其中一个 UPDATE 语句失败,可以使用 ROLLBACK 语句来撤消整个事务:

BEGIN;  -- 开始事务

UPDATE accounts SET balance = balance - 1000 WHERE id = 1;
UPDATE accounts SET balance = balance + 1000 WHERE id = 999; -- 无效的ID

ROLLBACK;  -- 撤消事务
COMMIT;

在上面的示例中,第二个 UPDATE 语句无效,因为没有 ID 为 999 的记录,所以 ROLLBACK 语句用于撤消整个事务

十,WHERE 和HAVING

在 MySQL 中,WHERE 和 HAVING 是用于筛选数据的两个关键字。

WHERE
WHERE 关键字用于在查询中筛选数据,并返回满足指定条件的行。WHERE 关键字可以使用比较运算符(如 =、<、>、<=、>=、<> 等)和逻辑运算符(如 AND、OR、NOT 等)来指定筛选条件。

以下是一个使用 WHERE 关键字的示例:

SELECT customer_name, city
FROM customers
WHERE city = 'New York';

在上面的示例中,WHERE 关键字用于筛选出位于纽约市的顾客,并返回其名称和所在城市。

HAVING
HAVING 关键字用于在 GROUP BY 子句中筛选分组数据。它与 WHERE 关键字类似,但它是在分组后进行筛选的,而不是在查询的所有行上进行筛选的。

以下是一个使用 HAVING 关键字的示例:

SELECT customer_id, COUNT(order_id)
FROM orders
GROUP BY customer_id
HAVING COUNT(order_id) > 2;

在上面的示例中,GROUP BY 关键字用于按顾客 ID 进行分组,并计算每个顾客的订单数量。然后,HAVING 关键字用于筛选出订单数量大于 2 的顾客。请注意,HAVING 关键字只能用于聚合函数(如 COUNT、SUM、AVG、MIN 和 MAX)所返回的数据。

总之,WHERE 和 HAVING 关键字都是用于筛选数据的关键字,但 WHERE 关键字用于筛选行,而 HAVING 关键字用于筛选分组数据。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTTP HTTPS简介

一篇文章带你走进HTTP HTTPS场景复现核心干货HTTP/HTTPS简介&#xff08;简单比较&#xff09;HTTP工作原理HTTPS作用场景复现 最近在对前端的深入学习过程中&#xff0c;接触到了与网络请求相关的内容&#xff0c;于是打算出一个专栏&#xff0c;从HTTP与HTTPS入手&#xff0…

针对航空安全风险分析和飞行技术评估问题的题解

文章目录针对航空安全风险分析和飞行技术评估问题的题解思路文章最下方针对航空安全风险分析和飞行技术评估问题的题解 最新进度在文章最下方卡片&#xff0c;加入获取思路数据代码论文&#xff1a;2023十三届MathorCup交流 (第一时间在CSDN分享&#xff0c;文章底部) 思路 问…

VFP读写t5557卡示例源码

T5557卡是美国Atmel公司生产的多功能非接触式射频卡芯片&#xff0c;属于125KHz的低频卡&#xff0c;在国内有广大的应用市场。该芯片共有330bit(比特)的EPROM(分布为10个区块, 每个区块33bit)。0页的块0是被保留用于设置T5557操作模式的参数配置块。第0页第7块可以作用户数据块…

Excel表格怎么换行?4个方法任你选!

案例&#xff1a;excel表格怎么换行 【作为一名excel新手&#xff0c;我真的要被各种功能整懵了&#xff01;今天又遇到了一个难题&#xff01;excel表格怎么换行呀&#xff1f;各位大神帮帮我&#xff01;】 在excel表格中进行换行操作是一种常见的需求&#xff0c;可以使单…

三分天下、格局初定,AR产业千亿市场谁执牛耳?

文|智能相对论 作者| 青月 【这是聚焦智能车与家的“智能相对论”关于创新硬件赛道的第27篇行业分析。】 早在十一年前&#xff0c;谷歌就推出了第一款AR眼镜Google Glass。 可由于当时1500美元的高昂价格&#xff0c;以及并不令人惊艳的体验&#xff0c;这款产品并未俘获消…

Flink1.14 Standalone独立集群模式安装

一、下载 在Flink 官网下载Flink 1.14&#xff0c;完整的安装包名是&#xff1a;flink-1.14.4-bin-scala_2.11.tgz。 二、master 配置 解压安装包&#xff0c;编辑conf/flink-conf.yaml文件&#xff1a; vim conf/flink-conf.yaml jobmanager.rpc.address: 172.21.0.XX tas…

N9010B频谱分析仪

N9010B N9010B EXA 信号分析仪&#xff0c;多点触控&#xff0c;10 Hz 至 44 GHz EXA X系列信号分析仪&#xff0c;多点触摸N9010B 本配置指南将帮助您确定哪些性能选项、测量应用程序、附件和服务将包含在新的多点触摸EXA中&#xff0c;或作为现有EXA的升级添加。主要特性和…

SSM实战-外卖项目-06-用户地址簿功能、菜品展示、购物车、下单

文章目录外卖项目-第六天课程内容1. 用户地址簿功能1.1 需求分析1.2 数据模型1.3 导入功能代码1.4 功能测试 &#xff08;其实需求分析里我就自己写了一份代码&#xff0c;而且测试过了&#xff0c;下面再测试了一遍&#xff09;2. 菜品展示2.1 需求分析2.2 前端页面分析2.3 代…

公开下载 | 300+页《服务端开发与面试知识手册》,12.8w字经典架构知识

淘苏&#xff08;花名&#xff09;目前是大淘宝技术的一名开发工程师。从国企跳槽来到互联网&#xff0c;【职业规划】是他被问得最多&#xff0c;也思考得最多的问题。回忆国企的三到五年时间&#xff0c;他完成了最初始的技术和经验的积累。接下来的职业生涯规划里&#xff0…

Linux_红帽8学习笔记分享_3

Linux_红帽8学习笔记分享_3 文章目录Linux_红帽8学习笔记分享_31.Vi编辑器1.1两种模式1.2十种技巧2.用户的家目录2.1 su命令的使用2.2 id命令的使用3. 重定向技术3.1查看文件内容的命令3.1.1 cat命令的使用3.1.2 more命令的使用3.2重定向概念3.2输出重定向符3.3标准追加重定向符…

小鹏开启架构造车,冲击年销300万台入场券

作者 | 张祥威 编辑 | 德新2023上海车展开始前&#xff0c;小鹏汽车发布了新一代技术架构SPEA 2.0扶摇。 扶摇是一次重要转向。基于这一新架构&#xff0c;小鹏的整车综合研发成本可以降低50%&#xff0c;接下来将有10多款新车密集投放。 大众进入电动化时代后&#xff0c…

插件化之APK动态加载

插件化相关概念&#xff1a; 根据组件化与插件化的区别来了解一下概念 组件化和插件化的区别 组件化:是将一个APP分成多个模块&#xff0c;每个模块都是一个组件(module)&#xff0c;开发的过程中我们可以让这些组件相互依赖或者单独调试部分组件&#xff0c;但是最终发布的…

故障注入测试的作用和应用你了解多少?

故障注入是一种测试技术&#xff0c;用于模拟系统或应用程序中的故障。故障注入测试通常被用来评估系统或应用程序的可靠性和鲁棒性&#xff0c;以便确定系统或应用程序是否能够在各种异常情况下正常运行&#xff0c;那故障注入测试的作用和应用你了解多少&#xff1f; 故障注入…

苹果智能眼镜新技术曝光,智能穿戴与苹果Find My技术相结合

知名分析师郭明錤发文表示&#xff0c;苹果正在开发“超透镜”(metalens)技术&#xff0c;预计将于2024年实现量产&#xff0c;用于取代iPad的Face ID Tx的塑胶镜头&#xff0c;并将大量应用于Apple Glasses上。据悉&#xff0c;Apple Glasses(非AR/MR头显)预计最快在2026或202…

国网B接口语音对讲和广播技术探究及与GB28181差别

接口描述 在谈国网B接口的语音广播和语音对讲的时候&#xff0c;大家会觉得&#xff0c;国网B接口是不是和GB28181大同小异&#xff1f;实际上确实信令有差别&#xff0c;但是因为要GB28181设备接入测的对接&#xff0c;再次做国网B接口就简单多了。 语音对讲和广播包括信令接…

小白学Pytorch系列--Torch.optim API Scheduler(4)

小白学Pytorch系列–Torch.optim API Scheduler(4) 方法注释lr_scheduler.LambdaLR将每个参数组的学习率设置为初始lr乘以给定函数。lr_scheduler.MultiplicativeLR将每个参数组的学习率乘以指定函数中给定的因子。lr_scheduler.StepLR每个步长周期衰减每个参数组的学习率。lr_…

RFID技术在智慧图书馆盘点系统中的优势

RFID射频识别及技术&#xff0c;作为一种新兴的非接触式的自动识别技术&#xff0c;其基本原理是电磁理论&#xff0c;因其操作便捷高效&#xff0c;无需人工干预&#xff0c;可在各种恶劣环境下&#xff0c;通过射频信号自动识别目标并获取相关数据&#xff0c;可识别高速运动…

LightGBM论文翻译

0.摘要 Gradient Boosting Decision Tree (GBDT)是一个非常流行的机器学习算法&#xff0c;却只有像XGBoost和pGBRT的一些实现。尽管许多工程上的优化方案已经在这些实现中应用了&#xff0c;但是当特征维度较高和数据量巨大的时候&#xff0c;仍然存在效率和可扩展性的问题。…

家庭智能插座一Homekit智能

传统的灯泡是通过手动打开和关闭开关来工作。有时&#xff0c;它们可以通过声控、触控、红外等方式进行控制&#xff0c;或者带有调光开关&#xff0c;让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块&#xff0c;可与手机、家庭智能助手、或其他智能硬件进行通信&#x…

L2-031 深入虎穴

著名的王牌间谍 007 需要执行一次任务&#xff0c;获取敌方的机密情报。已知情报藏在一个地下迷宫里&#xff0c;迷宫只有一个入口&#xff0c;里面有很多条通路&#xff0c;每条路通向一扇门。每一扇门背后或者是一个房间&#xff0c;或者又有很多条路&#xff0c;同样是每条路…