Maison > base de données > tutoriel mysql > Présentation des instructions SQL avancées de la base de données MySQL

Présentation des instructions SQL avancées de la base de données MySQL

coldplay.xixi
Libérer: 2021-02-19 09:26:24
avant
2178 Les gens l'ont consulté

Présentation des instructions SQL avancées de la base de données MySQL

Recommandations d'apprentissage gratuites : tutoriel mysql(Vidéo )

1. Préparation

1. Installer la base de données MySQL

Script Shell en un seul clic. Déploiement - compilation du code source et installation de MySQL

2 Préparation de l'expérience, configuration de la table de données

mysql -uroot -p
show databases;

create database train_ticket;
use train_ticket;
create table REGION(region varchar(10),site varchar(20));
create table FARE(site varchar(20),money int(10),date varchar(15));

desc REGION;
desc FARE;

insert into REGION values ('south','changsha');
insert into REGION values ('south','nanchang');
insert into REGION values ('north','beijing');
insert into REGION values ('north','tianjin');

insert into FARE values ('changsha',1000,'2021-01-30');
insert into FARE values ('nanchang',700,'2021-01-30');
insert into FARE values ('beijing',1500,'2021-01-30');
insert into FARE values ('tianjin',1200,'2021-01-30');
insert into FARE values ('beijing',2200,'2021-02-05');

select * from REGION;
select * from FARE;
Copier après la connexion

Présentation des instructions SQL avancées de la base de données MySQL
Présentation des instructions SQL avancées de la base de données MySQL

2. Instructions SQL avancées (avancées) MySQL

1 SELECT

affiche toutes les données dans un ou plusieurs champs de la table Syntaxe : SELECT field FROM table name

select region from REGION;
Copier après la connexion

2 DISTINCT

Ne pas afficher les données en double (supprimer la duplication)<.> Syntaxe : SELECT DISTINCT field FROM table name

select distinct region from REGION;
Copier après la connexion

3 WHERE

Requête conditionnelle

Syntaxe : SELECT field FROM Nom de la table WHERE condition

select site from FARE where money > 1000;
select site from FARE where money <br>4, AND, OR<p><strong></strong></p>et (et), ou (ou) <p><strong> Syntaxe : SELECT champ FROM nom de la table WHERE condition 1 ([AND|OR] condition 2)+; </strong></p><pre class="brush:php;toolbar:false">select site from FARE where money > 1000 and (money = 700);

select site,money,date from FARE where money >= 500 and (date <br>5, IN<p><strong></strong></p>Afficher les informations sur la valeur connue<p> <strong> Syntaxe : SELECT field FROM nom de la table WHERE field IN ('value 1', 'value 2',...); </strong></p><pre class="brush:php;toolbar:false">select site,money from FARE where money in (700,1000);
Copier après la connexion

6, BETWEEN

Afficher les données dans deux plages de valeurs

Syntaxe : SELECT field FROM table name WHERE field BETWEEN 'value one' and 'value two';

select * from FARE where money between 500 and 1000;
Copier après la connexion

7 , joker, LIKE

Généralement, les caractères génériques sont utilisés avec LIKE

% : Le signe pour cent représente zéro, un ou plusieurs caractères

_ : Le trait de soulignement représente un seul caractère

LIKE : utilisé pour faire correspondre des modèles pour rechercher des informations

Syntaxe : SELECT field FROM table name WHERE field LIKE 'pattern';
8. ORDER BY

Trier par mot-clé Syntaxe : SELECT field FROM table name [WHERE condition] ORDER BY field [ASC,DESC]

#ASC ; : Trier par ordre croissant, la méthode de tri par défaut

#DESC : Trier par ordre décroissant

select * from FARE where site like 'be%';
select site,money from FARE where site like '%jin_';
Copier après la connexion


Fonction

1. Fonctions mathématiques

select * from FARE order by money desc;
select date,money from FARE order by money desc;
Copier après la connexion

abs(x) 返回 x 的绝对值
rand() 返回 0 到 1 的随机数
mod(x,y) 返回 x 除以 y 以后的余数
power(x,y) 返回 x 的 y 次方
round(x) 返回离 x 最近的整数
round(x,y) 保留 x 的 y 位小数四舍五入后的值
sqrt(x) 返回 x 的平方根
truncate(x,y) 返回数字 x 截断为 y 位小数的值
ceil(x) 返回大于或等于 x 的最小整数
floor(x) 返回小于或等于 x 的最大整数
greatest(x1,x2…) 返回集合中最大的值
least(x1,x2…) 返回集合中最小的值
select abs(-1),rand(),mod(5,3),power(2,3),round (1.579),round(1.734,2);
Copier après la connexion

Présentation des instructions SQL avancées de la base de données MySQL

Présentation des instructions SQL avancées de la base de données MySQL2, Fonction d'agrégation

select avg(money) from FARE;
select count(money) from FARE;
select min(money) from FARE;
select max(money) from FARE;
select sum(money) from FARE;
Copier après la connexion

#count(*)包括所有列的行数,在统计结果时,不好忽略值为null
#count(字段)只包括那一行的列数,在统计结果的时候,会忽略列值为null的值

3、字符串函数

trim() 返回去除指定格式的值
concat(x,y) 将提供的参数 x 和 y 拼接成一个字符串
substr(x,y) 获取从字符串 x 中的第 y 个位置开始的字符串,跟substring()函数作用相同
substr(x,y,z) 获取从字符串 x 中的第 y 个位置开始长度为 z 的字符串
length(x) 返回字符串 x 的长度
replace(x,y,z) 将字符串 z 替代字符串 x 中的字符串 y
upper(x) 将字符串 x 的所有字母变成大写字母
lower(x) 将字符串 x 的所有字母变成小写字母
left(x,y) 返回字符串 x 的前 y 个字符
right(x,y) 返回字符串 x 的后 y 个字符
repeat(x,y) 将字符串 x 重复 y 次
space(x) 返回 x 个空格
strcmp(x,y) 比较 x 和 y,返回的值可以为-1,0,1
reverse(x) 将字符串 x 反转

SELECT TRIM ([ [位置] [要移除的字符串] FROM ] 字符串);

#[位置]:的值可以为 LEADING (起头), TRAILING (结尾), BOTH (起头及结尾)。
#[要移除的字符串]:从字串的起头、结尾,或起头及结尾移除的字符串。缺省时为空格。

select trim(leading 'na' from 'nanchang');
select trim(trailing '--' from 'nanchang--');
select trim(both '--' from '--nanchang--');

select concat(region,site) from REGION where region = 'south';
select concat(region,' ',site) from REGION where region = 'south';

select substr(money,1,2) from FARE;

select length(site) from FARE;

select replace(site,'ji','--') from FARE;

select upper(site) from FARE;

select lower('HAHAHA');

select left(site,2) from FARE;

select right(site,3) from FARE;

select repeat(site,2) from FARE;

select space(2); 

select strcmp(100,200);

select reverse(site) from FARE;
Copier après la connexion

4、| | 连接符

如果sql_mode开启开启了PIPES_AS_CONCAT,"||"视为字符串的连接操作符而非或运算符,和字符串的拼接函数Concat相类似,这和Oracle数据库使用方法一样的

Présentation des instructions SQL avancées de la base de données MySQL

mysql -uroot -p
use train_ticket;

select region || ' ' || site from REGION where region = 'north';
select site || ' ' || money || ' ' || date from FARE;
Copier après la connexion

5、GROUP BY

BY后面的栏位的查询结果进行汇总分组,通常是结合聚合函数一起使用的
GROUP BY 有一个原则,就是 SELECT 后面的所有列中,没有使用聚合函数的列,必须出现在GROUP BY后面。

语法:SELECT 字段1,SUM(字段2) FROM 表名 GROUP BY 字段1;

select site,sum(money) from FARE group by site;
select site,sum(money),date from FARE group by site order by money desc;
select site,count(money),sum(money),date from FARE group by site order by money desc;
Copier après la connexion

6、HAVING

用来过滤由GROUP BY语句返回的记录集,通常与GROUP BY语句联合使用。
HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。如果被SELECT的只有函数栏,那就不需要GROUP BY子句。

语法:SELECT 字段1,SUM(字段2) FROM 表名 GROUP BY 字段1 HAVING(函数条件);

select site,count(money),sum(money),date from FARE group by site having sum(money) >=700;
Copier après la connexion

7、别名

字段别名、表格别名
语法:SELECT “表格別名”.“字段1” [AS] “字段1別名” FROM “表格名” [AS] “表格別名”;

select RE.region  AS reg, count(site) from REGION AS RE group by reg;

select FA.site AS si,sum(money),count(money),date AS da from FARE AS FA group by si;
Copier après la connexion

8、子查询

连接表格,在WHERE 子句或HAVING 子句中插入另一个SQL 语句
语法:SELECT 字段1 FROM 表格1 WHERE 字段2 [比较运算符] (SELECT 字段1 FROM 表格2 WHERE 条件)

可以是符号的运算符
例:=、>、=、

也可以是文字的运算符
例:LIKE、IN、BETWEEN

select A.site,region from REGION AS A where A.site in(select B.site from FARE AS B where money<blockquote><p><strong>相关免费推荐:<a href="https://www.php.cn/sql/" target="_blank">SQL教程</a></strong></p></blockquote>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal