Day61
レビュー:
SQL文:
データライン:
一時テーブルは:(ID TBから選択* > 10)
のマッピングを指定します。
SELECT ID、名前、。1、SUM(X)/ COUNT()
条件:
。ケースときにID> 8その後、XX他XX終了
(ISNULLは、(XX)、場合:三項演算子を 0,1)
添加:
約さえ表:参加
上下テーブルに接続された:ユニオン
#自動加工
SELECT ID、から名前TB1
ユニオン
SELECT NUM、TB2とからSNAME
ない#重量
sidのSELECT、学生からのSNAME
UNION ALL
SELECT SID、からSNAME学生
セクションの運動:
ユーザー権限管理に基づいて
、参照テーブル構造:
ユーザ情報
上記のID、ユーザ名PWD
1アレックス123123
権限の
1つのオーダ管理
ユーザー証券
3バグ管理
....
ユーザータイプ&権
1 1
1 2
2 1
3 1
プログラム:
ユーザログイン
役割ベースの権限の管理
ユーザー情報の
上記IDのユーザー名PWD ROLE_ID
1アレックス123123 1
2 1エリック・123123
権限の
1オーダ管理
ユーザー証券
3バグ管理
....
ロールテーブル:
1つのIT部門のスタッフ
2人のコンサルティング従業員
3 ITディレクターの
役割の権限
1 1
1 2
3 1
3 2
3 3
===>
1.役割ベースのアクセス許可管理
2.要件分析
、今日の内容:
1.ビュー
100 SQL:
88:V1
からSELECT ... V1
からSELECT ASD v1の
将来的には使いやすさのためにエイリアスを設定し、クエリ
-作成
ASビューSQLビュー名を作成
:仮想PS
-変更を
ASビューSQLビューの名前を変更
、削除-
ドロップビューのビュー名を、
2トリガ
するとき、特定のテーブルを行うには:CRUD操作は、トリガーが関連付けられた動作をカスタマイズするために使用することができる場合に
INSERT INTO TB(....)を
- DELIMITER / /
-行ごとに学生に挿入する前にトリガT1を作成
- BEGIN
-教師(TNAME)値(NEW.sname)への挿入。
-教師(TNAME)の値にINSERT(NEW.sname)。
-教師(TNAME)の値にINSERT(NEW.sname)。
-教師(TNAME)の値にINSERT(NEW.sname)。
- END //
-区切り文字。
-
- 学生(性別、CLASS_ID、SNAME)の値( 'F'、1 'タオ')、( 'F'、1 '世代')に挿入します。
- NEW、その新しいデータに代わって
-その古いデータの代わりにOLD、
3.機能
DEF F1(A1、A2):
A1 + A2戻り
F1()
ビン()
組み込み関数を:
関数CURDATE SELECTを(実行する)、
ブログ
IDタイトルCTIME
1 2019から11 ASDF。
2 2019から11 ASDF
3 2019から10 ASDF。
2019から10 ASDF。4
CTIMEを選択して、COUNT(1)CTIMEブロググループから
DATE_FORMAT(CTIME、 "%Y-%mを")を選択し、COUNT(1)DATE_FORMATグループブログ(CTIME、 "%Y-%のM")から
2019年2 -11
2019から10 2
カスタム関数(戻り値):
DELIMITERが¥¥
関数F1(登録
I1のINT、
I2のint)を
戻り値int
BEGIN
DECLARE NUM intデフォルト0;
SET NUM = I1 + I2、
リターン(NUM)。
ENDの\\
DELIMITER。
F1は、SELECT(1100);
4.ストアドプロシージャ
のMySQL =>調理するSQL文に保存されているエイリアス
)エイリアス(
SQLの代替書き込みするプログラマのため
の実施例を:
MySQLのストアドプロシージャは、
ストアドプロシージャを呼び出す
:第二の方法
MySQLを:。。
プログラム:SQL文の
3つの方法:
MySQLの:。。
手順:クラスとオブジェクト(SQL文)
1.簡単な
手順P1を(作成)
BEGIN
学生からのSELECT *;
INSERT INTO教師(TNAME)の値( "CT");
ENDの
コールP1()
cursor.callproc( 'P1')
2 。パラメータ(IN、OUT、INOUT)
DELIMITER //
(手順P2を作成し
、int型N1に
N2 int型で
)
BEGIN
学生> N1からSELECT * WHERE SID;
END //
DELIMITER。
コールP2(12,2)
cursor.callproc( 'P2'、(12,2))
3.参数うち
区切り文字//は、
(プロシージャP3を作成し
、N1 int型に
N2 int型inoutの
)
BEGIN
123123 = n2を設定します。
学生からどこSID> N1 *選択します。
END //
区切り文字。
セットする@ V1 = 10;
コールP2(12、@ v1が)
V1 @選択します。
@ _p3_0 = 12を設定
@ _p3_1 = 2 SER
コールP3(@_ P3_0、P3_1 _ @)
、選択する@ _p3_0 @ _ P3_1
cursor.callproc( 'P3'、(12,2))
R1 = cursor.fetchall()
プリント(R1)
cursor.execute( '_p3_0 @を選択し、@ _ P3_1')
R2 = cursor.fetchall()
プリント(R2)
=======>特別な
伝送パラメータがあってもよい:INOUT OUTに
。Bのpymysql
Cursor.callproc( 'P3'、(12,2))
R1 = cursor.fetchall()
プリント(R1)
cursor.execute( 'SELECT @の_p3_0、@ _ P3_1')
R2 = cursor.fetchall()
印刷(R2)は
なぜ着手した結果は、戻り値を偽造していますか?
//デリミタは
手順P3(登録
N1はintに、
OUT N2 INT実行結果が1,2を識別するためのストアドプロシージャ
)
BEGIN
INSERT INTO VVを(..)
INSERT INTO VV(..)
INSERT INTO VV(..)
。INSERT INTOをVV(..)
INSERT INTO VV(..)
INSERT INTO VV(..)
END //
DELIMITER;
4.トランザクション
DELIMITER //
手順P4(作成
OUTのint型のステータス
)
BEGIN
文が異常{実行された場合1.
SETステータス1 =;
ROLLBACK;
}
トランザクションを開始
-チアカウント100から減算
Fangshaoウェイ90プラスアカウント-
-张根账户加10
COMMIT;
结束
セットステータス= 2。
END //
区切り文字。
===============================
区切り文字が¥¥
PROCEDUREのP5を作成します(
OUT p_return_code tinyint型
)
BEGIN
のSQLExceptionがためのDECLARE終了ハンドラ
BEGIN
- -エラー・
セットp_return_code = 1。
ロールバック;
終わり;
トランザクションを開始。
TB1から削除します。
TB2に挿入(名)の値( '7');
コミット;
- SUCCESS
に設定p_return_code = 2。
END \\
区切り文字。
5.游标
区切り文字//
作成手順のP6()
開始
宣言ROW_ID INTを、-自定义变量1つの
宣言ROW_NUM int型。-自定义变量2
INT DEFAULTをFALSEに行わ宣言。
一時int型を宣言する。
Aから選択ID、numのmy_cursorカーソルを宣言。
= TRUE行われ、NOT FOUND SETのハンドラを続ける宣言。
オープンmy_cursor;
XXOO:LOOPは、
フェッチmy_cursor ROW_IDに、ROW_NUM。
行われた場合、その後
XXOOを残します。
END IF;
設定温度= ROW_ID + ROW_NUM。
B(数)の値(TEMP)に挿入します。
エンドループXXOO。
近くmy_cursor;
最後//
delimter。
6.动态执行SQL(SQL防注入)
区切り文字は//
(手続きP7を作成します
中TPL VARCHAR(255)、
Argをint型で
)
開始
1.前は正当なものSQL文を検出
2. SQL = + argはTPLフォーマットされた
3. SQL文を実行
SET @xo = Argの間
からXXX「SELECT * FROM PREPARE WHERE SID学生>「;?
使用した@xo XXX EXECUTE;
DEALLOCATEは、製品版を準備し;
終了//
delimter;
コールP7(、9 "以上にid>に述べたところからSELECT * TB?")
===>
DELIMITER \\
CREATE PROCEDURE P8を(
中int型NID
)
BEGIN
SET NID = @nid;
のProd PREPAREから'SELECT * WHERE SID学生>から?';
EXECUTEのProd @nid使用するステップと、
DEALLOCATEは、製品版を準備し;
END \\
区切り文字を、
データベース関連のアクションを:
1. SQL文*****
- XXからSELECT XX();
2. MySQLが提供される内部機能の使用
操作は:
、SQLの質問は*****
第二に、データベースの
テーブルには:Eメール性別でID名
ALEX1
300万行は
プレビュー:
5.インデックス
6. ORM操作SQLAlchmyを
-データクラスのオブジェクトを操作します