非プロフェッショナルコードを学ぶ13週間SQL


SQL(Structured Query Language)
SQLはデータベース言語であり、リレーショナル・データベースで使用されます.
SQL構文は、MySQL、Oracle、SQLite、PostgreSQLなど、さまざまなデータベースで使用できます.
SQLはデータベースプログラミング言語です.
データベースにクエリーを送信して、必要なデータを取得または挿入できます.
SQLを使用するには、データに固定された構造が必要です.
🚩 SQL基本構文
  • Select
  • Where
  • And, Or, Not
  • Order By
  • Insert Into
  • Null Values
  • Update
  • Delete
  • Count
  • Like
  • Wildcards
  • Aliases
  • Joins
  • Inner Join
  • Left Join
  • Right Join
  • Group By
  • 🚩 データベース用語
  • SQL Create DB
  • SQL Drop DB
  • SQL Create Table
  • SQL Drop Table
  • SQL Alter Table
  • SQL Not Null
  • SQL Unique
  • SQL Primary Key
  • SQL Foreign Key
  • SQL Default
  • SQL Auto Increment
  • SQL Dates
  • 🚩 データベース関連コマンド
    💡 データベースの作成
    CREATE DATABASE 데이터베이스_이름;
    💡 データベースの使用
    データベースを使用してテーブルを作成、変更、または削除するには、まずデータベースを使用するコマンドを発行する必要があります.
    USE 데이터베이스_이름;
    💡 テーブルの作成USEを使用してデータベースを選択すると、テーブルを作成できます.
    CREATE TABLE user (
    	id int PRIMARY KEY AUTO_INCREMENT,
    	name varchar(255),
    	email varchar(255)
    );
    SQLコンソールでは、Enterキーを使用して複数行のコードを入力できます.
    💡 表情報の表示
    DESCRIBE user;
    userテーブルについて
    mysql> describe user;
    +-------+--------------+------+-----+---------+----------------+
    | Field | Type         | Null | Key | Default | Extra          |
    +-------+--------------+------+-----+---------+----------------+
    | id    | int          | NO   | PRI | NULL    | auto_increment |
    | name  | varchar(255) | YES  |     | NULL    |                |
    | email | varchar(255) | YES  |     | NULL    |                |
    +-------+--------------+------+-----+---------+----------------+
    3 rows in set (0.00 sec)
    🚩 SQLでよく使用されるコマンド
    🔎 SELECT
    SELECTは、データセットに含まれる特性に固有です.
    SELECT 'hello world' // 일반 문자열
    SELECT 9             // 숫자
    SELECT 13 + 5        // 간단한 연산
    🔎 FROM
    テーブルに関連するアクションを入力する必要があります.FROMの後に結果をエクスポートするデータベース・テーブルが表示されます.
    SELECT 특성_1
    FROM 테이블_이름
    // 특정 특성을 테이블에서 사용
    
    SELECT 특성_1, 특성_2
    FROM 테이블_이름
    // 몇 가지의 특성을 테이블에서 사용
    
    SELECT *
    FROM 테이블_이름
    // 테이블의 모든 특성을 선택
    // *은 와일드카드로 전부 선택할 때에 사용됨.
    🔎 WHERE
    フィルタリングの役割を果たすクエリー文.
    SELECT 특성_1, 특성 2
    FROM 테이블_이름
    WHERE 특성_1 = "특정 값"
    // 특정 값과 동일한 데이터 찾기
    
    SELECT 특성_1, 특성_2
    FROM 테이블_이름
    WHERE 특성_2 < > "특정 값"
    // 특정 값을 제외한 값을 찾기
    
    SELECT 특성_1, 특성_2
    FROM 테이블_이름
    WEHRE 특성_1 > "특정 값"
    
    SELECT 특성_1, 특성_2
    FROM 테이블_이름
    WEHRE 특성_1 <= "특정 값"
    // 특정 값보다 크거나 작은 데이터를 필터할 때에는 '<', '>', 
    // 비교하는 값을 포함하는 '이상', '이하' 값은 '<=', '>='을 사용한다.
    
    SELECT 특성_1, 특성_2
    FROM 테이블_이름
    WHERE 특성_2 LIKE "%특정 문자열%"
    // 문자열에서 특정 값과 비슷한 값들을 필터할 때는 'LIKE'와 '\%' 혹은 '\*'를 사용한다.
    
    SELECT 특성_1, 특성_2
    FROM 테이블_이름
    WHERE 특성_2 IN ("특정값_1", "특정값_2")
    // 리스트의 값들과 일치하는 데이터를 필터할 때는 'IN'을 사용한다.
    
    SELECT *
    FROM 테이블_이름
    WHERE 특성_1 IS NULL
    // 값이 없는 경우 'NULL'을 찾을 때는 'IS'를 사용한다.
    
    SELECT *
    FROM 테이블_이름
    WHERE 특성_1 IS NOT NULL
    // 값이 없는 경우를 제외할 때는 'NOT'을 추가해 사용한다.
    🔎 ORDER BY
    返されたデータ結果をどの基準で並べ替え、出力するかを決定します.
    SELECT *
    FROM 테이블_이름
    ORDER BY 특성_1
    // 기본 정렬은 오름차순
    
    SELECT *
    FROM 테이블_이름
    ORDER BY 특성_1 DESC
    // 내림차순 정렬
    🔎 LIMIT
    出力結果のデータ数を決定できます.クエリ文で使用されたときに最後に追加されます.
    SELECT *
    FROM 테이블_이름
    LIMIT 200
    // 데이터 결과를 200개만 출력한다.
    🔎 DISTINCT
    ユニークな価格をご希望の場合は、SELECT DISTINCTをご利用ください.
    SELECT DISTINCT 특성_1
    FROM 테이블_이름
    // 특성_1을 기준으로 유니크한 값들만 선택한다.
    
    SELECT
    	DISTINCT
    		특성_1
    		,특성_2
    		,특성_3
    FROM 테이블_이름
    // 특성_1, 특성_2, 특성_3의 유니크한 '조합' 값들을 선택한다.
    🔎 INNER JOININNER JOINまたはJOINを実行することができる.
    SELECT *
    FROM 테이블_1
    JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
    // 둘 이상의 테이블을 서로 공통된 부분을 기준으로 연결한다.
    🔎 OUTER JOINOUTER JOINには複数の選択肢があります.
    SELECT *
    FROM 테이블_1
    LEFT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
    // 'LEFT OUTER JOIN'으로 LEFT INCLUSIVE를 실행한다.
    
    SELECT *
    FROM 테이블_1
    RIGHT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
    // 'RIGHT OUTER JOIN'으로 RIGHT INCLUSIVE를 실행한다.
    複数のクエリーを一度に書き込む
  • Brazilからの顧客を都市別に分類し、都市数の降順に並べた.
  • Customerd昇順で3つの結果のみを要求
    SELECT c.CustomerId, c.FirstName, count(c.City) as 'City Count'
    FROM customers AS c
    JOIN employees AS e ON c.SupportRepId = e.EmployeeId
    WHERE c.Country = 'Brazil'
    GROUP BY c.City
    ORDER BY 3 DESC, c.CustomerId ASC
    LIMIT 3