MySQLのユニークインデックス、外部キーの変種、SQL文、補足データライン操作

0、一意のインデックス

 

 

  ユニークNUMなるための唯一の制限は、numがユニークである表し、uqlはインデックス名であります

 

 

 

 上記の共同インデックスです:numとまったく同じxxをすることはできません

 

 1、外部キーの変種

ユーザテーブルと部署テーブル。

  ユーザー:
    1アレックス1つの
    2ルート1
    3 2エゴン
    4 laoyao 3つの

  部門:
    1サービス
    2セキュリティ
    3 PR
===「1対多

 

Bブログユーザテーブルとテーブル
  ユーザテーブル:
    1アレックス
    2ルート
    3エゴン。
    4 laoyaoする。
  ブログテーブル:
            FK()+ユニーク
    。。1 / yuanchenqi / 4
    。2 / alex3714 / 1
    3 / asdfasdf / 3。
    4 / FFFFFFFF / 2。

===>一から一

  プログラムコード:

表userinfo1(登録
IDのINT AUTO_INCREMENT主キー、
名char( 10 )、
性別CHAR( 10 )、
電子メールはvarchar( 64 
)、エンジン = InnoDBのデフォルトのcharset = UTF8と、
テーブルの管理(作成 、IDのint型
ではないAUTO_INCREMENT、主キーは、null ユーザー名はvarchar( 64)ではないヌル、 パスワードVARCHAR( 64)ではないヌル、 user_idはint型ではないnullで、 ユニークuq_u1(USER_ID)を、 制約は、FOREIGNキー(user_idの)REFERENCES userinfo1(IDをfk_admin_u1 ) )エンジン = InnoDBのデフォルトのcharset = UTF8。

 

C。多くの多くの

 

 

 

表userinfo2(登録
IDのINT AUTO_INCREMENT主キー、
名char( 10 )、
性別CHAR( 10 )、
電子メールはvarchar( 64 
)、エンジン = InnoDBのデフォルトのcharset = UTF8と、

表ホスト(登録
IDのint AUTO_INCREMENTプライマリ・キー、
ホスト名CHAR( 64 
)、エンジン = InnoDBのデフォルトのcharset = UTF8と、

テーブルuser2host(作成
ID int型のAUTO_INCREMENT、主キー、
ユーザーID int型ではないnullで、
ホストID int型ではないヌルを 
ユニークuq_user_host(ユーザーID、ホストID)を、
、FOREIGNキーfk_u2h_user CONSTRAINT(ユーザーID)REFERENCESのuserinfo2(ID) 
制約が外部キーをfk_u2h_host(ホストID)を参照ホスト(ID) エンジン = InnoDBのデフォルトのcharset = UTF8。

 3、SQLステートメントは、データ操作の行を追加します

 3.1増加

INSERT INTO TB11(名前、年齢)の値(' アレックス'、12である);                  #1 TB11に挿入行 
INSERT INTO TB11(名前、年齢)の値(' アレックス'、12である)、(' ルート'、18である);      TB11は、複数のデータの中に挿入 
INSERT INTO TB12(名前、年齢)SELECT名前、年齢から TB11;         TB11内TB12のデータをコピーします
 

3.2は削除します

削除からTB12。
削除から ID!= 2 TB12  
削除からのid = 2 TB12  
削除から id>の2 TB12  
削除から ID> = 2は、TB12  
削除から ID> = 2 TB12 または名前= ' アレックス'

変更3.3

更新TB12セット名= ' アレックス' ID> 12  NAME = ' XX ' 
更新TB12セット名 = ' アレックス'、年齢= 19、ID> 12  NAME = ' XX '

3.4チェック

SELECT * から、TB12     
SELECT ID、名前から、TB12 
、SELECT ID名から ID> 10 TB12 または名前= ' XXX ' ; 
SELECT名AS CNAME、年齢から、TB12   #1 チェックデータとヘッダ名にCNAME 
SELECT ID、CNAMEなどの名前から ID> 10 TB12 または名前= ' XXX ' ; 
SELECT名前、年齢、 11 から TB12; 余分な1、すべてのデータのための11
   

その他:

SELECT * から!TB12 1 WHERE ID =。
SELECT * から TB12 WHERE ID (1,5,12);              データid 1,5,12フェッチ 
SELECT *をから TB12 WHERE ID ない (1,5,12) ;          #は、番号データ1,5,12取る 
SELECT * から ID TB12 (SELECT ID から TB11) TB12 IDと、第1 TB11 IDを取り出し、調査を 
SELECT * から。WHERE ID 5〜TB12  12;        5〜12のデータID(閉区間)をフェッチ

通配符:

SELECT * からのような名前TB12     #は、データを最初に名前を確認してくださいは、 
SELECT * から TB12 WHERE名のように%%   #のあるバンドでの調査データ名を 
SELECT * からの WHERE名前のようTB12 A_     このようAB、AGとして、1ビットのデータのみで、バックで名前が開始を確認します

ページング:

SELECT * から TB12限界10、            10の前にチェック 
SELECT * から TB12制限0,10;          は、最初の行0から読み出しを開始、行10が読み込まれ、 
SELECT * から TB12限界10,10;         は、ライン10から始まります、読み取りライン10を読み取り、 
SELECT *をから TB12限界20,10;         線20、リード線10からの読み出しを開始; 
SELECT * から TB12限界10 20オフセット;   #は、ライン20からの読み出しを開始、リード10行を取る; 
                        
、Pythonバインディング]タブ: 
ページ=入力(' ビューにページを入力してください' 
ページ = INT(ページ)
(ページ -1)* 10 
SELECT* から TB12限界0,10;    表示ページ1つのデータ 
SELECT * から TB12限界10、10; 2   最初の二つのデータを表示します

並べ替え:

SELECT * から TB12上記のID DESC上記順;            前記ID上記の行降順 
* SELECTをから上記のID ASC上記順TB12;            小から大行に前記ID上記 
SELECT * から上記のID DESC上記の順序によってTB12年齢DESC;  年齢が行を降順、IDの下降列(同年齢の数、下降行IDに係る場合) 
SELECT * からのID DESC制限10によってTB12注文;   10データ後に採取

部門と従業員のテーブルを作成します:

表のdepartment5(作成
ID AUTO_INCREMENT主キーint型、
タイトルVARCHAR(32)
エンジン = InnoDBのデフォルトのcharset = ; UTF8を
INSERT INTOの
department5(タイトル)の値(' マネージャー')、 ' 販売')、 ' 管理')、 ' 金融)';
   
表userinfo5作成(
ID int型のAUTO_INCREMENT、主キー、
名前VARCHAR( 32 )、
part_id INTを、
制約はFOREIGN KEY(part_id)REFERENCES department5(ID)fk_user_part 
エンジン) = InnoDBのデフォルトのcharset = UTF8と、
挿入
userinfo5 (名前、part_id)の値(' 杨涵'、 2)、(' 大波'、 1)、(' 高月'、 2)、(' 送气'、 3)、(' 小白'、 4 );

  

グループ化:

最大:part_id同じ場合を押して、分類をpar_id、彼はそのIDの最大の分類ました:数
 
加算分で、合計、平均を集計関数の結果のための二次スクリーニング場合は?持っ使用する必要があります
:あなたが1より大きいをフィルタリングしたい場合には、例えば、IDをpart_id 集約関数は、後で追加することはできませんが、どこもを使用することができます





 

 

 でも、手術台:

 

 

 做法:department5どこuserinfo5.part_id = department5.id、userinfo5から選択*

 

 

 

 これは、次の文言をお勧めします:

 

 

 劉洋に該当するdepartment5 userinfo5がないので#1 userinfo5は劉洋が表示されていない、全番組を残し、(1)userinfo5.part_id = department5.idにdepartment5に参加左userinfo5 SELECT * FROM

 

 

 

   #department5すべての権利;(2)右userinfo5.part_id = department5.idにdepartment5参加userinfo5から選択*

 

 

(3)選択userinfo5.part_id = department5.idにdepartment5に参加innder userinfo5から*;ヌルがとき#隠しラインが表示されます

統計データの#Userinfo5数;(4)選択数(ID)userinfo5から

 

 

練習帳:http://www.cnblogs.com/wupeiqi/articles/5729934.html

おすすめ

転載: www.cnblogs.com/zh-xiaoyuan/p/11869900.html