急いで手配しますので、記事にご不明な点がございましたら、お問い合わせください、ご支援ありがとうございます、一緒に進めていきましょう!
MYSQL関連の知識の概要。基本的な記事、高度な記事、高度な記事に分かれています。
1.データの整合性
(1)データベースの整合性
これは、データベースに格納されているデータが有効 であること、 つまりデータの有効性と正確性を保証するために使用され、データの整合性を保証します = テーブルの作成時にテーブルに制約を追加します完全な分類:- エンティティの整合性 ( ラインの整合性 ):- ドメインの整合性 ( 列の整合性 ):- 参照整合性 ( 関連テーブルの整合性 ):主キー制約: 主キー一意性制約: 一意[キー]nullではない制約: nullではないデフォルトの制約: デフォルト自動インクリメント: auto_increment外部キー制約 :外部キーテーブルを作成するときにこれらの制約を設定し、複数の制約の間にスペースを使用することをお勧めします
(2)エンティティの整合性
エンティティ:つまり、テーブルの行 ( レコード )は エンティティ( エンティティ )を表しますエンティティの整合性の役割:データの各行が繰り返されていないことを識別します。制約タイプ:主キー制約一意性制約自動インクリメント列
(3)ドメインの整合性
ドメインの整合性の役割:このセルのデータを正しく制限し、この列の他のセルと比較しないでくださいフィールドは現在のセルを表しますドメイン整合性制約:データ型がヌルで はない制約(ヌルではない )デフォルト値の制約 (デフォルト)チェック 制約( mysql はサポートしていません) check(sex =' male 'またはsex=' female ')
(4)参照整合性
参照 整合性外部キー制約: FOREIGN KEY
2.マルチテーブルクエリ
(1)関係
1対多/多対1の関係
多対多の関係
1対1の関係
(2)文法
1. 結果セットのマージ :UNION 、 UNION ALL2. 接続クエリ2.1 内部参加 [内部]参加オン2.2 アウタージョイン アウタージョインオン- 左 [外側]参加- 右 [外側]参加- 完全外部結合( MySQL ではサポートされていません) FULL JOIN2.3 自然なつながり NATURALJOIN3. サブクエリ
3.補足
(1)複数行追加
テーブル名 ( 列名 ) に挿入値( 列値 )、( 列値 )、( 列値 ) ;
(2)マルチテーブルアップデート
(1)表 1、 表 2を 更新します。列 名 = 列値を設定します。 ここで、 表 1. 列名 = 表 2. 列名 および その他の資格(2)更新 表 1table1.column_name = table2.column_name ___の内部結合 table2 _ _列名 = 列値を設定しますここで 資格
(3)複数テーブルの削除
削除 操作で使用した テーブルから削除したデータのテーブルを削除しますここで 資格注 : 複数のテーブルを区切るには、コンマを使用してください
(4)日付操作機能
now() は現在のシステム時刻を取得しますyear( datevalue ) は、日付値の年を取得しますdate_add( date 、間隔 計算値計算のフィールド );注:計算値が0 より大きい場合は日付を戻すことを意味し、 0 より小さい場合 は日付を進めることを意味します。
4.データベースの最適化
1. クエリを最適化するには、全表スキャンを回避するようにしてください。最初に、 where および orderby に関係する列にインデックスを作成することを検討する必要があります。2. where句のフィールドのnull値の判断 を回避するようにしてください。 そうしないと、エンジンはインデックスの使用を断念し、全表スキャンを実行します。データベースにはNULLを残さず、可能な限りデータベースにNOT NULLを入力することをお勧めします。メモ、説明、コメントなどはNULLに設定できます。その他の場合は、 NULLを使用しないことをお勧めします。3. where句で!=または<>演算子を使用 しないようにしてください。使用しないと、エンジンはインデックスの使用を断念し、全表スキャンを実行します。4. where句で条件を使用したり接続したりし ないようにしてください 。フィールドにインデックスがあり、フィールドにインデックスがない場合、エンジンはインデックスの使用を中止し、全表スキャンを実行します。
5.MySQLのインストールとダウンロード
https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.28-winx64.zip
6.演習
トピック
データシート:従業員テーブル(従業員):従業員番号(empid、主キー)、名前(名前)、性別(性別)、役職(役職)、生年月日(誕生日)、部門(depid)部門(部門):部門番号(depid、主キー)、部門名(depname)給与:従業員番号(empid)、基本給(basesalary)、ポジションワーカー資本(タイトル給与)、控除(控除)
必要
DDLステートメント
職員:
CREATE TABLE `employee`(
` empid` int(20)NOT NULL AUTO_INCREMENT、
`name` varchar(255)COLLATE utf8_bin DEFAULT NULL、
` sex` varchar(2)COLLATE utf8_bin DEFAULT NULL、
`title` varchar(255)COLLATE utf8_bin DEFAULT NULL、
`birthday` varchar(255)COLLATE utf8_bin DEFAULT NULL、
` depid` int(11)DEFAULT NULL、
PRIMARY KEY( `empid`)
)ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin;デパートメント:
CREATE TABLE `department`(
` depid` int(20)NOT NULL、
`depname` varchar(255)COLLATE utf8_bin DEFAULT NULL、
PRIMARY KEY(` depid`)
)ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin;給料:
CREATE TABLE `salary`(
` empid` int(20)NOT NULL、
`basesalary` decimal(10,2)DEFAULT NULL、
` titlesalary` decimal(10,2)DEFAULT NULL、
`deduction` varchar(255)COLLATE utf8_bin DEFAULT NULL、
主キー( `empid`)
)ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin;
ALTER TABLE department ADD departdesc VARCHAR(50);
UPDATE employee e INNER JOIN salary s ON e.empid=s.empid SET e.title='工程师' ,s.basesalary=2000,s.titilsaraly=700 WHERE e.name='李四';
DELETE FROM department WHERE depname='人事部';
SELECT empid,basesalary+titilsaraly-deduction AS '实发工资',basesalary+titilsaraly AS '应发工资' FROM salary;
SELECT * FROM employee WHERE LIKE '张%' AND `DATABASE`(NOW(),`INTERVAL -40 YEAR)<birthday;
SELECT empid,name,title,depid,basesalary+titilsaraly-deduction AS '实发工资' FROM salary
SELECT e.name,e.basesalary,e.titilsaraly,e.deduction from employee e,department d,salary s WHERE w,empid=s.empid and w.empid=d.dename='销售部';
SELECT title,COUNT(*) FROM employee GROUP BY title;
SELECT dename,sum(s.basesalary+s.titilsaraly-s.deduction),AVG([DISTINCT] s.basesalary+s.titilsaraly-s.deduction) FROM employee e,department d,salary s WHERE
e.empid=s.empid AND d.empid=e.empid GROUP BY depname;
SELECT name,e.basesalaryfrom employee e,salary s WHERE e.empid=s.empid AND e.empid=s,empid AND e.basesalary>(SELECT MAX(basesalary) FROM employee e,salary s
department d WHERE e.empid=s.empid AND d,empid=e.empid AND d.department='销售部');