『深入浅出mysql』学習ノート
10736 ワード
一:sql分類と文法
1.sql分類:(1)DDL:テーブル、カラム、インデックスなどのデータベースオブジェクトを定義するデータベース定義言語.create,drop,alter等(2)DML:データベース操作言語,添削改ざんデータベースのレコードinsert,delete,update,select等(3)DCL:データベース制御言語,データベースを定義テーブル,フィールド,ユーザのアクセス権限とセキュリティレベルgrant,revoke等2.DDL文(1)データベースの作成:create database test 1;(2)データベースの削除:drop database test 1;(3)テーブルの作成:create table user(name varchar(10)、age int(2);(4)テーブルの削除:drop table user;(5)表の修正:
3.DML文(1)レコードinsert into user(name,age)values(‘zhangsan’,18);(2)削除レコード:delete from user where name='張三’(3)更新レコード:update user set age=1 where name='張三’(4)クエリーレコード:select*from user;(5)クエリ重複しないレコードj:select distinct name from user;(6)ソートクエリー:select from user order by age desc;(7)制限ソート:select*from user order by age limit 1,30;(8)集約:select name,age from user group by age;(9)重合後の条件:select name,age from user group by age having age>18;(havingとwhereの違い:havingは重合後条件、whereは重合前条件)(10)表接続:①内接続:Select ename,deptname from emp,dept where emp.deptno=dept.deptno;②外部接続:
・左ジョイン:左のすべてのテーブルのレコード、右のテーブルに一致していないレコード、右ジョイン:右のすべてのテーブルのレコード、左のテーブルに一致していないレコードを含む
(11)サブクエリ:別のselectの結果(サブクエリのキーワードは主にin,not in,=,!=,exists,not existsを含む)(クエリの結果数が一意である場合はinの代わりに使用可能である)select*from emp where deptno in(select deptno from dept);select * from emp where deptno = (select deptno from dept limit 1);
(12)記録連携:
(unionとunion allの違い:unionはunion allがクエリした結果を一度distinctし、重複した結果を除去する)
4.DCL文
(1)許可:sakilaデータベース内のすべてのテーブルに対するSELECT/INSERT権限を持つデータベースユーザz 1を作成する:grant select,insert on sakila.*to 'z1'@'localhost' identified by '123';
(2)回収権限:権限変更のため、z 1の権限を変更する必要があり、INSERTを回収し、データに対してのみSELECT操作を行うことができる:revoke insert on sakila.*from 'z1'@'localhost';
二:mysqlがサポートするデータ型
数値タイプ、文字列タイプ、日付と時刻タイプ1.数値タイプ
2.文字列タイプ
3.日付タイプ
三.mysdqlの演算子
(1)演算子
(2)比較演算子
(3)論理演算子
(4)ビット演算子
四.mysqlでよく使われる関数
1.文字列関数
2.数値関数
3.日付時間関数
4.その他の一般的な関数
五.テーブルタイプ(ストレージエンジンの選択)
1.現在のデータベースでサポートされているストレージエンジンを問い合わせる
2.Mysql一般的なストレージエンジンの比較
(MysqlはV 5.1以前はMyISAM、その後はInnoDB)
(1)Myisam
(2)Innodb
(3)Memory
五.適切なデータ型の選択
1.charとvarchar?
2.textとblob?(1)どちらも大きなテキストデータBlobを保存することができ、例えば写真Textはテキストデータのみを保存することができ、例えば文章(2)textとboloフィールドは削除操作時に「空洞」現象(表データファイルの大きさは削除データによって減少しない)が発生し、OPTIMIZE TABLE tを使用することができる.最適化操作(3)を行う最適化操作は、blobまたはtext列を個別のテーブルに配置するのが一般的である
3.浮動小数点と定点数?(1)定数:小数点がある位置に固定されているデータ.まるで0.0000001、0.0001111のようです.(2)浮動小数点数:小数点位置で浮動可能なデータ.数学の1222.210^3のように1.222210^6と表すこともできます.(3)javaではSystemを知っています.out.print("7.22-7.0="+ (7.22f-7.0f));の結果は0.22ではなく0.219999なので、プログラムでは浮動小数点数の比較をできるだけ避けて演算します.BigDecimal b 1=new BigDecimal(Double.toString(v 1))を定点数で比較して演算します.(4)データベースではfloat,doubleは浮動小数点数をdecimalまたはnumbericで定点数を表すので通貨などの機密データに対しては定点数で格納する
4.日付タイプの選択?年のみを記録する場合はyearで時間分秒を記録する場合はdatetimeで異なるタイムゾーンを考慮する場合はtimestampを使用します
六.文字セット
(1)最初の文字セットASCII(2)は,異なる文字を扱うために数百種類の文字セットが出現する.iso-8859、GBK、GB 2312など(3)統一符号化のため、国際標準化組織isoは国際文字セット標準UCSを制定した.この標準は4バイト符号化を採用し、コード空間をビットグループ、面、行、格(4)のようなUCS符号化を多くの米国コンピュータ協会の反対(sun、apple、ibmなど)によってunicodeの協会を構成し、unicode 1を発売した.0(2バイト)(5)は後に符号化フォーマットの統一のために,unicode符号化をUCSの0組の0字面に組み込む交渉を展開した.それを基本多言語文字面(BMP)と呼び、残りの2バイトを補助字面と専用字面(6)として実際によく使われているのはunicodeの文字(99%)ですが、unicodeにはなくucsにはどうすればいいのでしょうか.従ってUTF-16が制定され、その後UTF-16の使用中に一連の問題が発生したため、UTF-8(1~4バイト符号化)が発生した.
七.インデックスの設計と使用
0.インデックスとは?システムはあるアルゴリズムに基づいて、既存のデータ(と将来の新しいデータ)を単独で1つのファイルを創立して、ファイルは迅速な一致データを実現することができて、そして迅速に対応する表の中の記録を見つけることができます1.各ストレージエンジン(innodb,myidsamなど)は各テーブルに対して少なくとも16個のインデックスをサポートし、myisamとinnodbはデフォルトでBTREEインデックスを作成し、memoryストレージエンジンはデフォルトでhashインデックス2を使用する.インデックスの作成:create indexインデックス名onテーブル名名3.インデックスdrop indexインデックス名onテーブル名4を削除する.mysqlで提供されるインデックスのタイプは?(1)プライマリ・キー・インデックス(2)ユニーク・インデックス(3)全文インデックス:記事内のキーワードによるインデックス(4)通常インデックス
八.表示
1.ビューとは?ビューは仮想的に存在するテーブルです.一般的に、ビューはSELECT文が実行された後に返される結果セットです.2.ビューはいつ使用しますか.(1)よく使用されるクエリーまたは複雑なコンビネーションクエリー(2)権限管理(例えば、テーブルの一部のフィールドに機密情報が含まれており、低権限のユーザーに見られないように、権限に適したビューを提供することができる3.文(1)作成:Createor replace viewビュー名as+クエリー文(2)表示:show create viewビュー名(3)削除:drop viewビュー名4.ビューの意味(1)sql文を節約できる(複雑なクエリー結果をビューで保存する)(2)ビュー操作がクエリーの結果にどのように影響し、元のデータに影響を与えず、比較的安全である(3)権限制御を行う
九.関数#カンスウ#
1.関数とは?コードを実行する必要があるときに関数を呼び出す(多重化が実現される)構造にコードをカプセル化する(いずれの関数にも戻り値があるため、関数はselectによって呼び出される).関数の分類?(1)システム関数:システムが良い関数を呼び出し、直接呼び出せばSelect subString(文字列、開始、終了)Select char_length(文字列)(2)カスタム関数:作成構文:create function関数名(パラメータリスト)Begin関数体ReturnタイプEnd呼び出し:select関数名()
十.きおくてつづき
1.ストレージ・プロシージャは何ですか.ストアド・プロシージャは、戻り値のない関数です.
2.作成プロセス?Create procedureプロシージャ名(パラメータリスト)Begin---プロシージャEnd
3.プロシージャを呼び出しますか?(プロシージャは値を返さず、selectで呼び出すことはできません.専用のキーワードcallがあります)Callプロシージャ名()
4.プロセスDrop proceddure pro 1を削除する.
5.プロセスパラメータプロセスパラメータには、独自のタイプ限定(In out inout)がある
INパラメータ:ストレージ・プロシージャにデータを転送するだけで、計算された値を返す必要はありません.
OUTパラメータ:外部からのデータは受け付けず、計算後の値のみを返します.
INOUTパラメータ:データ転送ストレージプロセスが呼び出し計算された後、戻り値を転送する必要があります.(具体的な参考:http://blog.itpub.net/29773961/viewspace-1769098/)
十.フリップフロップ
1.フリップフロップとは?Tigger、ある状況を監視し、ある操作をトリガーします.
十一.パターン
前編の博文を参考にする
https://blog.csdn.net/qq_34645958/article/details/80720163
1.sql分類:(1)DDL:テーブル、カラム、インデックスなどのデータベースオブジェクトを定義するデータベース定義言語.create,drop,alter等(2)DML:データベース操作言語,添削改ざんデータベースのレコードinsert,delete,update,select等(3)DCL:データベース制御言語,データベースを定義テーブル,フィールド,ユーザのアクセス権限とセキュリティレベルgrant,revoke等2.DDL文(1)データベースの作成:create database test 1;(2)データベースの削除:drop database test 1;(3)テーブルの作成:create table user(name varchar(10)、age int(2);(4)テーブルの削除:drop table user;(5)表の修正:
alter table user modify name varchar(20);
alter table user add column sex varchar(10);
alter table user drop column age;
Alter table user change age age1 int(4);
Alter table user rename user1;
3.DML文(1)レコードinsert into user(name,age)values(‘zhangsan’,18);(2)削除レコード:delete from user where name='張三’(3)更新レコード:update user set age=1 where name='張三’(4)クエリーレコード:select*from user;(5)クエリ重複しないレコードj:select distinct name from user;(6)ソートクエリー:select from user order by age desc;(7)制限ソート:select*from user order by age limit 1,30;(8)集約:select name,age from user group by age;(9)重合後の条件:select name,age from user group by age having age>18;(havingとwhereの違い:havingは重合後条件、whereは重合前条件)(10)表接続:①内接続:Select ename,deptname from emp,dept where emp.deptno=dept.deptno;②外部接続:
:( emp :)
select ename,deptname from emp left join dept on emp.deptno=dept.deptno;
:
select ename,deptname from emp left join dept on emp.deptno=dept.deptno;
・左ジョイン:左のすべてのテーブルのレコード、右のテーブルに一致していないレコード、右ジョイン:右のすべてのテーブルのレコード、左のテーブルに一致していないレコードを含む
(11)サブクエリ:別のselectの結果(サブクエリのキーワードは主にin,not in,=,!=,exists,not existsを含む)(クエリの結果数が一意である場合はinの代わりに使用可能である)select*from emp where deptno in(select deptno from dept);select * from emp where deptno = (select deptno from dept limit 1);
(12)記録連携:
select * from t1 union select * from t2
select * from t1 union all select * from t2
(unionとunion allの違い:unionはunion allがクエリした結果を一度distinctし、重複した結果を除去する)
4.DCL文
(1)許可:sakilaデータベース内のすべてのテーブルに対するSELECT/INSERT権限を持つデータベースユーザz 1を作成する:grant select,insert on sakila.*to 'z1'@'localhost' identified by '123';
(2)回収権限:権限変更のため、z 1の権限を変更する必要があり、INSERTを回収し、データに対してのみSELECT操作を行うことができる:revoke insert on sakila.*from 'z1'@'localhost';
二:mysqlがサポートするデータ型
数値タイプ、文字列タイプ、日付と時刻タイプ1.数値タイプ
2.文字列タイプ
3.日付タイプ
三.mysdqlの演算子
(1)演算子
(2)比較演算子
(3)論理演算子
(4)ビット演算子
四.mysqlでよく使われる関数
1.文字列関数
2.数値関数
3.日付時間関数
4.その他の一般的な関数
五.テーブルタイプ(ストレージエンジンの選択)
1.現在のデータベースでサポートされているストレージエンジンを問い合わせる
Show engines \G
2.Mysql一般的なストレージエンジンの比較
(MysqlはV 5.1以前はMyISAM、その後はInnoDB)
(1)Myisam
Mysql V5.1 MyISAM; InnoDB
Myisam
(2)Innodb
Innodb
, innodb
(3)Memory
( hash )
,
五.適切なデータ型の選択
1.charとvarchar?
Char ,varchar
char varchar ,
( mysql varchar , varchar )
2.textとblob?(1)どちらも大きなテキストデータBlobを保存することができ、例えば写真Textはテキストデータのみを保存することができ、例えば文章(2)textとboloフィールドは削除操作時に「空洞」現象(表データファイルの大きさは削除データによって減少しない)が発生し、OPTIMIZE TABLE tを使用することができる.最適化操作(3)を行う最適化操作は、blobまたはtext列を個別のテーブルに配置するのが一般的である
3.浮動小数点と定点数?(1)定数:小数点がある位置に固定されているデータ.まるで0.0000001、0.0001111のようです.(2)浮動小数点数:小数点位置で浮動可能なデータ.数学の1222.210^3のように1.222210^6と表すこともできます.(3)javaではSystemを知っています.out.print("7.22-7.0="+ (7.22f-7.0f));の結果は0.22ではなく0.219999なので、プログラムでは浮動小数点数の比較をできるだけ避けて演算します.BigDecimal b 1=new BigDecimal(Double.toString(v 1))を定点数で比較して演算します.(4)データベースではfloat,doubleは浮動小数点数をdecimalまたはnumbericで定点数を表すので通貨などの機密データに対しては定点数で格納する
4.日付タイプの選択?年のみを記録する場合はyearで時間分秒を記録する場合はdatetimeで異なるタイムゾーンを考慮する場合はtimestampを使用します
六.文字セット
(1)最初の文字セットASCII(2)は,異なる文字を扱うために数百種類の文字セットが出現する.iso-8859、GBK、GB 2312など(3)統一符号化のため、国際標準化組織isoは国際文字セット標準UCSを制定した.この標準は4バイト符号化を採用し、コード空間をビットグループ、面、行、格(4)のようなUCS符号化を多くの米国コンピュータ協会の反対(sun、apple、ibmなど)によってunicodeの協会を構成し、unicode 1を発売した.0(2バイト)(5)は後に符号化フォーマットの統一のために,unicode符号化をUCSの0組の0字面に組み込む交渉を展開した.それを基本多言語文字面(BMP)と呼び、残りの2バイトを補助字面と専用字面(6)として実際によく使われているのはunicodeの文字(99%)ですが、unicodeにはなくucsにはどうすればいいのでしょうか.従ってUTF-16が制定され、その後UTF-16の使用中に一連の問題が発生したため、UTF-8(1~4バイト符号化)が発生した.
七.インデックスの設計と使用
0.インデックスとは?システムはあるアルゴリズムに基づいて、既存のデータ(と将来の新しいデータ)を単独で1つのファイルを創立して、ファイルは迅速な一致データを実現することができて、そして迅速に対応する表の中の記録を見つけることができます1.各ストレージエンジン(innodb,myidsamなど)は各テーブルに対して少なくとも16個のインデックスをサポートし、myisamとinnodbはデフォルトでBTREEインデックスを作成し、memoryストレージエンジンはデフォルトでhashインデックス2を使用する.インデックスの作成:create indexインデックス名onテーブル名名3.インデックスdrop indexインデックス名onテーブル名4を削除する.mysqlで提供されるインデックスのタイプは?(1)プライマリ・キー・インデックス(2)ユニーク・インデックス(3)全文インデックス:記事内のキーワードによるインデックス(4)通常インデックス
八.表示
1.ビューとは?ビューは仮想的に存在するテーブルです.一般的に、ビューはSELECT文が実行された後に返される結果セットです.2.ビューはいつ使用しますか.(1)よく使用されるクエリーまたは複雑なコンビネーションクエリー(2)権限管理(例えば、テーブルの一部のフィールドに機密情報が含まれており、低権限のユーザーに見られないように、権限に適したビューを提供することができる3.文(1)作成:Createor replace viewビュー名as+クエリー文(2)表示:show create viewビュー名(3)削除:drop viewビュー名4.ビューの意味(1)sql文を節約できる(複雑なクエリー結果をビューで保存する)(2)ビュー操作がクエリーの結果にどのように影響し、元のデータに影響を与えず、比較的安全である(3)権限制御を行う
九.関数#カンスウ#
1.関数とは?コードを実行する必要があるときに関数を呼び出す(多重化が実現される)構造にコードをカプセル化する(いずれの関数にも戻り値があるため、関数はselectによって呼び出される).関数の分類?(1)システム関数:システムが良い関数を呼び出し、直接呼び出せばSelect subString(文字列、開始、終了)Select char_length(文字列)(2)カスタム関数:作成構文:create function関数名(パラメータリスト)Begin関数体ReturnタイプEnd呼び出し:select関数名()
十.きおくてつづき
1.ストレージ・プロシージャは何ですか.ストアド・プロシージャは、戻り値のない関数です.
2.作成プロセス?Create procedureプロシージャ名(パラメータリスト)Begin---プロシージャEnd
3.プロシージャを呼び出しますか?(プロシージャは値を返さず、selectで呼び出すことはできません.専用のキーワードcallがあります)Callプロシージャ名()
4.プロセスDrop proceddure pro 1を削除する.
5.プロセスパラメータプロセスパラメータには、独自のタイプ限定(In out inout)がある
INパラメータ:ストレージ・プロシージャにデータを転送するだけで、計算された値を返す必要はありません.
OUTパラメータ:外部からのデータは受け付けず、計算後の値のみを返します.
INOUTパラメータ:データ転送ストレージプロセスが呼び出し計算された後、戻り値を転送する必要があります.(具体的な参考:http://blog.itpub.net/29773961/viewspace-1769098/)
十.フリップフロップ
1.フリップフロップとは?Tigger、ある状況を監視し、ある操作をトリガーします.
十一.パターン
前編の博文を参考にする
https://blog.csdn.net/qq_34645958/article/details/80720163