pythonを学習し、最終的に相互作用データベースと、共通のデータベースがあります:MySQLの、SQLiteの、MongoDBは、Redisの、などを、これは主にMySQLデータベースの基本的な操作を紹介しています。
あなたが突然実現触れ種類感の背の高いデータベース上の音は良い感じが、テーブルにそれを私たちのデータを保持しないことです。シンプルで理解するように、それは我々は、テーブルにはテーブル名であることをすべて知っているが、いくつかの部分、最初の表、データおよびこれに類似して、データベースの他のコンポーネントで構成されてではなく、同じ名前、ここではデータベース名、テーブル名とフィールドと呼ばれる、することができます。データベースの簡単な紹介はそんなに、データベースを操作する方法について言って、次の言うことを全く正しくない可能性があります。
よりエキサイティングなコンテンツ 、私をクリックしてください
A、MySQLのフィールド型
一般的に使用されている:値(int型、float型)、文字列(varchar型、テキスト)、日付(日付、日時)
二、MySQLの制約
主キー:主キー
外部キー:外部キー
デフォルト値:デフォルト
ユニーク:ユニーク
非空:NOT NULL
第三に、削除物理的および論理削除
データベースを使用する場合は、データベースの内容を削除遭遇する、この時間は、我々は慎重でなければならない、それ以外の場合は、直接の上司で解雇され、ないネットワークが非常に火災コマンド操作は、プログラマがコマンドを実行させる方法」と呼ばれていますデータベースを操作するとき、我々は注意しなければならないので」、ボスで解雇しました。
物理的に削除されたことを言うと墓石には、物理的に復元することはできません見つけることができなかったデータベースから削除されませんデータを削除することです。墓石の表は、(追加するには、あなたのデザインを与えることです:isDelete、セットのデフォルトをこのフィールドのデータ値を削除したい0の値)は、データが失われないように、あなたはそれに1つのアウトをスクリーニングするisDelete値にデータを操作するとき、1に設定されています。重要なのためのデータは、それらが動作する方法を操作する方法を重要でないデータのために、このフィールドで設定大したことして、すべての再構築されたデータベースを削除する必要があります。
第四に、データベースの基本的な操作(CRUD)
データベースを作成します。1.
[いないが存在する場合]データベースを作成DB_NAME [キャラクタ・セットUTF8];
注:データベースが1つのより多くのリスクに作動するたびに、最高のプラス、トラブルを避けるために:[存在している場合ではない]を
[文字セットUTF8]コードフォーマットが提供され、指定されなくてもよいです
2、表示データ
データベースを表示します。
方法を作成するためにデータベースをチェックしてください3。
データベースdb_nameを作成示し;
4、データベースを変更
ALTERデータベースdb_name [文字セットxxxの];
5、データベースを削除
DB_NAME [存在する場合]データベースをドロップ。
注:[もし存在]:あなたは確か最高があるデータベースかどうかプラスでない場合は、そこが削除され、エラーもありません
図6に示すように、データベースを使用して
DB_NAMEを使用します。
図7は、データベースの現在の使用を表示します
データベースを選択();
第五に、データベース管理
1、データベースをテストするためのgrantコマンドによって、ユーザー***、パスワード123456を追加
付与SELECT、INSERT、UPDATE、DELETE、作成、 '123456' によって識別される '***' @ 'localhost' のへのテストのドロップ。
2、変更ユーザーパスワード
助成金は、選択、挿入、更新、削除、作成、「asdfasdf」で識別される「***」@「localhost」のへのテストのドロップ。
図3に示すように、ユーザが表示され
mysql.userからユーザーを選択します。
4、削除ユーザー
ユーザー*** '@「localhostの」を削除。
第六に、データテーブルの基本的な操作(CRUD)
1、データテーブルを表示
テーブルを表示します。
2、データテーブルを作成します
(表学生を作成します
ID int型主キーAUTO_INCREMENT、
名前のVARCHAR(20)NOT NULL、
年齢はint NOT NULL、
性別TINYINT(1)デフォルト1、
誕生日の日付、
趣味VARCHAR(20)
);
図3に示すように、データのテーブル構造を表示します
DESC学生;
4、文を表示するには、データテーブルを作成します
テーブルの学生を作成して表示し、
図5に示すように、データを増加させる(列、フィールド)
ALTER TABLEの学生の追加アドレスはvarchar(30)。
図6に示すように、データが増加し、複数の
ALTER TABLEの学生の追加アドレスはvarchar(30)、
年齢はint NOT NULLを追加し、
nullでない高さint型を追加します。
7、列名を変更
ALTER TABLEの学生変更アドレスaddrのVARCHAR(20)。
8、の改変型
ALTER TABLEの学生修正年齢tinyint型のデフォルト20;
9、削除A
ALTER TABLE学生の落下高さ;
10、テーブル名を変更
STUのテーブルの学生の名前を変更します。
11、表で使用される文字セットを変更します
ALTER TABLEの学生キャラクタ・セットUTF8。
12、テーブルを削除
ドロップテーブルの学生。
ID int型がnullではない(表のユーザーを作成し、
名前はvarchar(10)、
年齢はint、
高さはint
);
13、主キーを追加
ALTERテーブルユーザーは、主キー(ID)を追加します。
14、主キーを削除します
ALTER TABLEユーザーが主キーをドロップします。
15、一意のインデックスを追加します
ALTER TABLEのユーザーが独自の(名前)を追加します。
16は、一意のインデックスを追加すると、インデックス名を設定します
ALTER TABLEユーザーは一意のキーのUSER_NAME(名)を追加します。
17、ジョイントインデックスを追加
ALTER TABLEのユーザーは、一意のインデックスのname_age(名前、年齢)を追加します。
18、インデックスを削除
ALTER TABLEのユーザーは、インデックス名をドロップします。
テーブルの学生(ID int型主キーAUTO_INCREMENTを作成します
名前のVARCHAR(20)、
誕生日のVARCHAR(20)、
年齢はint
);
19、データ挿入
学生への挿入(名前、誕生日、年齢)の値( '学生1'、' 2001' 年1月1日、11);
図20は、複数のデータを挿入します
学生への挿入(名前、誕生日、年齢)の値( '学生2'、' 2001年1月2' 日、11)、
( '学生3'、 '2001年1月3日'、11)、
( '学生4'、 '2001年1月4日'、11);
21、データを変更
更新学生のセットの誕生日=「2001年1月10日」どこのid = 1;
図22は、データテーブルを直接操作することができます
アップデート学生セット年齢=年齢+ 5。
23、削除データ
ID = 1学生から削除します。
注:データを削除する際に制約を追加してください、または全体のデータテーブルが削除されています
24、テーブル内のすべてのデータを削除
学生から削除します。
七、クエリデータ
テーブル等級(ID int型主キーAUTO_INCREMENTを作成します
名前のVARCHAR(20)、
ダブルJS、
Javaのdouble、
パイソンダブル)。
グレード(名前、JS、ジャワ、パイソン)の値( 'トム'、68,89,87)、( 'ジム'、70,91,92)、( 'ジェイク'、71,73,74)、(への挿入'マイク'、80,84,85)( 'ジェームズ'、85,88,83)。
よりエキサイティングなコンテンツ 、私をクリックしてください
1、クエリを選択
すべてのデータのクエリ:グレードから選択*;
名前とJSクエリ結果:選択名、学年からJS。
重複データのフィルタテーブル:グレードから明確なJSを選択します。
全学年へのjs 5とエイリアスとして使用するには:選択名、JS + 5年生から「jsのパフォーマンス」など。
2、フィルタクエリ
お問い合わせの名前XXの学生情報:名= 'トムグレードから選択*;
JS + Javaの+のpython> 250グレードから「合計スコア」としてJS + Javaの+のpython、選択名;:すべての学生は、クエリの250個の以上のポイントを獲得します
JSスコアと90以上の学生問い合わせJavaのスコアの大きい:JS> 90とJava> 90等級から選択*;
クエリJavaは80〜90の生徒の得点:80と90の間にグレードJavaから選択します*;
クエリJavaは80か90の学生スコア:(80,90)でグレードJavaから選択します*;
/ *ファジークエリは、%は_を表す複数の文字を表す文字* /
学生から始まるJクエリ名:「Jの%」のようなグレード名から選択*;
八、順序によって順序
/ *昇順:デフォルトDESCを昇順:降順* /
従った順序スコアを昇順JS:JSによってグレード順から選択*;
より合計スコア最高最低に:選択名、(IFNULL(JS、0)+ IFNULL(javaの、0)+ IFNULL(のpython、0)) '合計スコア' DESCによってグレード順から '合計スコア' など。
ナイン、グループの照会によってグループ
表product_tabに(ID int型主キーAUTO_INCREMENTを作成します
PRODUCT_NAMEのVARCHAR(20)、
価格フロート(6,2)、
product_date日、
クラスVARCHAR(20))。
product_tabにへの挿入(PRODUCT_NAME、価格、product_date、クラス)の値( '苹果'、10 '20180812'、' 水果')、
( 'バナナ'、20 '20180826'、 'フルーツ')、
( "ケトル"、120、 '20170612'、 "電気")、
( 'キルト'、70 '20170612'、 "の家具")、
( "サウンド"、420、 '20171012'、 "電気")、
( "TV"、2000年、 '20170912'、 "電気")、
( "シート"、55 '20171112'、 "家具")、
( "ストロベリー"、34 '20170512'、 "フルーツ");
場所によってグループ化された:5でproduct_tabにグループから選択*;
クラスによってproduct_tabにグループから選択したクラス、平均(価格):製品カテゴリやショーによって平均価格分類
200よりも個々の商品価格の商品の合計によって製品表示:合計(価格)> 200を持つクラス別product_tabにグループから選択したクラス、合計(価格)。
すべての製品グループ化:クラスによってproduct_tabにグループからGROUP_CONCAT選択ID、GROUP_CONCAT(PRODUCT_NAME);
とを有する間十区別、
前にのみフィルタデータパケットに使用することができます;まず、一つのことが明らかに我々が持つ場所に使用することができます使用することができるということである唯一のスクリーニングパケットデータの後に使用されたが、
そして、機能を有する重合に使用することができます。
セブンイレブン、集約関数
COUNT(列名):行数を数えます
学生の統計数:グレードから選択数(ID);
(列名)SUM:合計統計
すべてのJS統計合計スコア:選択合計(JS)のグレードから「jsの合計スコア」など。
AVG(カラム名):平均
すべての統計的平均JS:選択AVG(JS)のグレードから「平均JS」など。
MAX、MIN(最大値と最小値)
グレードから「最高のスコアをJS」として最大(JS)を選択します。
グレードから「jsの最低スコア」として分(JS)を選択します。
十二、SQL文の実行順序
- 選択 - - ここ基によって - を有する - ORDER BY
サーティーン、リミットと正規表現
限定
クエリの前に3つのデータ:グレードの上限3から選択*;
1、3つのデータのクエリをスキップ:グレード限度1,3から選択*;
正規表現
Jクエリ初めの学生:グレードから選択*場所名の正規表現「^ J」;
Mの学生は、クエリの名前に2回表示:グレードからどこ名正規表現「M {2}」*選択します。
第四に、マルチテーブル操作
1、外部キー制約
複数の生徒に/ *クラス対応し、学生だけのクラスに対応することができます* /
メインテーブル:テーブルクラス(ID int型主キーAUTO_INCREMENT、名前のVARCHAR(20)、stu_nums int型)を作成し、クラスの表を作成します。
子表:创建学生表テーブルの学生(ID int型主キーAUTO_INCREMENT、名前のVARCHAR(20)、CLASS_ID int型、外部キー(CLASS_ID)参照クラス(ID))を作成します。
注:確認することと、外部キーの一貫として、関連する主キーのデータ型
挿入データ:クラスへの挿入(名前、stu_nums)の値( 'クラスA'、10)、( 'クラス2'、12)、( 'クラス3'、13)、( 'クラス4'、14)、( ' 5つのクラス、15);
学生(名前、CLASS_ID)の値( 'トム'、1)、( 'ジム'、1)、( 'ジェイク'、2)、( 'マイク'、3)、( 'ジェーン'、4)に挿入します。
增加外键:ALTER TABLEの学生の追加制約student_fk_class外部キー(CLASS_ID)参照クラス(ID);
外部キーを削除:ALTER TABLEの学生が外部キーstudent_ibfk_1をドロップします。
2、InnoDBはステートメントでサポート
外部キー制約ペアテーブルを意味:親テーブルの無い候補キー場合は、子テーブルで許可されていませんinsert
/update
親テーブルの外部キー制約を意味:表親上で実行update
/ delete
更新または削除一つまたはデータを、対応する複数のサブテーブルに、
子テーブルの外部キーに指定された定義:親テーブルの挙動が依存するon update
/ on delete
声明
ON DELETE CASCADEは、DELETE CASCADE:親テーブルのレコードが削除され、対応する記録サブテーブルは自動的に削除されます
外部キーON DELETE CASCADEを(CLASS_ID)参照クラス(ID);
DELETE SET NULLのONブランク:親テーブルの更新/削除、レコード、子テーブルがnullに設定されています
外部キーセットヌル上(CLASS_ID)参照クラス(ID);
RESTRICT:親テーブルを削除することを拒否
NO ACTION:一致するレコードが子テーブルに存在する場合は制限するのと同じMySQLでは、候補キーに親テーブルの対応に許可されていません
3、マルチテーブルのクエリ
/ *従業員表と部門表とデータの挿入:/ * 2つのテーブルを作成します。
テーブルの従業員(EMP_ID int型主キーAUTO_INCREMENT、EMP_NAMEのVARCHAR(20)、年齢はint、DEPT_ID int)を作成します。
テーブル部門(DEPT_ID int型主キーAUTO_INCREMENT、DEPT_NAMEのVARCHAR(100))を作成します。
従業員への挿入(EMP_NAME、年齢、DEPT_ID)の値( 'A'、19,200)、( 'B'、26201)、( 'C'、30201)、( 'D'、24202)、( 'E'、20,200) 、( 'F'、38204)。
;部門値(200、 '人事部')(201 'テクノロジー')、(202 '販売')、(203 'MOF')への挿入
直積クエリ:クエリ結果は、m * nのです
従業員、部署から選択*;
エン:クエリの2つの表は、データが関連付けられています
従業員、部署employee.dept_id = department.dept_ IDから選択*;
外部結合します:
左外部結合:増加する権利は、その結果に基づいて何の内側の接続がない左
employee.dept_id = departmen t.dept_id上の部門に参加し、左の従業員から選択*;
右の外部結合:結果を向上させる権利を、接続を含むための根拠を残していません
右employee.dept_id = departme nt.dept_idの部門に参加した従業員から選択*;
4、多基準クエリ
より多くの情報の25歳の従業員よりも出会います。
employee.emp_nameを選択し、department.dept_name
- >従業員から、部署
- >ここでemployee.dept_id = department.dept_id及び> 25歳。
接続クエリの従業員と部門のテーブル内と昇順に年齢欄に表示されます:
employee.emp_id、employee.emp_name、employee.age、department.dept_nameを選択
- >従業員から、部署
- >ここでemployee.dept_id = department.dept_id
- >年齢ASCによって順。
サブクエリ:クエリ従業員表、部門テーブルDEPT_IDのすべての情報
(部署からDEPT_ID選択)にDEPT_ID従業員から選択*;
サブクエリ:
でDEPT_ID従業員から(部署からDEPT_ID選択する場所年齢> 25)*選択します。
キーワードはEXISTSを使用し
オフは、単語が十字キーの存在を示す存在しています。キーワードEXISTSを使用する場合は、内側のクエリは、レコードのクエリを返しません。
しかし、真または偽の値を返します。トゥーレまたはFalse
トゥーレ、外側のクエリのクエリを返すとき、戻り値がfalseの場合、外側のクエリは、クエリではありません
(DEPT_ID = 205部門からSELECT DEPT_NAME)をEXISTS従業員から選択*;
(DEPT_ID = 203部門からSELECT DEPT_NAME)をEXISTS従業員から選択*;