Maison > base de données > tutoriel mysql > le corps du texte

Résumé des bases de l'apprentissage DDL, DML et DQL pour MySQL

WBOY
Libérer: 2022-05-19 21:11:09
avant
2366 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur mysql, qui présente principalement du contenu connexe sur DDL, DML et DQL, y compris les tables de données d'exploitation, les bases de données d'exploitation, les données de requêtes simples, etc. Jetons un coup d'œil à le contenu ci-dessous, j'espère qu'il sera utile à tout le monde.

Résumé des bases de l'apprentissage DDL, DML et DQL pour MySQL

Apprentissage recommandé : Tutoriel vidéo MySQL

Concepts liés aux bases de données

Qu'est-ce qu'une base de données

Un entrepôt pour sauvegarder les données. Il s'incarne dans notre ordinateur sous la forme d'un logiciel ou d'un système de fichiers. Enregistrez ensuite les données dans ces fichiers spéciaux, et vous devez utiliser un langage fixe (langage/instruction SQL) pour exploiter les données dans le fichier.

  • Un entrepôt qui stocke les données. Les données sont stockées de manière organisée
  • Nom anglais : DataBase, abrégé en DB
Avantages de la base de données

La base de données stocke les données dans des fichiers selon un format spécifique, et de grandes quantités de données peuvent être facilement traitées via des instructions SQL

, , , fonctionnement, la base de données est une solution efficace pour gérer de grandes quantités d'informations.

Bases de données communes

Systèmes de gestion de bases de données relationnelles communes

Lorsque nous développons des applications, toutes les données doivent en fin de compte être sauvegardées aux logiciels professionnels. Ces logiciels professionnels de sauvegarde de données sont appelés bases de données. Lorsque nous apprenons les bases de données, nous n'apprenons pas à développer un logiciel de base de données. Ce que nous apprenons, c'est comment utiliser les bases de données et les opérations des enregistrements de données dans la base de données. Le logiciel de base de données est développé par des sociétés tierces.

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL

  • Oracle : Il s'agit d'une grande base de données relationnelle d'Oracle Corporation. Le système a une bonne portabilité, une utilisation facile et des fonctions puissantes, et convient à divers environnements de grande, moyenne, petite et micro-informatique. Il est efficace, sûr et fiable. Mais cela est payant.
  • MYSQL : Il a été développé au début par une société suédoise appelée MySQL AB. Il a ensuite été acquis par Sun Company puis par Oracle. En raison de sa petite taille, de sa vitesse rapide et de son faible coût total de possession, en particulier des caractéristiques de l'open source, MySQL est généralement choisi comme base de données de sites Web pour le développement de sites Web de petite et moyenne taille. La version MySQL6.x commence également à se charger.
  • DB2 : le produit de base de données d'IBM, payant. Souvent utilisé dans les systèmes bancaires
  • SQLServer : Une base de données de taille moyenne facturée par Microsoft. C#, .net et d'autres langages sont souvent utilisés.
  • SyBase : depuis Sybase. a disparu de la scène de l’histoire. Fournit un outil de modélisation de données très professionnel, PowerDesigner.

Bases de données couramment utilisées : Bases de données principalement utilisées pour les applications de développement Java : MySQL (5.6), Oracle, DB2. (Raison : open source, gratuit et suffisamment puissant pour faire face au développement Web)

Base de données relationnelle

Lors du développement de logiciels, il doit y avoir certaines différences entre les données dans la relation logicielle existe. Par exemple, dans la relation entre les produits et les clients, un client peut acheter plusieurs produits et un produit peut être acheté par plusieurs clients.

Vous devez enregistrer ces données dans la base de données et maintenir la relation entre les données. Dans ce cas, vous pouvez utiliser directement les bases de données mentionnées ci-dessus. Toutes les bases de données ci-dessus sont des bases de données relationnelles.

Données relationnelles : lors de la conception d'une base de données, celle-ci doit être décrite à l'aide d'un diagramme de relation entre les entités E-R.

E-R sont les premières lettres des deux mots, E signifie

entité et R signifie Entity relation. Relationship

    1. Il doit y avoir une certaine relation entre les données du tableau de données, comme la relation entre les produits et les clients. Un client peut acheter plusieurs produits, et un produit peut être acheté par plusieurs clients.
  • 2. Lors de la conception d'une base de données, vous pouvez utiliser le diagramme de relation d'entité ER pour décrire la relation entre les tables. E représente l'entité et R représente la relation
  • 3. Un objet dans un programme Java. Par exemple, les produits, les clients, etc. sont tous des objets d'entité. Il est représenté par un rectangle (rectangle) dans le diagramme E-R.
  • 4. Attributs : les objets d'entité contiennent des attributs, tels que le nom du produit, le prix, etc. Pour les attributs d'une entité, nous appelons les données de cette entité, qui sont représentées par une ellipse dans le diagramme E-R.
  • 5. Relation : entité et relation entre entités : représentée par un losange dans le diagramme E-R.

Exigences : Utiliser des diagrammes E-R pour décrire la relation entre les clients, les produits et les commandes
Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL

Base de données MySQL

Introduction à SQL

Qu'est-ce que SQL

Structured Query LanguageLangage de requête structuré. Les instructions SQL ne dépendent d'aucune plateforme et sont communes à toutes les bases de données. Après avoir appris à utiliser les instructions SQL, vous pouvez les utiliser dans n'importe quelle base de données, mais elles ont toutes un contenu unique. Les instructions SQL sont puissantes, faciles à apprendre et à utiliser.

Fonctionnalités SQL

L'instruction SQL est un langage non procédural et un résultat spécifique apparaîtra après l'exécution de chaque SQL. Il n'y a aucun impact entre plusieurs instructions

Fonction SQL

Les instructions SQL sont principalement utilisées pour faire fonctionner des bases de données, des tables de données, tables de données Enregistrement de données

Syntaxe générale SQL

  1. Les instructions SQL peuvent être écrites sur une seule ou plusieurs lignes et se terminer par un point-virgule.
  2. Utilisez les espaces et l'indentation pour rendre les déclarations plus lisibles.
  3. Les instructions SQL de la base de données MySQL ne sont pas sensibles à la casse et les mots-clés sont généralement en majuscules lors du développement
  4. Trois types de commentaires
    - commentaires sur une seule ligne : -- 注释内容
    - commentaires multi-lignes : /* 注释内容 */
    - # 注释内容 : (commentaire sur une seule ligne spécifique à MySQL)

Classification SQL
SQL est utilisé pour accéder aux bases de données relationnelles Le langage a quatre fonctions : définir, manipuler, contrôler et interroger des bases de données relationnelles. Par conséquent, nous classons SQL en fonction de quatre fonctions. Le

  1. Le langage de définition de données DDL (Data Definition Language)
    est utilisé pour définir des objets de base de données : bases de données, tables, colonnes, etc. Mots-clés : créer un drop alter truncate (effacer les enregistrements de données) afficher etc.

  2. Le langage de manipulation de données DML (Data Manipulation Language) ★★★

    est mis à jour dans la table de la base de données , Ajouter et supprimer des enregistrements. Tels que la mise à jour (mise à jour), l'insertion (insertion), la suppression (suppression) n'incluent pas le langage de requête de données

  3. DQL (Data Query Language) ★★★★★
    données requête d'enregistrements de table. Sélection de mots-clés.

  4. DCL (Data Control Language) Data Control Language (comprendre)

    est une instruction utilisée pour définir ou modifier les autorisations des utilisateurs ou des rôles de la base de données. Tels que accorder (définir des autorisations), révoquer (révoquer des autorisations), commencer une transaction, etc. Ceci est relativement rarement utilisé.

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL

Structure du répertoire MySQL

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL

Connexion à la base de données MySQL

MySQL est une base de données qui nécessite un nom de compte et un mot de passe pour vous connecter. Vous pouvez l'utiliser après vous être connecté. Il fournit un compte root par défaut. Vous pouvez vous connecter en utilisant le mot de passe défini lors de l'installation.

Démarrez le service de base de données  : saisissez la commande net start MySQL dans la fenêtre DOS ouverte
Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
Fermez le service de base de données : Ouvrez la commande Entrez la net stop MySQL dans la fenêtre dos
Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
pour vous connecter à MySQL  : Format de connexion 1 : mysql -u用户名 -p密码

mysql -uroot -p123456
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
Format de connexion 2 : mysql[-h连接主机ip地址 -P端口号3306] -u 用户名 -p 密码

mysql -h 127.0.0.1 -P 3306 -u root -p 123456
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
Si vous vous connectez à la machine locale : vous pouvez omettre -h -P l'adresse IP et le port de l'hôte. De cette façon, vous pouvez vous connecter à la base de données mysql

Quitter  : exitCommande
Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
Afficher la base de données : show databases;
Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL

SQL_DDL_Operate base de données

DDL_Créer et afficher la base de données

Créer une base de données :

1 . Créez directement la base de données

create database 数据库名;
Copier après la connexion

2. Déterminez si la base de données existe et créez-la (si elle n'existe pas, créez-la)

create database if not exists 数据库名;
Copier après la connexion

Créez la base de données et spécifiez le jeu de caractères ( table d'encodage)

create database 数据库名 character set 字符集;
Copier après la connexion

Explication : Le jeu de caractères est le nom de la table d'encodage dans MySQL, utf8

Voir la base de données :

1. Afficher toutes les bases de données

show databases;
Copier après la connexion

2. Afficher les informations de définition d'une base de données

show create database 数据库名;
Copier après la connexion

3 Afficher la base de données actuellement utilisée

select database();
Copier après la connexion

Utiliser et changer. bases de données :

use 数据库名;
Copier après la connexion

DDL_Modifier et supprimer la base de données

Modifier la base de données :

Modifier le jeu de caractères de la base de données

-- alter 表示修改alter database 数据库名 default character set 新字符集;
Copier après la connexion

Remarque : Si vous modifiez la base de données La table d'encodage spécifiée est utf8, n'oubliez pas de ne pas écrire utf-8

Java中的常用编码对应mysql数据库中的编码

Java MySQL
UTF-8 utf8
GBK gbk
GB2312 gb2312
ISO-8859-1 latin1

删除数据库:

1.直接删除

-- drop 删除数据库drop database 数据库名;
Copier après la connexion

2.删除数据库时判断是否存在(如果存在,则删除)

drop database if exists 数据库名;
Copier après la connexion

SQL_DDL_操作数据表

DDL_数据库约束

约束的概念:

  • 约束是作用于表中列上的规则,用于限制加入表的数据

  • 约束的存在保证了数据库中数据的正确性、有效性和完整性

约束的分类:

约束名称 关键字 描述
非空约束 NOT NULL 保证列中所有数据不能有null空值
唯一约束 UNIQUE 保证列中所有数据各不相同
主键约束 PRIMARY KEY 主键是一行数据的唯一标识,要求非空且唯一
检查约束 CHECK 保证列中的值满足某一条件
默认约束 DEFAULT 保存数据时,未指定值则采用默认值
外键约束 FOREIGN KEY 外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性

MySQL5.7不支持检查约束,但写入语句不会报错,MySQL8.0版本支持检查约束

非空约束

非空约束用于保证列中所有数据不能有NULL值

1.建表时添加约束

-- 创建表时添加非空约束create table 表名(
    列名 数据类型 not null,
    ...);
Copier après la connexion

2.建完表之后添加约束

-- 建完表之后添加约束alter table 表名 modify 字段名 数据类型 not null;
Copier après la connexion

3.删除约束

alter table 表名 modify 字段名 数据类型;
Copier après la connexion

唯一约束

唯一约束用于保证列中所有数据各不相同

1.创建表时添加唯一约束

-- 方式1create table 表名(
    字段名 数据类型 UNIQUE,
    ...);-- 方式2create table 表名(
    字段名 数据类型,
    ...
    [CONSTRAINT] [约束名称] UNIQUE(列名));
Copier après la connexion

2.建完表之后添加唯一约束

-- 建完表后添加唯一约束alter table 表名 modify 字段名 数据类型 UNIQUE;
Copier après la connexion

3.删除唯一约束

alter table 表名 drop index 字段名;
Copier après la connexion

主键约束

  • 主键是一行数据的唯一标识,要求非空且唯一
  • 一张表只能有一个主键

1.创建表时添加主键约束

create table 表名(
    字段名 数据类型 PRIMARY KEY [AUTO_INCREMENT],
    -- [AUTO_INCREMENT] 当不指定值时自动增长
    ...);create table 表名(
    列名 数据类型,
    [CONSTRAINT] [约束名称] PRIMARY KEY(列名))
Copier après la connexion

2.建完表之后添加主键约束

alter table 表名 add PRIMARY KEY(字段名);
Copier après la connexion

3.删除主键约束

alter table 表名 drop PRIMARY KEY;
Copier après la connexion

默认约束

保存数据时,未指定值则采用默认值

1.创建表时添加默认约束

create table 表名(
    字段名 数据类型 default 默认值,
    ...);
Copier après la connexion

2.建完表后添加默认约束

alter table 表名 alter 列名 set DEFAULT 默认值;
Copier après la connexion

3.删除约束

alter table 表名 alter 列名 drop DEFAULT;
Copier après la connexion

DDL_创建和查看和表

前提 :创建数据库db1并使用这个数据库

-- 创建数据库create database db1;-- 使用数据库use db1;
Copier après la connexion

创建表:

create table 表名(
    字段名1 字段类型 约束条件,
    字段名2 字段类型 约束条件,
    ...
    字段名n 字段类型 约束条件);-- 注意:最后一个字段不加逗号
Copier après la connexion

创建一个表结构和其他表结构相同的表

create table 表名 like 其他表名;
Copier après la connexion

MySQL中常用的数据类型
Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
案列需求:

设计一张学生表,要求如下:

  • 学号,要求唯一主键,自增
  • 姓名,不能为空,且唯一
  • 性别,只有男和女,默认值为null
  • 班级,字符串类型
  • 入学时间,取值为年、月、日
  • 数学成绩,double类型,默认为60分
  • 英语成绩,double类型,没有默认值
create table students(
    id int primary key auto_increment,
    name varchar(10) not null unique,
    sex enum('男','女') default null,
    class varchar(10),
    starttime date,
    math int default 60,
    english int);
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
查看表:

1.查看某个数据库中所有的表

show tables;
Copier après la connexion

2.查看表结构

desc 表名;
Copier après la connexion

3.查看创建表的SQL语句

show create table 表名;-- 根据该语句查看上面案列的建表sql语句show create table students;
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL

DDL_删除表和修改表的结构

删除表:

1.直接删除

drop table 表名;
Copier après la connexion

2.删除表时判断表是否存在(如果存在,则删除)

drop table if exists 表名;
Copier après la connexion

修改表:

1.修改表名

alter table 旧表名 rename to 新表名;
Copier après la connexion

2.向表中添加一个字段(一列)

alter table 表名 add 字段名 数据类型;
Copier après la connexion

3.修改表中字段数据类型

alter table 表名 modify 字段名 新的数据类型;
Copier après la connexion

4.修改表中字段名(列名)和数据类型

alter table 表名 change 字段名 新的字段名 新的数据类型;
Copier après la connexion

5.删除表中字段(列)

alter table 表名 drop 字段名;
Copier après la connexion

SQL_DML_操作数据库

DML_插入表数据

1.插入全部字段

-- 全部字段写出来insert into 表名(字段1,字段2,...) values(值1,值2,...);
-- 插入全部不写字段名insert into 表名 values(值1,值2,...);
-- 给案例中的表插入数据insert into students(id,name,sex,class,starttime,math,english) values(1,'张三','男','高三1班','2022-03-02',80,69);
insert into students values(2,'李四','女','高三2班','2022-03-01',70,80);
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
2.插入部分数据

-- 插入姓名,班级,入学时间,英语成绩-- id默认增长,性别默认null,数学默认60
insert into students(name,class,starttime,english) values('王五','高三3班','2022-03-02',78);
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
说明:插入部分数据的时候,要求列名一定书写出来。

3.批量插入数据

insert into 表名 values(字段值1, 字段值2...),(字段值1, 字段值2...),(字段值1, 字段值2...);
Copier après la connexion

没有添加数据的字段会使用NULL

注意:

  • 值与列一一对应。有多少个列,就需要写多少个值。如果某一个列没有值,可以使用null,表示插入空。

  • 值的数据类型,与列被定义的数据类型要相匹配,并且值的长度,不能够超过定义的列的长度。

  • 字符串:插入字符类型的数据,建议写英文单引号括起来。在mysql中,使用单引号表示字符串

  • date 时间类型的数据也得使用英文单引号括起来: 如yyyy-MM-dd

DML_更新表数据

1.不带条件修改数据

update 表名 set 字段名=新的值,字段名=新的值,...;
-- 注意:不带条件的修改是将数据表中的整列都做修改
-- 修改students表中math的值为90update students set math=90;
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
2.带条件修改数据

update 表名 set 字段名=新的值,字段名=新的值,... where 条件;
-- 修改students表中王五的性别为男,数学成绩设置为70update students set sex='男',math=70 where name='王五';
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
3.关键字说明

UPDATE: 表示修改记录 
SET: 要改哪个字段WHERE: 设置条件
Copier après la connexion

4.注意

  • 不带条件的更新数据库记录:UPDATE 表名 SET 字段名=新的值;是将整个表中修改的列修改
  • 带条件:UPDATE 表名 SET 字段名=新的值 WHERE 条件

DML_删除表记录

1.不带条件删除

DELETE -- 删除记录DELETE FROM 表名;表还在,可以操作,只是删除数据。
Copier après la connexion

2.带条件删除

DELETE FROM 表名 WHERE 条件;-- 删除学生表中的王五的信息DELETE FROM students WHERE name='王五';
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
3.truncate删除表记录(属于DDL)

truncate table 表名;
Copier après la connexion

4.truncate和delete区别

  • delete是将表中的数据一条一条删除
  • truncate是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样

SQL_DQL_ 简单查询数据

准备一张学生表,在这张表上进行查询操作
Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL

DQL_基础查询

1.查询所有数据

select * from 表名;
-- 查询学生表中所有的数据select * from students;
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
2.查询指定列的数据

select 字段名1,字段名2,... from 表名;
-- 查询姓名和班级这两个字段select name,class from students;
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
3.查询到的字段设置别名

select 字段名1 as 别名1,字段名2 as 别名2 from 表名;
-- 查询students表中的字段并设置别名select id as 学号,name as 姓名,sex as 性别,class as 班级 , starttime as 入学时间 from students;
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
4.查询到的数据去重

-- DISTINCT  去重复-- 查询班级字段结果不出现重复的select DISTINCT class from students;
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL

DQL_条件查询

1.条件查询语法

select 字段名1,字段名2,... where 条件列表;
Copier après la connexion

2.条件运算符

符号 功能
> 大于
小于
>= 大于等于
小于等于
= 等于
或!= 不等于
BETWEEN…AND… 在某个范围内(都包括)
IN(…) 多选一
LIKE 模糊查询,_单个任意字符,%多个任意字符
IS NULL 为空
IS NOT NULL 不为空
AND 或 && 与,并且
OR 或 || 或,或者
NOT 或 ! 非,不是

3.查询数学成绩大于80并且性别为男的学生

-- 两个条件同时满足select * from students where math > 80 and sex='男';
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
4.查询英语成绩在60-80之间的学生

-- BETWEEN 值1 AND 值2 -- 表示从值1到值2范围,包头又包尾
select * from students where english between 60 and 80;
select * from students where english>=60 && english<p><img src="https://img.php.cn/upload/article/000/000/067/01283e47128a89592860b85cda10b160-24.png" alt="Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL"><br><strong>5.查询学号为1或者2或者3的学生</strong></p><pre class="brush:php;toolbar:false">-- in里面的每个数据都会作为一次条件,只要满足条件的就会显示select * from students where id in (1,2,3);
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL

DQL_模糊查询

LIKE:表示模糊查询

select * from 表名 where 字段名 like '通配字符';
Copier après la connexion

MySQL通配符有两个:

  • %:表示0个或多个字符(任意字符)
  • _:表示一个字符

1.查找名字中以开头的学生

-- '孙%'表示孙后面有任意个字符select * from students where name like '孙%';
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
2.查找名字中以开头的两个字的学习

-- '孙_'表示孙后面只能有一个字符select * from students where name like '孙_';
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL

DQL_查询排序

通过ORDER BY子句,可以将查询出的结果进行排序(排序只是显示方式,不会影响数据库中数据的顺序)

-- ASC:升序排序(默认)-- DESC:降序排序select 字段 from 表名 order by 排序字段 [ASC|DESC];
Copier après la connexion

1.单列排序

-- 查询学生的数学成绩按照升序排序select * from students order by math ASC;
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
2.组合排序

-- 查询数学成绩升序的基础上,英语成绩降序-- 组合排序就是先按第一个字段进行排序,如果第一个字段相同,才按第二个字段进行排序,依次类推。
select * from students order by math ASC,english DESC;
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL

DQL_ 聚合函数

之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个结果值;另外聚合函数会忽略空值,对于null不作为统计。

1.五个聚合函数

函数名 功能
count(列名) 统计数量(一般选用不为null的列)
max(列名) 最大值
min(列名) 最小值
sum(列名) 求和
avg(列名) 平均值

2.聚合函数语法

select 聚合函数名(列名) from 表名;
Copier après la connexion

注意:null 值不参与所有聚合函数运算

3.查询学生总数

select count(id) from students;-- 通常使用select count(*) from students;
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
4.查询最高分和最低分

-- 查询数学最高分和英语最低分select max(math),min(english) from students;
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
5.求和求平均值

-- 求该表数学总分和平均值select sum(math),avg(math) from students;
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
6.ifnull()函数

-- ifnull(列名,默认值)函数表示判断该列是否为空值,如果为null,返回默认值,如果不为空,返回实际值ifnull(math,60); 
-- 如果数学成绩为null时,返回60,如果不为null,就返回实际值
Copier après la connexion

DQL_分组查询

分组: 按照某一列或者某几列。把相同的数据,进行合并输出。

1.注意

  • 按照某一列进行分组,目的为了统计使用。
  • 聚合函数:分组之后进行计算
  • 通常select后面的内容是被分组的列,以及聚合函数
  • sql语句中的where后面不允许添加聚合函数
  • 可以使用having条件,表示分组之后的条件,在having后面可以书写聚合函数

2.查询各个班级的数学成绩总和

-- 查询每个班的数学成绩总和select class,sum(math) from students group by class;
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
3.having用法

having必须和group by 一起使用,having和where的用法一模一样,where怎么使用having就怎么使用,where不能使用的,having也可以使用,比如说where后面不可以使用聚合函数,但是在having后面是可以使用聚合函数的。

-- 查询每个班数学总成绩大于300分的班级并显示总成绩
select class,sum(math) from students group by class having sum(math)>300;
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
4.where和having的区别

  • having 通常与group by 分组结合使用。 where 和分组无关。

  • having 可以书写聚合函数 (聚合函数出现的位置: having 之后),例如having中的 聚合函数(count,sum,avg,max,min),是不可以出现where条件中。

  • where 是在分组之前进行过滤的,having 是在分组之后进行过滤的。

DQL_分页查询

1.应用和概念

比如我们登录京东,淘宝,返回的商品信息可能有几万条,不是一次全部显示出来。是一页显示固定的条数。假设我们一每页显示5条记录的方式来分页。
Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL

-- 起始索引:从0开始,索引是0表示数据表第一行数据select 字段列表 from 表名 limit 起始索引,查询条目数;
Copier après la connexion

计算公式:起始索引=(当前页码-1)* 每页显示的条数

注意:

  • 分页查询limit是MySQL数据库的方言
  • Oracle分页查询使用rownumber
  • SQLServer分页查询使用top

2.分页查询

<span style="font-family: " microsoft yahei sans gb helvetica neue tahoma arial sans-serif>-- 查询学生表中数据,每四条数据为一页<br>select * from students limit 0,4;<br>select * from students limit 4,4;<br>select * from students limit 8,4;<br>select * from students limit 12,4;<br>...<br>-- 注意:最后一行不够查询条目数,有多少就显示多少</span><br>
Copier après la connexion

3.返回前几条或者中间某几行数据

-- 2表示分页查询的索引,对应数据表是第3行数据,4表示每页显示4条数据
-- 查询从第三行数据开始查询之后的四条数据
select * from students limit 2,4;
Copier après la connexion

Résumé des bases de lapprentissage DDL, DML et DQL pour MySQL
4.SQL执行顺序

SELECT 字段名(5) FROM 表名(1) WHERE 条件(2) GROUP BY 分组列名(3) HAVING 条件(4) ORDER BY 排序列名(6) LIMIT 跳过行数, 返回行数(7);
执行顺序:1234567
Copier après la connexion

顺序:1234567

推荐学习:mysql视频教程

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!