日付19データベース制約

6780 ワード

データベース制約
  • ソートクエリ
  • 集約関数:1列のデータを1つの全体として縦方向の計算を行います.
  • グループクエリー:
  • ページングクエリ
  • 拘束
  • データベースの設計
  • データベースのバックアップとリストア
  • クエリーのソート
  • 構文:order by句*order byソートフィールド1ソート方式1、ソートフィールド2ソート方式2...
  • ソート方法:*ASC:昇順、デフォルト.*DESC:降順.
  • 注意:*複数のソート条件がある場合、現在のエッジの条件値が同じである場合、第2の条件が判断されます.

  • ≪集約関数|Aggregate Function|oraolap≫:列のデータを全体として縦方向の計算を行います.
  • count:個数1を計算する.一般的に空でない列を選択:プライマリ・キー2.count(*)
  • max:計算最大値
  • min:最小値
  • を計算
  • sum:計算および
  • avg:計算平均値
  • 注意:null値を除外する集約関数の計算.ソリューション:1.計算のために空でない列を選択します.IFNULL関数
  • グループクエリー:
  • 構文:groupbyパケットフィールド;*注意:1.グループ化後のクエリーのフィールド:グループ化フィールド、集約関数(グループ化後のselectの後のフィールド)2.whereとhavingの違いは?1.whereは、パケットの前に限定され、条件を満たさない場合、パケットには関与しない.havingはグループ化後に限定する、結果を満たさなければクエリされない.where後に集約関数を付けることはできません.havingは集約関数の判断を行うことができます.
     --       。     、       
    
     SELECT sex , AVG(math) FROM student GROUP BY sex; (    ,               /    )
     
     --       。     、       ,  
     
     SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;
     
     --        。     、       ,     :    70   ,     ( where   ,       )
     SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;
     
     --        。     、       ,     :    70   ,     ,    。     2  
     (where     group by  ,having    group by   )
     SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
     
     SELECT sex , AVG(math),COUNT(id)    FROM student WHERE math > 70 GROUP BY sex HAVING    > 2;
    


  • ページングクエリ
  • 構文:limitから始まるインデックス、各ページのクエリーの数.
  • 式:開始インデックス=(現在のページ番号-1)*各ページに表示されるエントリ数-各ページに3つのレコード
     	SELECT * FROM student LIMIT 0,3; --  1 
     	
     	SELECT * FROM student LIMIT 3,3; --  2 
     	
     	SELECT * FROM student LIMIT 6,3; --  3 
    
     3. limit    MySQL"  "
    
  • が表示されます.
    拘束
  • 概念:表中のデータを限定し、データの正確性、有効性、完全性を保証する.
  • 分類:1.プライマリ・キー制約:primary key 2.空でない制約:not null 3.一意の制約:unique 4.外部キー制約:foreign key
  • 非空の制約:not null、ある列の値はnull 1ではありません.テーブルの作成時に制約CREATE TABLE stu(id INT、NAME VARCHAR(20)NOT NULL–nameが空でない)を追加します.2.テーブル作成後、空でない制約ALTER TABLE stu MODIFY NAME VARCHAR(20)NOT NULLを追加する.3.nameの非空拘束ALTER TABLE stu MODIFY NAME VARCHAR(20)を削除する.
  • 一意の制約:unique、カラムの値を繰り返すことはできません.注意:*一意の制約にはNULL値がありますが、nullとして記録するレコードは1つしかありません.テーブルの作成時に、一意制約CREATE TABLE stu(id INT、phone_number VARCHAR(20)UNIQUE–携帯電話番号)を追加します.3.一意制約ALTER TABLE stu DROP INDEX phone_を削除するnumber; 4.テーブル作成後、一意制約ALTER TABLE stu MODIFY phone_を追加number VARCHAR(20) UNIQUE;
  • プライマリ・キー制約:primary key.
  • 注意:1.意味:空でない唯一の2.1つのテーブルには、プライマリ・キーとして1つのフィールドしかありません.プライマリ・キーは、テーブルに記録する一意の識別子
  • である.
  • テーブルの作成時に、プライマリ・キー制約create table stu(id int primary key、--idにプライマリ・キー制約name varchar(20))を追加します.
  • 主キーALTER TABLE stu DROP PRIMARY KEYを削除する.
  • テーブル作成後、マスタキーALTER TABLE stu MODIFY id INT PRIMARY KEYを追加する.
  • 自動成長:
  • コンセプト:カラムが数値タイプの場合auto_を使用incrementは自動成長
  • に値する
  • テーブルの作成時にプライマリ・キー制約を追加し、プライマリ・キーの自己成長create table stu(id int primary key auto_increment、--idにプライマリ・キー制約name varchar(20))を完了する.
  • 自動成長ALTER TABLE stu MODIFY id INTを削除する.
  • 自動成長ALTER TABLE stu MODIFY id INT AUTO_を追加INCREMENT;


  • 外部キー制約:foreign keyは、テーブルとテーブルを関係させ、データの正確性を保証します.1.テーブルの作成時に、外部キー*構文を追加できます:create tableテーブル名(...外部キー列constraint外部キー名foreign key(外部キー列名)referencesプライマリテーブル名(プライマリテーブル列名);2.外部キーALTER TABLE表名DROP FOREGN KEY外部キー名を削除する.3.テーブルを作成した後、外部キーALTER TABLEテーブル名ADD CONTRAINT外部キー名FOREGN KEY(外部キーフィールド名)REFERENCESメインテーブル名(メインテーブル列名)を追加する.4.カスケード操作:メインテーブルのメインキーの変更はサブテーブルのデータに影響し、連動操作である.カスケード操作構文の追加:ALTER TABLE表名ADD CONTRAINT外部キー名FOREGN KEY(外部キーフィールド名)REFERENCESメインテーブル名(メインテーブル列名)ON UPDATE CASCADE ON DELETE CASCADE;2.分類:1.カスケード更新:ON UPDATE CASCADE 2.カスケード削除:ON DELETE CASCADE
  • データベースの設計
    1.        
    	1.   :
    		1.    (  ):
    			*  :     
    			*   :          ,            
    		2.    (   ):
    			*  :     
    			*   :         ,            
    		3.    :
    			*  :     
    			*   :             ,              
    	2.     :
    		1.    (   ):
    			*  :     
    			*     :         ,         。
    		2.    :
    			*  :     
    			*     :                 。           ,              ,          
    		3.    (  ):
    			*  :     
    			*     :       ,                     。
    
    	3.   
    		--           tab_category
    		-- cid         ,    
    		-- cname           ,  ,    100
    		CREATE TABLE tab_category (
    			cid INT PRIMARY KEY AUTO_INCREMENT,
    			cname VARCHAR(100) NOT NULL UNIQUE
    		);
    		
    		--         tab_route
    		/*
    		rid       ,    
    		rname         ,  ,    100
    		price   
    		rdate     ,    
    		cid   ,    
    		*/
    		CREATE TABLE tab_route(
    			rid INT PRIMARY KEY AUTO_INCREMENT,
    			rname VARCHAR(100) NOT NULL UNIQUE,
    			price DOUBLE,
    			rdate DATE,
    			cid INT,
    			FOREIGN KEY (cid) REFERENCES tab_category(cid)
    		);
    		
    		/*      tab_user
    		uid     ,   
    		username       100,  ,  
    		password      30,  
    		name        100
    		birthday   
    		sex   ,      1
    		telephone    ,    11
    		email   ,      100
    		*/
    		CREATE TABLE tab_user (
    			uid INT PRIMARY KEY AUTO_INCREMENT,
    			username VARCHAR(100) UNIQUE NOT NULL,
    			PASSWORD VARCHAR(30) NOT NULL,
    			NAME VARCHAR(100),
    			birthday DATE,
    			sex CHAR(1) DEFAULT ' ',
    			telephone VARCHAR(11),
    			email VARCHAR(100)
    		);
    		
    		/*
    		      tab_favorite
    		rid      id,  
    		date     
    		uid    id,  
    		rid   uid     ,      ,                
    		*/
    		CREATE TABLE tab_favorite (
    			rid INT, --   id
    			DATE DATETIME,
    			uid INT, --   id
    			--       
    			PRIMARY KEY(rid,uid), --     
    			FOREIGN KEY (rid) REFERENCES tab_route(rid),
    			FOREIGN KEY(uid) REFERENCES tab_user(uid)
    		);
    

    ​ 2. データベース設計の様式*概念:データベースを設計する際に従う必要があるいくつかの規範.後のパターンの要求に従うには,まず前のすべてのパターンの要求に従わなければならない.
    		        ,         ,            ,                 ,         ,            。
    		            :    (1NF)、    (2NF)、    (3NF)、  -    (BCNF)、    (4NF)     (5NF,      )。
    
    	*   :
    		1.     (1NF):               
    		2.     (2NF): 1NF    ,            ( 1NF                   )
    			*     :
    				1.     :A-->B,    A  (   )  ,      B    。  B   A
    					  :  -->  。  (  ,    ) -->   
    				2.       :A-->B,   A      , B           A          。
    					  :(  ,    ) -->   
    				3.       :A-->B,   A      , B            A          。
    					  :(  ,    ) -- >   
    				4.       :A-->B, B -- >C .     A  (   )  ,      B    ,   B  (   )        C    ,   C        A
    					  :  -->  ,  -->   
    				5.  :       ,        ,            ,      (   )     
    					  :     :(  ,    )
    					*    :          
    					*     :         
    					
    		3.     (3NF): 2NF   ,                ( 2NF         )
    

    データベースのバックアップとリストア
    1.    :
    	*   :
    		*   : mysqldump -u    -p         >      
    		*   :
    			1.      
    			2.      
    			3.      
    			4.     。source     
    2.      :