Notes d'étude MySQL 04 [opérations de requête de base de données, contenu d'aujourd'hui, contraintes de table]

  • Programmeur MySQL Document-Dark Horse (Tencent Weiyun): https://share.weiyun.com/RaCdIwas
  • 1-MySQL foundation.pdf, 2-MySQL contraintes and design.pdf, 3-MySQL multi-table query and transaction operation.pdf
  1. Notes d'étude de MySQL 01 [concept de base de données, installation et utilisation de MySQL] [jour01]
  2. Notes d'étude MySQL 02 [Concepts de base SQL et grammaire générale, opérations CRUD de base de données] [jour01]
  3. Notes d'étude MySQL 03 [opérations CRUD des tables de base de données, opérations de base enregistrées dans les tables de base de données, outil d'interface graphique côté client SQLyog] [day01]

  4. Notes d'étude MySQL 04 [opérations de requête de base de données, contraintes de table] [jour01, jour02]

  5. Notes d'étude MySQL 05 [fonctionnement multi-tables, trois paradigmes, sauvegarde et restauration de base de données] [day02]

  6. Notes d'étude MySQL 06 [requêtes multi-tables, sous-requêtes, exercices de requêtes multi-tables] [day03]

  7. Notes d'étude MySQL 07 [transaction, gestion des utilisateurs et gestion des autorités] [day03]

table des matières

Erreur de fonctionnement du terminal de base de données

07 Opération de requête de base de données

Requête DQL_Basic

Supprimer les ensembles de résultats en double

Calculer la somme des scores

Alias

Requête DQL_condition

DQL_Basic query_Fuzzy query

Contenu d'aujourd'hui

Requête DQL_sort

Fonction DQL_aggregate

Requête DQL_Group

Requête DQL_Paging

08 Contraintes de table

Constraints_Overview

Contrainte Constraint_non-vide

Contrainte_Contrainte unique

Contrainte de clé Constraint_primary

Contrainte_Contrainte de clé primaire_Croissance automatique

Contraintes_Contraintes de clé étrangère

Contraintes de clé étrangère - exemples de défauts

Concepts liés aux contraintes de clé étrangère

Constraint_Foreign Key Constraint_Cascade Operation

Mise à jour en cascade

Suppression en cascade


Erreur de fonctionnement du terminal de base de données

La commande qui a signalé l'erreur: ERREUR 1366 (HY000): valeur de chaîne incorrecte: '\ xC3 \ xFB \ xD7 \ xD6' pour la colonne'n

Solution (lien vers le texte d'origine): https://blog.csdn.net/u013317172/article/details/82778785

Beaucoup de gens obtiendront cette erreur lors de l'insertion de données chinoises dans la table après l'installation de la base de données Mysql.
ERREUR 1366 (HY000): valeur de chaîne incorrecte: '\ xD5 \ xC5 \ xD0 \ xA1 \ xC3 \ xF7' pour la colonne 'NOM' à la ligne 1
Insérez la description de l'image ici

Solution:

1. Recherchez d'abord le chemin d'installation de la base de données Mysql, comme indiqué ci-dessous:

Insérez la description de l'image ici

2. Recherchez le fichier my.ini dans ce dossier, recherchez «default-character-set = utf8» et modifiez uft8 en gbk.

Insérez la description de l'image ici

Connectez-vous à nouveau à la base de données mysql pour ajouter des données chinoises.

07 Opération de requête de base de données

Requête DQL_Basic

1. Requête de plusieurs champs

  • sélectionner le nom du champ 1, le nom du champ 2 ... à partir du nom de la table;
  • Remarque: Si vous interrogez tous les champs, vous pouvez utiliser * pour remplacer la liste de champs.

2. Supprimez la duplication:

  • distinct

3. Colonne calculée

  • En règle générale, vous pouvez utiliser les quatre calculs arithmétiques pour calculer une série de valeurs (généralement uniquement des calculs numériques).
  • ifnull (expression1, expression2): le résultat du calcul de la participation nulle est nul.
    • Expression 1: quel champ doit être jugé s'il est nul
    • Si le champ est nul, la valeur de remplacement.

4. Créez un alias:

  • as: comme peut être omis.
CREATE TABLE student (
  id INT,
  -- 编号
  NAME VARCHAR (20),
  -- 姓名
  age INT,
  -- 年龄
  sex VARCHAR (5),
  -- 性别
  address VARCHAR (100),
  -- 地址
  math INT,
  -- 数学
  english INT-- 英语
) ;

INSERT INTO student(id,NAME,age,sex,address,math,english) VALUES 
(1,'马云',55,'男','杭州',66,78),
(2,'马化腾',45,'女','深圳',98,87),
(3,'马景涛',55,'男','香港',56,77),
(4,'柳岩',20,'女','湖南',76,65),
(5,'柳青',20,'男','湖南',86,NULL),
(6,'刘德华',57,'男','香港',99,99),
(7,'马德',22,'女','香港',99,99),
(8,'德玛西亚',18,'男','南京',56,65);

SELECT * FROM student;

   

Supprimer les ensembles de résultats en double

Calculer la somme des scores

Alias

Requête DQL_condition

1. clause where suivie de conditions

2. Opérateur

  • > 、 <、 <= 、> = 、 = 、 <>
  • ENTRE ET  
  • IN (collection) 
  • LIKE: requête floue
    • Espace réservé:
      • _: n'importe quel caractère unique
      • %: plusieurs caractères arbitraires
  • EST NULL  
  • et 或 &&
  • ou 或 || 
  • pas ou!
-- 查询年龄大于20岁
SELECT 
  * 
FROM
  student 
WHERE age > 20 ;
SELECT * FROM student WHERE age >= 20;

-- 查询年龄等于20岁
SELECT * FROM student WHERE age = 20;

-- 查询年龄不等于20岁
SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE age <> 20;

-- 查询年龄大于等于20 小于等于30
SELECT * FROM student WHERE age >= 20 &&  age <=30;
SELECT * FROM student WHERE age >= 20 AND  age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30; -- 闭区间[20, 30]

-- 查询年龄22岁,18岁,25岁的信息
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
SELECT * FROM student WHERE age IN (22,18,25);

-- 查询英语成绩为null
SELECT * FROM student WHERE english = NULL; -- 错误!null值不能使用 = (!=) 判断

SELECT * FROM student WHERE english IS NULL;

-- 查询英语成绩不为null
SELECT * FROM student WHERE english  IS NOT NULL;

DQL_Basic query_Fuzzy query

LIKE: requête floue

  • Espace réservé:
    • _: n'importe quel caractère unique
    • %: plusieurs caractères arbitraires
-- 查询姓马的有哪些? like
SELECT 
  * 
FROM
  student 
WHERE NAME LIKE '马%' ;

-- 查询姓名第二个字是化的人
SELECT * FROM student WHERE NAME LIKE "_化%";

-- 查询姓名是3个字的人
SELECT * FROM student WHERE NAME LIKE '___';

-- 查询姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE '%德%';

Contenu d'aujourd'hui

  1. DQL: instruction de requête
    1. Trier la requête
    2. Fonction d'agrégation
    3. Requête de groupe
    4. Requête de pagination
  2. contrainte
  3. Relation entre plusieurs tables
  4. Paradigme
  5. Sauvegarde et restauration de la base de données

Requête DQL_sort

1. Trier la requête

  • Syntaxe: commande par clause
    • trié par champ 1 méthode de tri 1, champ de tri 2 méthode de tri 2 ...
  • Trier par:
    • ASC: ordre croissant (par défaut).
    • DESC: ordre décroissant.
  • Remarque:
    • S'il existe plusieurs conditions de tri, la deuxième condition sera jugée lorsque la valeur de condition du côté actuel est la même.

Fonction DQL_aggregate

2. Fonction d'agrégation: prenez une colonne de données dans son ensemble et effectuez des calculs verticaux.

  1. count: compte le nombre
    1. Sélectionnez généralement des colonnes non vides: clé primaire
    2. compter(*)
  2. max: calculer la valeur maximale
  3. min: calculer la valeur minimale
  4. sum: calculer la somme
  5. avg: calculer la moyenne

Remarque: le calcul des fonctions d'agrégation exclut les valeurs nulles.

Solution: 1. Sélectionnez les colonnes qui ne contiennent pas de non-vides pour le calcul 2. Fonction IFNULL.

  

Requête DQL_Group

3. Requête de groupe:

  1. Syntaxe: champ group by group;
  2. Remarque:
    1. Champs à interroger après regroupement: champs de regroupement, fonctions d'agrégation
    2. La différence entre où et avoir?
      1. Où est défini avant le regroupement, si les conditions ne sont pas remplies, il ne participera pas au regroupement. Après avoir limité après regroupement, si le résultat n'est pas satisfait, il ne sera pas interrogé
      2. Les fonctions d'agrégation ne peuvent pas être suivies après où, et les fonctions d'agrégation peuvent être jugées.
-- 按照性别分组。分别查询男、女同学的平均分
SELECT sex , AVG(math) FROM student GROUP BY sex;
		
-- 按照性别分组。分别查询男、女同学的平均分,人数
SELECT sex , AVG(math), COUNT(id) FROM student GROUP BY sex;
		
-- 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组
SELECT sex , AVG(math), COUNT(id) FROM student WHERE math > 70 GROUP BY sex;

-- 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
SELECT sex , AVG(math), COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
SELECT sex , AVG(math), COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;

Requête DQL_Paging

4. Requête de pagination

  1. Syntaxe: index commençant par limit, le nombre de requêtes par page;
  2. Formule: index de départ = (numéro de page actuel-1) * nombre d'éléments affichés sur chaque page
    1. 3 enregistrements par page 
    2. SELECT * FROM étudiant LIMIT 0,3; - Page 1: Vérifier à partir de 0, vérifier 3 enregistrements
    3. SELECT * FROM étudiant LIMIT 3,3; - Page 2: Vérifier à partir de 3, vérifier 3 enregistrements
    4. SÉLECTIONNER * À PARTIR DE LA LIMITE d'élèves 6,3; - Page 3:
  3. la limite est un "dialecte" MySQL

08 Contraintes de table

Constraints_Overview

Concept: Limitez les données du tableau pour garantir l'exactitude, la validité et l'exhaustivité des données.    

classification:

  1. Contrainte de clé primaire: clé primaire
  2. Contrainte non vide: non nulle
  3. La seule contrainte: unique
  4. Contrainte de clé étrangère: clé étrangère

Contrainte Constraint_non-vide

Contrainte non vide: non nulle, la valeur ne peut pas être nulle

    1. Lors de la création d'une table, ajoutez la contrainte
        CREATE TABLE stu (
            id INT,
            NAME VARCHAR (20) NOT NULL - le nom n'est pas vide
        );
    2. Après avoir créé la table, ajoutez une contrainte non vide: ALTER TABLE stu MODIFY NAME VARCHAR (20) NON NULL ;

    3. Supprimez la contrainte non vide de nom: ALTER TABLE stu MODIFY NAME VARCHAR (20);

  

Contrainte_Contrainte unique

Contrainte unique: unique, la valeur ne peut pas être répétée.

    1. Lors de la création d'une table, ajoutez une contrainte unique
        CREATE TABLE stu (
            id INT,
            phone_number VARCHAR (20) UNIQUE - une contrainte unique est ajoutée
        );
        * Notez que dans mysql, la valeur d'une colonne limitée par une contrainte unique peut avoir plusieurs valeurs nulles.

    2. Supprimez la contrainte d'unicité: ALTER TABLE stu DROP INDEX phone_number;

    3. Après avoir créé la table, ajoutez une contrainte unique: ALTER TABLE stu MODIFY phone_number VARCHAR (20) UNIQUE;

Contrainte de clé Constraint_primary

Contrainte de clé primaire: clé primaire

    1. Remarque:
        1. Signification: non vide et unique
        2. Une table ne peut avoir qu'un seul champ comme clé primaire
        3. La clé primaire est l'identifiant unique de l'enregistrement dans la table

    2. Lors de la création d'une table, ajoutez une contrainte de clé primaire
        create table stu (
            id int primary key, - ajoutez un
            nom de contrainte de clé primaire varchar (20)
        ) à id ;

    3. Supprimez la clé primaire
        - erreur alter table stu modifiez id int,
        ALTER TABLE stu DROP PRIMARY KEY;

    4. Après avoir créé la table, ajoutez la clé primaire
        ALTER TABLE stu MODIFY id INT PRIMARY KEY;

Contrainte_Contrainte de clé primaire_Croissance automatique

    5. Croissance automatique:
        1. Concept: Si une colonne est de type numérique, utilisez auto_increment pour terminer la croissance automatique

        2. Lors de la création de la table, ajoutez la contrainte de clé primaire et complétez l'auto-croissance de la clé primaire
        create table stu (
            id int primary key auto_increment, - ajoutez le
            nom de contrainte de clé primaire varchar (20)
        ) à id ;

        3. Supprimer la croissance automatique: ALTER TABLE stu MODIFY id INT;

        4. Ajoutez la croissance automatique: ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

Contraintes_Contraintes de clé étrangère

Contraintes de clé étrangère - exemples de défauts

CREATE TABLE emp ( -- 创建employe表
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(30),
	age INT,
	dep_name VARCHAR(30), -- 部门名称
	dep_location VARCHAR(30) -- 部门地址
);

-- 添加数据
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('张三', 20, '研发部', '广州');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('李四', 21, '研发部', '广州');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('王五', 20, '研发部', '广州');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('老王', 20, '销售部', '深圳');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('大王', 22, '销售部', '深圳');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('小王', 18, '销售部', '深圳');

-- 解决方案:分成 2 张表

-- 创建部门表(id,dep_name,dep_location)
-- 一方,主表
CREATE TABLE department(
	id INT PRIMARY KEY AUTO_INCREMENT,
	dep_name VARCHAR(20),
	dep_location VARCHAR(20)
);

-- 创建员工表(id,name,age,dep_id)
-- 多方,从表
CREATE TABLE employee(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20),
	age INT,
	dep_id INT -- 外键对应主表的主键
);

-- 添加 2 个部门
INSERT INTO department VALUES(NULL, '研发部','广州'),(NULL, '销售部', '深圳');
SELECT * FROM department;

-- 添加员工,dep_id 表示员工所在的部门
INSERT INTO employee (NAME, age, dep_id) VALUES ('张三', 20, 1);
INSERT INTO employee (NAME, age, dep_id) VALUES ('李四', 21, 1);
INSERT INTO employee (NAME, age, dep_id) VALUES ('王五', 20, 1);
INSERT INTO employee (NAME, age, dep_id) VALUES ('老王', 20, 2);
INSERT INTO employee (NAME, age, dep_id) VALUES ('大王', 22, 2);
INSERT INTO employee (NAME, age, dep_id) VALUES ('小王', 18, 2);

SELECT * FROM employee;
SELECT * FROM department;

Concepts liés aux contraintes de clé étrangère

* Contraintes de clé étrangère: clé étrangère, laisser la table et la table avoir une relation, de manière à garantir l'exactitude des données.

    1. Lors de la création d'une table, vous pouvez ajouter une clé étrangère
        * Syntaxe:
            create table nom de table (
                ...
                clé
                étrangère contrainte de colonne nom de clé étrangère clé étrangère (nom de colonne de clé étrangère) fait référence au nom de la table principale (nom de colonne de la table principale)
            ) ;

    2. Supprimez la clé étrangère
        ALTER TABLE table name DROP FOREIGN KEY nom de clé étrangère;

    3. Une fois la table créée, ajoutez la clé étrangère
        ALTER TABLE nom de table ADD CONSTRAINT nom de clé étrangère FOREIGN KEY (nom de champ de clé étrangère) REFERENCES nom de table principale (nom de colonne de table principale); // colonne de clé primaire, colonne de contrainte unique

CREATE TABLE employee (
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR (20),
    age INT,
    dep_id INT, - la clé étrangère correspond à la clé primaire de la table primaire
    CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department (id) - clé étrangère contrainte
);

 

Constraint_Foreign Key Constraint_Cascade Operation

4. Opération en cascade
    1. Ajouter une
        syntaxe d' opération en cascade : ALTER TABLE nom de table ADD CONSTRAINT nom de clé étrangère 
                    FOREIGN KEY (nom de champ de clé étrangère) REFERENCES nom de table principale (nom de colonne de table principale) ON UPDATE CASCADE ON DELETE CASCADE;
    2. Classification:
        1 . Mise à jour en cascade: ON UPDATE CASCADE 
        2. Suppression en cascade: ON SUPPRIMER CASCADE 

Mise à jour en cascade

Suppression en cascade

Quel est le début du printemps? Ouvrez vos horizons, ouvrez votre esprit, ouvrez votre sagesse, ouvrez le modèle!

Lichun, qu'est-ce que c'est? Fiez-vous à l'humanité, à la droiture, à la loyauté, à la sincérité et à l'esprit!

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44949135/article/details/113631792
conseillé
Classement