- 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
- Notes d'étude de MySQL 01 [concept de base de données, installation et utilisation de MySQL] [jour01]
- Notes d'étude MySQL 02 [Concepts de base SQL et grammaire générale, opérations CRUD de base de données] [jour01]
Notes d'étude MySQL 04 [opérations de requête de base de données, contraintes de table] [jour01, jour02]
Notes d'étude MySQL 06 [requêtes multi-tables, sous-requêtes, exercices de requêtes multi-tables] [day03]
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
Supprimer les ensembles de résultats en double
Contrainte Constraint_non-vide
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
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 1Solution:
1. Recherchez d'abord le chemin d'installation de la base de données Mysql, comme indiqué ci-dessous:
2. Recherchez le fichier my.ini dans ce dossier, recherchez «default-character-set = utf8» et modifiez uft8 en gbk.
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
- DQL: instruction de requête
- Trier la requête
- Fonction d'agrégation
- Requête de groupe
- Requête de pagination
- contrainte
- Relation entre plusieurs tables
- Paradigme
- 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.
- count: compte le nombre
- Sélectionnez généralement des colonnes non vides: clé primaire
- compter(*)
- max: calculer la valeur maximale
- min: calculer la valeur minimale
- sum: calculer la somme
- 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:
- Syntaxe: champ group by group;
- Remarque:
- Champs à interroger après regroupement: champs de regroupement, fonctions d'agrégation
- La différence entre où et avoir?
- 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é
- 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
- Syntaxe: index commençant par limit, le nombre de requêtes par page;
- Formule: index de départ = (numéro de page actuel-1) * nombre d'éléments affichés sur chaque page
- 3 enregistrements par page
- SELECT * FROM étudiant LIMIT 0,3; - Page 1: Vérifier à partir de 0, vérifier 3 enregistrements
- SELECT * FROM étudiant LIMIT 3,3; - Page 2: Vérifier à partir de 3, vérifier 3 enregistrements
- SÉLECTIONNER * À PARTIR DE LA LIMITE d'élèves 6,3; - Page 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:
- Contrainte de clé primaire: clé primaire
- Contrainte non vide: non nulle
- La seule contrainte: unique
- 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 table2. 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 automatique2. 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!