- MySQLドキュメント-DarkHorse Programmer(Tencent Weiyun):https://share.weiyun.com/RaCdIwas
- 1-MySQL Foundation.pdf、2-MySQL制約とdesign.pdf、3-MySQLマルチテーブルクエリとトランザクションoperation.pdf
- MySQL研究ノート01 [データベースの概念、MySQLのインストールと使用] [day01]
- MySQLスタディノート02 [SQLの基本概念と一般的な文法、データベースのCRUD操作] [day01]
MySQLスタディノート03 [データベーステーブルのCRUD操作、データベーステーブルに記録された基本操作、クライアント側のグラフィカルインターフェイスツールSQLyog] [day01]
MySQLスタディノート04 [データベースクエリ操作、テーブル制約] [day01、day02]
MySQLスタディノート05 [マルチテーブル操作、3つのパラダイム、データベースのバックアップと復元] [day02]
MySQLスタディノート06 [マルチテーブルクエリ、サブクエリ、マルチテーブルクエリの演習] [day03]
目次
Constraint_Primary Key Constraint_Auto Growth
Constraints_Foreign Key Constraints
Constraint_Foreign KeyConstraint_Cascade操作
データベース端末操作エラー
エラーを報告したコマンド:ERROR 1366(HY000):文字列値が正しくありません:列 'nの' \ xC3 \ xFB \ xD7 \ xD6 '
解決策(元のテキストへのリンク):https://blog.csdn.net/u013317172/article/details/82778785
Mysqlデータベースをインストールした後、中国語のデータをテーブルに挿入すると、多くの人がこのエラーを受け取ります。
エラー1366(HY000):文字列値が正しくありません:行1の列「NAME」の「\ xD5 \ xC5 \ xD0 \ xA1 \ xC3 \ xF7」解決:
1.まず、以下に示すように、Mysqlデータベースのインストールパスを見つけます。
2.このフォルダーでmy.iniファイルを見つけ、その中の「default-character-set = utf8」を見つけて、uft8をgbkに変更します。
mysqlデータベースに再度ログインして、中国語のデータを追加します。
07データベースクエリ操作
DQL_Basicクエリ
1.複数のフィールドのクエリ
- テーブル名からフィールド名1、フィールド名2 ...を選択します。
- 注:すべてのフィールドを照会する場合は、*を使用してフィールドリストを置き換えることができます。
2.重複を削除します。
- 明確な
3.計算列
- 一般に、4つの算術計算を使用して、一連の値を計算できます(通常は数値計算のみ)。
- ifnull(expression1、expression2):null参加の計算結果はnullです。
- 式1:nullかどうかを判断する必要があるフィールド
- フィールドがnullの場合、置換値。
4.エイリアスを作成します。
- as:asは省略できます。
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;
重複する結果セットを削除する
スコアの合計を計算する
エイリアス
DQL_conditionクエリ
1.where句とそれに続く条件
2.オペレーター
- >、<、<=、> =、=、<>
- 間...そして
- IN(コレクション)
- いいね:ファジークエリ
- プレースホルダー:
- _:任意の1文字
- %:複数の任意の文字
- 無効です
- およびまたは&&
- またはまたは||
- そうではない!
-- 查询年龄大于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_Basicquery_Fuzzyクエリ
いいね:ファジークエリ
- プレースホルダー:
- _:任意の1文字
- %:複数の任意の文字
-- 查询姓马的有哪些? 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 '%德%';
今日のコンテンツ
- DQL:クエリステートメント
- クエリの並べ替え
- 集計関数
- グループクエリ
- ページングクエリ
- 制約
- 複数のテーブル間の関係
- パラダイム
- データベースのバックアップと復元
DQL_sortクエリ
1.クエリの並べ替え
- 構文:orderby句
- 並べ替えフィールド1の並べ替え方法1、並べ替えフィールド2の並べ替え方法2 ..
- 並び替え:
- ASC:昇順(デフォルト)。
- DESC:降順。
- 注意:
- ソート条件が複数ある場合、現在側の条件値が同じであれば、2番目の条件が判断されます。
DQL_aggregate関数
2.集計関数:データの列全体を取得し、垂直方向の計算を実行します。
- カウント:数を数える
- 通常、空でない列を選択します:主キー
- カウント(*)
- max:最大値を計算します
- 最小:最小値を計算します
- 合計:合計を計算します
- 平均:平均を計算する
注:集計関数の計算では、null値は除外されます。
解決策:1。計算用に空でない列を含まない列を選択します。2。IFNULL関数。
DQL_Groupクエリ
3.グループクエリ:
- 構文:group bygroupフィールド。
- 注意:
- グループ化後にクエリされるフィールド:グループ化フィールド、集計関数
- どこと持っているの違いは?
- グループ化の前に定義されている場合、条件が満たされない場合、グループ化に参加しません。グループ化後に制限されているため、結果が満たされない場合はクエリされません
- 集約関数はどこ以降でも追跡できず、集約関数があるかどうかを判断できます。
-- 按照性别分组。分别查询男、女同学的平均分
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;
DQL_Pagingクエリ
4.ページングクエリ
- 構文:limitで始まるインデックス、ページあたりのクエリ数。
- 式:開始インデックス=(現在のページ番号-1)*各ページに表示されるアイテムの数
- 1ページあたり3レコード
- SELECT * FROM student LIMIT 0,3;-ページ1:0からチェック、3レコードをチェック
- SELECT * FROM student LIMIT 3,3;-ページ2:3からチェック、3レコードをチェック
- SELECT * FROM student LIMIT 6,3;-ページ3:
- 制限はMySQLの「方言」です
08テーブルの制約
Constraints_Overview
概念:データの正確性、有効性、完全性を確保するために、テーブル内のデータを制限します。
分類:
- 主キーの制約:主キー
- 空でない制約:nullではない
- 唯一の制約:一意
- 外部キー制約:外部キー
Constraint_non-empty制約
空でない制約:nullではなく、値をnulにすることはできません
1.テーブルを作成するときに、制約を追加します
。CREATETABLE stu(
id INT、
NAME VARCHAR(20)NOT NULL-name is not empty
);
2.テーブルを作成した後、空でない制約を追加します。ALTERTABLE stu MODIFY NAME VARCHAR(20)NOT NULL ;3.名前の空でない制約を削除します。ALTERTABLEstuMODIFY NAME VARCHAR(20);
Constraint_Unique制約
一意性制約:一意性。値を繰り返すことはできません。
1.テーブルを作成するときに、一意の制約を追加します
CREATE TABLE stu(
id INT、
phone_number VARCHAR(20)UNIQUE-一意の制約が追加されます
);
* mysqlでは、一意の制約によって制限される列の値に複数のnull。2.一意の制約を削除します。ALTERTABLEstuDROP INDEX phone_number;
3.テーブルを作成した後、一意の制約を追加します。ALTERTABLE stu MODIFY phone_number VARCHAR(20)UNIQUE;
Constraint_primaryキー制約
主キーの制約:主キー
1.注:
1。意味:空で
はなく一意2.テーブルは主キーとして1つのフィールドのみを持つことができます
3.主キーはテーブル内のレコードの一意の識別子です2.テーブルを作成するときに、主キー制約を追加
します。createtable stu(
id int primary key、-主キー制約
名varchar(20)
)をidに追加します。3.主キーを削除します
-エラーaltertable stu modify id int;
ALTER TABLE stu DROP PRIMARY KEY;4.テーブルを作成した後、主キー
ALTER TABLE stu MODIFY id INT PRIMARYKEYを追加します。
Constraint_Primary Key Constraint_Auto Growth
5.自動
拡張: 1。概念:列が数値型の場合は、auto_incrementを使用して自動拡張を完了します2.テーブルを作成するときに、主キー制約を追加し、主キーの自己成長を完了し ます。createtable stu
(
id int primary key auto_increment、-主キー制約
名varchar(20)を追加
)をidに追加します。3.自動拡張を削除します。ALTERTABLEstuMODIFY id INT;
4.自動拡張を追加します。ALTERTABLEstuMODIFY id INT AUTO_INCREMENT;
Constraints_Foreign Key Constraints
外部キーの制約-欠陥の例
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;
外部キー制約に関連する概念
*外部キー制約:外部キー。データの正確性を確保するために、テーブルとテーブルに関係を持たせます。
1.テーブルを作成するときに、外部キーを追加できます
*構文:
create table table name(
...
外部キー列
制約外部キー名外部キー(外部キー列名)はメインテーブル名(メインテーブル列名)を参照します
) ;2.外部キー
ALTERTABLEテーブル名DROPFOREIGNKEY外部キー名を削除します。3.テーブルが作成され
たら、外部キーを追加します。ALTERTABLEテーブル名ADDCONSTRAINT外部キー名FOREIGNKEY(外部キーフィールド名)REFERENCESメインテーブル名(メインテーブル列名); //主キー列、一意の制約列
CREATE TABLE employee(
id INT PRIMARY KEY AUTO_INCREMENT、
NAME VARCHAR(20)、
age INT、
dep_id INT、-外部キーはプライマリテーブルの
主キーに対応しますCONSTRAINT emp_dept_fk FOREIGN KEY(dep_id)REFERENCES department(id)-外部キー制約
);
Constraint_Foreign KeyConstraint_Cascade操作
4.カスケード操作
1.カスケード操作
構文の追加:ALTERTABLEテーブル名ADDCONSTRAINT外部キー名
FOREIGNKEY(外部キーフィールド名)REFERENCESメインテーブル名(メインテーブル列名)ON UPDATE CASCADE ON DELETE CASCADE;
2.分類:
1 。カスケード更新:ON UPDATE CASCADE
2.カスケード削除:ON DELETE CASCADE
カスケード更新
カスケード削除
春の始まりは何ですか?あなたの視野を開き、あなたの心を開き、あなたの知恵を開き、パターンを開いてください!
立春、それはなんですか?人類、義、忠誠、誠実、そして精神に頼りなさい!