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 TABLE 表 MODIFY 表中的某列 对应的类型 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