Mysql の基礎 - ハン シュンピン先生 (mysql5.7 バージョンに基づく)

1. MySQL データベース (mysql5.7 バージョンに基づく)

ここに画像の説明を挿入します

1. MYSQL のインストールと構成 (ビデオ p730- を参照)

ここに画像の説明を挿入します
ここに画像の説明を挿入します

2. データベース

a. データベースの三層構造

ここに画像の説明を挿入します

b. SQL文の分類

ここに画像の説明を挿入します

c. データベースの作成

ここに画像の説明を挿入します

#创建数据库db01
CREATE DATABASE IF NOT EXISTS db01;
#创建一个使用utf8字符集的db02数据库
CREATE DATABASE IF NOT EXISTS db02 CHARACTER SET utf8;
#创建一个使用utf8字符集的db02数据库并带校对规则
CREATE DATABASE IF NOT EXISTS db03 CHARACTER SET utf8 COLLATE utf8_bin; 

d. データベースの表示と削除

ここに画像の説明を挿入します

#查看当前数据库服务器中所有的数据库
SHOW DATABASES; 
#查看前面创建的数据库定义信息
SHOW CREATE DATABASE db01

#一般来说,创建数据库或表时,名要用反引号引着“``”
CREATE DATABASE IF NOT EXISTS `db02`;

#删除数据库
DROP DATABASE db01

e. データベースのバックアップとリカバリ=

ここに画像の説明を挿入します

  • 知らせ:
-- 1、备份数据库时,写上“ -B ”时,是包含表所在的数据库,恢复时不再需要手动创建数据库.
-- 2、若不写“ -B ”时,将不包含表所在的数据库,恢复时需要手动建数据库然后才能恢复欧克.

ここに画像の説明を挿入します

  • データベース内の特定のテーブルのみをバックアップしたい場合
    ここに画像の説明を挿入します

3. 表

a. テーブルの作成

ここに画像の説明を挿入します

b. 表演習を作成する

ここに画像の説明を挿入します

-- 创建员工emp表
CREATE TABLE IF NOT EXISTS emp(
	`id` INT,
	`name` VARCHAR(15),
	`sex` CHAR(1),
	`birthday` DATE,
	`entry_date` DATE,
	`jop` VARCHAR(30),
	`salary` DOUBLE,
	`resume` TEXT

)CHARSET utf8;

--添加数据
INSERT INTO `emp` VALUES(1,'tom','男','2023-01-27','2023-02-28','Java开发',8000.0,'继续加油,不要迷失自我');
-- look the data
SELECT *FROM `emp`

c. テーブルを変更する

I.はじめに

ここに画像の説明を挿入します

ii. 応用例

ここに画像の説明を挿入します
ここに画像の説明を挿入します

d. テーブルのコピー

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

i. テーブルスキル
  • like キーワードを使用してテーブルをすばやく作成します
create table tb01 like emp;-- emp时已经存在的表
  • table.* を使用して、指定したテーブルのすべての列を表示します
SELECT t.*,e.deptno FROM emp e,dept t 
			WHERE e.deptno=t.deptno

4. MySQLのデータ型

a. 一般的に使用されるデータ型の概要

ここに画像の説明を挿入します
ここに画像の説明を挿入します

b. データ型(整数)の基本的な使い方

ここに画像の説明を挿入します
ここに画像の説明を挿入します

#创建t1表,类型为tinyint,默认不设置符号,能添加的数据:-128~127
CREATE TABLE t1(id TINYINT)
SELECT * FROM t1
INSERT INTO t1 VALUES(-128);
INSERT INTO t1 VALUES(127);
#创建t2表,类型为tinyint,设置符号,能添加的数据:0~255
CREATE TABLE t2(id TINYINT UNSIGNED);
INSERT INTO t2 VALUES(0);
INSERT INTO t2 VALUES(255);
SELECT *FROM t2;

c. ビットの使用

ここに画像の説明を挿入します
ここに画像の説明を挿入します

d. 小数点の基本的な使い方

ここに画像の説明を挿入します

e. 文字列の基本的な使い方

ここに画像の説明を挿入します

i. 使用方法の詳細 1:

ここに画像の説明を挿入します

ii. 詳細 2:

ここに画像の説明を挿入します

iii. 詳細 3:

ここに画像の説明を挿入します

iv. 詳細 4:

ここに画像の説明を挿入します

f. 日付クラスの基本的な使用法

ここに画像の説明を挿入します

5、クラッド

ここに画像の説明を挿入します

a. ステートメントの挿入

ここに画像の説明を挿入します

-- 创建goods商品表
CREATE TABLE IF NOT EXISTS `goods`(
	id INT,
	goods_name VARCHAR(10),
	price DOUBLE
);
DESC goods;
-- 添加数据
INSERT INTO goods(id,goods_name,price) VALUES(1,'薯片',8.0),(2,'可乐',6.0);
-- 查看数据
SELECT *FROM goods;
i. 利用内容

ここに画像の説明を挿入します

-- 修改某列的 默认值
ALTER TABLEMODIFY 表中的某列 对应的类型 DEFAULT;

b. ステートメントを更新する

ここに画像の説明を挿入します

-- 新建employee表
CREATE TABLE IF NOT EXISTS `employee`(
	id INT,
	`name` VARCHAR(30),
	`sex` CHAR(1),
	`sal` DOUBLE
);
-- 添加数据
INSERT INTO `employee` 
VALUES(1,'tom','男',5000),
	(2,'小妖怪','女',5500),
	(3,'大妖怪','男',6000);
	
-- 1、将所有员工薪水修改为5000元
UPDATE `employee` SET sal=5000;
SELECT *FROM employee;
-- 2、将姓名为 小妖怪 的员工薪水修改为3000
UPDATE employee SET sal=3000 WHERE `name`='小妖怪';
-- 3、将 老妖怪 的薪水在原有基础上增加1000元
UPDATE employee SET sal=sal+1000 WHERE `name`='老妖怪'

i. 利用内容

ここに画像の説明を挿入します

c. ステートメントの削除

ここに画像の説明を挿入します

-- 1、删除表中名为‘老妖怪’的记录
DELETE FROM employee WHERE `name`='老妖怪';
-- 2、删除表中所有记录
DELETE FROM employee;
i. 利用内容

ここに画像の説明を挿入します

d. select ステートメント 1 (単一テーブル クエリ)

i. 基本文法 1

ここに画像の説明を挿入します

  • ちょっとした運動
    ここに画像の説明を挿入します
-- ****创建新的表(student)********
CREATE TABLE student(
id INT NOT NULL DEFAULT 1,
NAME VARCHAR(20)NOT NULL DEFAULT '',
chinese FLOAT NOT NULL DEFAULT 0.0,
english FLOAT NOT NULL DEFAULT 0.0,
math FLOAT NOT NULL DEFAULT 0.0
);
-- 添加数据
INSERT INTO student(id,NAME,chinese,english,math)
VALUES(1,'韩顺平',89,78,90);
INSERT INTO student (id,NAME,chinese,english,math)
VALUES(2,'张飞',67,98,56);
INSERT INTO student (id,NAME,chinese,english,math)
VALUES(3,'宋江',87,78,77);
INSERT INTO student (id,NAME,chinese,english,math)
VALUES(4,'关羽',88,98,90);
INSERT INTO student (id,NAME,chinese,english,math)
VALUES(5,'赵云',82,84,67);
INSERT INTO student (id,NAME,chinese,english,math)
VALUES(6,'欧阳锋',55,85,45);
INSERT INTO student (id,NAME,chinese,english,math)
VALUES(7,'黄蓉',75,65,30);

-- 查看数据
SELECT * FROM student;

DELETE FROM student

-- 练习1、查询表中所有学生的信息
SELECT * FROM student;

-- 练习2、查询表中所有学生的姓名和对应的英语成绩
SELECT `name`,english FROM student;
-- 练习3、过滤表中重复的数据【distinct】
SELECT DISTINCT english FROM student;
-- 练习4、要查询的记录,每个字段都相同,才去重
SELECT `name`,english FROM student;

ii. 基本文法2

ここに画像の説明を挿入します

  • ちょっとした運動
    ここに画像の説明を挿入します
-- 练习1、统计每个学生的总分
SELECT `name`,(chinese+math+english) FROM student;
-- 练习2、在所有学生总分加10分的情况
SELECT `name`,(chinese+math+english+10) FROM student;
-- 练习3、使用别名表示学生分数
SELECT `name`,(chinese+math+english+10) AS 'sum' FROM student;

iii. 文法 3: where 句で使用される演算子

ここに画像の説明を挿入します

  • ちょっとした運動
    ここに画像の説明を挿入します
-- 练习1、查询姓名为赵云的学生成绩
SELECT * FROM student WHERE `name`='赵云'
-- 练习2、查询英语成绩大于90分的同学
SELECT * FROM student WHERE english>90
-- 练习3、查询总分大于200 分的所有同学
SELECT * FROM student WHERE (chinese+math+english)>200

-- 查询math大于60并且id大于90的学生成绩
SELECT * FROM student WHERE math >60 AND id >90
-- 英语成绩大于语文成绩的同学
SELECT `name` FROM student WHERE english > chinese
-- 查询总分大于200分 并且 数学成绩小于语文成绩的姓韩的学生
SELECT * FROM student WHERE (chinese+math+english)>200 AND math < chinese AND `name` LIKE '%韩%'
  • 演習 2
    ここに画像の説明を挿入します
-- 课堂练习
-- 1.查询英语分数在80-90之间的同学。
SELECT * FROM student WHERE english BETWEEN 80 AND 90;
-- 2.查询数学分数为89,90,91的同学。
SELECT * FROM student WHERE math IN(89,90,91);
-- 3.查询所有姓李的学生成绩。
SELECT * FROM student WHERE NAME LIKE '李%'
-- 4.查询数学分>80,语文分>80的同学。
SELECT * FROM student WHERE math >80 AND chinese >80;

SELECT (chinese+math+english) FROM student 
-- 课堂练习[学员自己练习]
-- 1.查询语文分数在70-80之间的同学。
SELECT* FROM student WHERE chinese BETWEEN 70 AND 80;
-- 2.查询总分为189,190,191的同学。
SELECT * FROM student WHERE (chinese+math+english) IN (189,190,191);
-- 3.查询所有姓李或者姓宋的学生成绩。
SELECT * FROM student WHERE NAME LIKE '李%' OR NAME LIKE '宋%';
-- 4.查询数学比语文多30分的同学。
SELECT * FROM student WHERE math=chinese+30;
iv. 基本文法 4: ソートによる順序付け

ここに画像の説明を挿入します

-- 课堂练习:orderby.sql
-- 对数学成绩排序后输出【升序】。
SELECT * FROM student ORDER BY math;
-- 对总分按从高到低的顺序输出
SELECT `name`,(chinese+math+english) AS he FROM student ORDER BY he DESC;
-- 对姓李的学生成绩排序输出(升序)
SELECT * ,(chinese+math+english) AS he FROM student ORDER BY he ASC;

e. Select ステートメント 2 (単一テーブル クエリの拡張)

i. クエリの拡張

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ii. ページングクエリ

ここに画像の説明を挿入します

iii. グループ強化

ここに画像の説明を挿入します
ここに画像の説明を挿入します

f. select ステートメント 3 (複数テーブル クエリ)

I.はじめに

ここに画像の説明を挿入します

ここに画像の説明を挿入します

ii. 自己接続

ここに画像の説明を挿入します

iii. サブクエリ

ここに画像の説明を挿入します
ここに画像の説明を挿入します

iv. サブクエリ一時テーブル

ここに画像の説明を挿入します
ここに画像の説明を挿入します

v. 複数行サブクエリの all 演算子

ここに画像の説明を挿入します

vi. 複数行サブクエリ内の任意の演算子

ここに画像の説明を挿入します

vii. 複数列のサブクエリ

ここに画像の説明を挿入します
ここに画像の説明を挿入します

viii. サブクエリの小さな演習
  • 演習 1
    ここに画像の説明を挿入します
  • 演習 2
    ここに画像の説明を挿入します
  • 演習 3
    ここに画像の説明を挿入します
ix、マージクエリユニオンオール(重複排除なし)とユニオン
  • すべて結合(重複なし)
    ここに画像の説明を挿入します
    ここに画像の説明を挿入します
  • 結合 (重複の削除)
    ここに画像の説明を挿入します
x. テーブルの外部結合: 左および右の外部結合 (条件付きテーブル 1 の左/右結合テーブル 2)

ここに画像の説明を挿入します
ここに画像の説明を挿入します

  • ちょっとした運動
    ここに画像の説明を挿入します

6. 機能

a. 統計/合計関数

i. 総関数数

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ii. 合計関数 - 合計

ここに画像の説明を挿入します

-- 统计一个班级数学总成绩
SELECT SUM(math) FROM student;
-- 统计一个班级语文、英语、数学各科的总成绩
SELECT SUM(chinese) '语文',SUM(english)'英语',SUM(math)'数学' FROM student;
-- 统计一个班级语文、英语、数学的成绩总和
SELECT SUM(chinese+math+english) 'he' FROM student;
-- 统计一个班级语文成绩平均分
SELECT SUM(chinese)/COUNT(*)AS'平均分' FROM student;

iii. 合計関数 - 平均

ここに画像の説明を挿入します

-- 求一个班级数学平均分
SELECT AVG(math) FROM student;
-- 求一个班级总分平均分
SELECT AVG(chinese+math+english) FROM student;
iv. 合計関数の最大/最小

ここに画像の説明を挿入します

-- 求班级中总分最大值和最小值
SELECT MAX(math+chinese+english)AS '最高分',MIN(math+chinese+english)AS '最低分' FROM student;
v. グループ統計 - グループ化

ここに画像の説明を挿入します

-- group by 练习
-- 1、建部门表
CREATE TABLE IF NOT EXISTS dept(
	deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
	dname VARCHAR(20) NOT NULL DEFAULT '',
	loc VARCHAR(13) NOT NULL DEFAULT ''

);
-- add data
INSERT INTO dept VALUES
	(10,'ACCOUNTING','NEW YORK'),
	(20,'RESEARCH','DALLAS'),
	(30,'SALES','CHICAGO'),
	(40,'OPERATIONS','BOSTON');
SELECT * FROM `dept`;
-- 2、建雇员表emp
CREATE TABLE emp
(empno  MEDIUMINT UNSIGNED  NOT NULL  DEFAULT 0, /*编号*/
ename VARCHAR(20) NOT NULL DEFAULT "", /*名字*/
job VARCHAR(9) NOT NULL DEFAULT "",/*工作*/
mgr MEDIUMINT UNSIGNED ,/*上级编号*/
hiredate DATE NOT NULL,/*入职时间*/
sal DECIMAL(7,2)  NOT NULL,/*薪水*/
comm DECIMAL(7,2) ,/*红利 奖金*/
deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 /*部门编号*/
);
-- add data
 INSERT INTO emp VALUES(7369, 'SMITH', 'CLERK', 7902, '1990-12-17', 800.00,NULL , 20), 
(7499, 'ALLEN', 'SALESMAN', 7698, '1991-2-20', 1600.00, 300.00, 30),  
(7521, 'WARD', 'SALESMAN', 7698, '1991-2-22', 1250.00, 500.00, 30),  
(7566, 'JONES', 'MANAGER', 7839, '1991-4-2', 2975.00,NULL,20),  
(7654, 'MARTIN', 'SALESMAN', 7698, '1991-9-28',1250.00,1400.00,30),  
(7698, 'BLAKE','MANAGER', 7839,'1991-5-1', 2850.00,NULL,30),  
(7782, 'CLARK','MANAGER', 7839, '1991-6-9',2450.00,NULL,10),  
(7788, 'SCOTT','ANALYST',7566, '1997-4-19',3000.00,NULL,20),  
(7839, 'KING','PRESIDENT',NULL,'1991-11-17',5000.00,NULL,10),  
(7844, 'TURNER', 'SALESMAN',7698, '1991-9-8', 1500.00, NULL,30),  
(7900, 'JAMES','CLERK',7698, '1991-12-3',950.00,NULL,30),  
(7902, 'FORD', 'ANALYST',7566,'1991-12-3',3000.00, NULL,20),  
(7934,'MILLER','CLERK',7782,'1992-1-23', 1300.00, NULL,10);

SELECT * FROM emp;
-- 3、建工资级别表
CREATE TABLE salgrade
(
grade MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, /*工资级别*/ 
losal DECIMAL(17,2)  NOT NULL, /* 该级别的最低工资 */
hisal DECIMAL(17,2)  NOT NULL /* 该级别的最高工资*/
);

INSERT INTO salgrade VALUES (1,700,1200);
INSERT INTO salgrade VALUES (2,1201,1400);
INSERT INTO salgrade VALUES (3,1401,2000);
INSERT INTO salgrade VALUES (4,2001,3000);
INSERT INTO salgrade VALUES (5,3001,9999);
SELECT * FROM salgrade;


-- 练习1、显示每个部门的平均工资和最高工资
SELECT AVG(sal),MAX(sal),deptno FROM emp GROUP BY deptno ;
-- 显示每个部门的每种岗位的平均工资和最低工资
SELECT AVG(sal),MIN(sal),job,deptno FROM emp GROUP BY deptno , job
-- 显示平均工资低于2000的部门号和它的平均工资
SELECT deptno,AVG(sal)AS p FROM emp GROUP BY deptno HAVING p < 2000;

b. 文字列関数

ここに画像の説明を挿入します

i. 方法の説明

ここに画像の説明を挿入します

ii. 小さな演習
  • 演習: emp テーブル内のすべての従業員の名前を最初の文字を小文字で表示します。
--方式一:
SELECT CONCAT(LCASE(SUBSTRING(ename,1,1)),SUBSTRING(ename,2)) AS new_name FROM emp;
--方式二:
LECT CONCAT(LEFT(ename,1),SUBSTRING(ename,2)) AS new_name FROM emp;

c. 数学的関数

i. 方法の説明

ここに画像の説明を挿入します
ここに画像の説明を挿入します

d. 時間機能

ここに画像の説明を挿入します

i. 時間機能 1

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

ii. 時間関数 2

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ここに画像の説明を挿入します

iii. 時間機能 3

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

e. 暗号化とシステム機能

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ここに画像の説明を挿入します

f. プロセス制御機能

i. 需要

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ii. はじめに

ここに画像の説明を挿入します
ここに画像の説明を挿入します

7. テーブルの制約

a. 制約の概要

ここに画像の説明を挿入します

b. 主キーの概要

ここに画像の説明を挿入しますここに画像の説明を挿入します

c. 主キーの使用方法の詳細

ここに画像の説明を挿入します
ここに画像の説明を挿入します

d. ユニークな

ここに画像の説明を挿入します
ここに画像の説明を挿入します

e. 外部キー

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

  • 利用明細
    ここに画像の説明を挿入します

f、チェック

ここに画像の説明を挿入します

g. 自己インクリメント (auto_increment)

ここに画像の説明を挿入します
ここに画像の説明を挿入します

h. 店舗自動販売システムテーブル設計事例

ここに画像の説明を挿入します
ここに画像の説明を挿入します

8. インデックス

ここに画像の説明を挿入します
ここに画像の説明を挿入します

a. インデックスの原理

ここに画像の説明を挿入します
ここに画像の説明を挿入します

b. インデックスの種類

ここに画像の説明を挿入します

c. インデックスの使用

ここに画像の説明を挿入します
ここに画像の説明を挿入します

d. インデックス作成の演習

ここに画像の説明を挿入します

e. インデックスの概要

ここに画像の説明を挿入します

9.事務

a. 事件につながる

ここに画像の説明を挿入します

b. 事業紹介

ここに画像の説明を挿入します
ここに画像の説明を挿入します

i. 細部に注意を払う

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ii. 取引慣行

ここに画像の説明を挿入します

c. トランザクション分離レベル

i. 絶縁の概要

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ii. 隔離レベル (ステーション B: ハン シュンピン教師のビデオを参照してください)

ここに画像の説明を挿入します
ここに画像の説明を挿入します

d. トランザクションの ACID 特性

ここに画像の説明を挿入します

e. 小さな演習

ここに画像の説明を挿入します

10. ストレージエンジン

ここに画像の説明を挿入します

a. メインストレージエンジン/テーブルタイプの特徴

ここに画像の説明を挿入します

b. 利用内容

ここに画像の説明を挿入します
ここに画像の説明を挿入します

c. ストレージ エンジンを変更する

ここに画像の説明を挿入します

d. ストレージ エンジンの選択方法

存在する
ここに画像の説明を挿入します

11. 見る

a. 需要

ここに画像の説明を挿入します

b. 基本的な概念

ここに画像の説明を挿入します
ここに画像の説明を挿入します

c. ビューの基本的な使用法

ここに画像の説明を挿入します
ここに画像の説明を挿入します

d. 詳細を表示

ここに画像の説明を挿入します

e. ビューのベスト プラクティス

ここに画像の説明を挿入します

f. 練習する

i. 演習 1

ここに画像の説明を挿入します
ここに画像の説明を挿入します

12.mysql管理

a.mysqlユーザー

ここに画像の説明を挿入します

b. ユーザーの作成

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

c. MySQL の権限

ここに画像の説明を挿入します

d. ユーザーの認証、リサイクル、その他の操作

ここに画像の説明を挿入します
ここに画像の説明を挿入します

e. 詳細な説明

ここに画像の説明を挿入します
ここに画像の説明を挿入します

f. 練習する

ここに画像の説明を挿入します
ここに画像の説明を挿入します

13.mysqlの演習

a. 多肢選択問題

ここに画像の説明を挿入します

b. 実践的な質問 1

ここに画像の説明を挿入します
ここに画像の説明を挿入します

c. 操作に関する質問 2

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

e. 操作に関する質問 3

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

f. 操作に関する質問 4

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

g. 操作に関する質問 5

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

h. 操作に関する質問 6

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_45066822/article/details/129178471