SQLコンセプトとSQLクエリーのまとめ[TIL 2021.08.26]


SQL


Structured Query Languageの略で、構造化Query言語に翻訳

検索


直訳すると「疑問文」の意味になります
保存された情報のフィルタリングの詳細について

SQLクエリー文


CREATE DATABASE


新しい
  • データベースを作成します.
  • 基本構文
    CREATE DATABASE[データベース名]
    CREATE DATABASE testDB

    DROP

  • データベース自体を削除するための
  • テーブルを削除する場合も
  • を使用できます.
    基本構文
    DROP DATABASE[データベース名]
    DROP TABLE[テーブル名]
    DROP DATABASE testDB;
    //데이터 베이스 자체를 삭제
    
    DROP TABLE Persons;
    //해당 테이블만 삭제.

    ALTER

  • 表における列の追加と削除には
  • を使用します.
    基本構文
    ALTER TABLE「テーブル名」ADD「追加するカラム名」データ型(データサイズ)カラム属性
    ALTER TABLE[テーブル名]DROP COLUMN[削除するカラム名]
    ALTER TABLE Persons
    ADD Birthday DATE;
    //Persons라는 테이블에 Birthday라는 컬럼을 만듬 이때 속성은 DATE임.
    
    
    ALTER TABLE Persons
    DROP COLUMN Birthday;
    //Persons라는 테이블의 Birthday라는 컬럼을 날려버림.
    

    TRUNCATE

  • DELETEと異なり、テーブル内のデータは一度に
  • 削除される.
  • テーブルの最初の作成時にストレージのみを保持
  • DROPとは異なり、DROPはテーブルを完全に破棄し、TRUNCATEはテーブルを保持するため、
  • を繰り返し使用することができる.
    基本構文
    TRUNCATE TABLE[テーブル名]

    CRAEAT TABLE

  • データベースに新しいテーブルを追加するための
  • CREATE DATABASEを使用してデータベースを作成し、データベース宣言を使用してデータベースを使用し、CREAT TABLE[テーブル名]を使用してテーブル
  • を作成します.
  • テーブルを作成する場合は、フィールド(カラム)も作成する必要があります.
  • 基本構文
    CREATE TABLE 表の名前
    
    CREATE TABLE Persons(
      PersonID int,
      LastName varchar(255),
      FirstName varchar(255),
      Address varchar(255),
      City varchar(255) 
    );
    //PersonID라는 필드를 만듬. 해당 필드의 타입은 int(숫자임)
    //LastName과 나머지 필드들은 문자열이며 최대 255자리수까지 입력가능.

    Select

  • SELECTは、データセットに含む特性
  • に固有である.
    SELECT DISTINCT Country FROM Customers;
    //Customers 테이블에서 Country라는 필드만 중복없이 출력해라
    
    SELECT City FROM Customers;
    //Customers 테이블에서 City라는 필드만 출력해라
    
    SELECT* FROM Customers;
    //Customers 테이블에서 모든 필드를 다 출력해라

    From

  • テーブルを処理するときは、入力する必要があります.
    FROMの後ろには
  • データベーステーブルがあり、結果をエクスポートするデータベーステーブルを示しています.

    Distinct

  • 重複除外用
  • selectセクションで異なるキーワードを指定するだけでよいため、クエリは複雑ではなく、簡潔な
  • 独自の値を取得するには、SELECT DISTINT
  • を使用します.
    SELECT DISTINCT Country FROM Customers;
    //Customers 테이블에서 Country라는 필드만 중복없이 출력해라

    Where

  • フィルタとしてのクエリ文WHEREはオプションであり、簡単に言えば条件文である.
  • SELECT * FROM Customers 
    WHERE City= 'Berlin';
    //Customers라는 테이블에서 City라는 필드명에 'Berlin'이라는 값이 들어가 있는것의 row를 전부다 출력하라.
    
    SELECT * FROM Customers
    WHERE NOT City= 'Berlin';
    //Customers라는 테이블에서 City라는 필드명에 'Berlin'이라는 값이 들어가 있는것만 빼고 모든 값을 전부다 출력하라.
    
    SELECT* FROM Customers
    WHERE City = 'Berlin'
    AND PostalCode = 12209;
    //Customers라는 테이블에서 City라는 필드명에 'Berlin'이라는 값과 PostalCode라는 필드명에 12209라는 값이 있는 것만 출력하라.
    
    SELECT* FROM Customers
    WHERE City = 'Berlin'
    OR PostalCode = 12209;
    //Customers라는 테이블에서 City라는 필드명에 'Berlin'이라는 값과 PostalCode라는 필드명에 12209라는 값이 하라나도 있다면 해당되는 것은 다 출력하라.

    Order By

  • データの結果をどのような基準で並べ替えて出力するかを決定するORDER BYが選択可能である.
  • Defalt値はACS(昇順)であり、DESC(降順)に設定してもよい.
  • オーダーByでは、複数のオーダーを使用できますが、もしそうであれば、使用して区別する必要があります.
  • SELECT * FROM Customers
    ORDER BY City ;
    //Customer라는 테이블에서 City라는 필드명의 값이 있는것들을 오름차순으로 출력
    
    SELECT * FROM Customers
    ORDER BY City DESC;
    //Customer라는 테이블에서 City라는 필드명의 값이 있는것들을 내림차순으로 출력
    
    SELECT * FROM Customers
    ORDER BY Country, City;
    //우선 Country를 기준으로 오름차순으로 정렬을 한번 한 후, 그 값을 바탕으로 City를 기준으로 오름차순으로 정렬함. 두번째 정렬 에서 Country값의 순서는 변하지 않음. 오직 City의 순서만 변경 
    

    Insert

  • テーブルにデータを追加できます.
  • insertの後、入ってフォローします.
  • きほんこうぞう
    INSERT INTOテーブル名(column、column、...)
    VALUE(値1、値2、...)
    INSERT INTO Customers
    (
    CustomerName, 
    Address, 
    City, 
    PostalCode,
    Country
    )
    VALUES(
    'Hekkan Burger',
    'Gateveien 15',
    'Sandnes',
    '4306',
    'Norway'
    )
    ;
    //CustomerName이라는 column에 'Hekkan Buger'를 추가 
    //나머지도 동일, 

    Null

  • は、私が表示するフィールドの値がNullであるかどうかを決定するために使用されます.
  • nullかどうかを確認するには、IS Nullを使用する必要があります.
  • null以外をチェックするには、IS NOT NULLを入力すればよい、
  • .
    SELECT * FROM Customers
    WHERE PostalCode IS NULL;
    //PostalCode라는 필드에 NUll이 있다면 해당 row를 모두 출력
    
    SELECT * FROM Customers
    WHERE PostalCode IS NOT NULL;
    //PostalCode라는 필드의 값이 NULL이 아니라면 해당 row를 모두 출력

    Update

  • 表でデータを変更する場合は
  • を使用します.
  • 通常UPDATEおよびSETは、
  • のセットである
    きほんけいじょう
    UPDATE[テーブル]SET[column]=「変更する値」WHERE[条件]
    条件がない場合は、テーブル内のすべてのカラムが変更する値にUPDATEされます.
    UPDATE Customers
    SET City = 'Oslo';
    //Customers라는 테이블의 City라는 column의 모든값을 Oslo로 바꾼다.
    
    UPDATE Customers
    SET City = 'Oslo'
    WHERE Country = 'Norway';
    //Country가 'Norway'일 경우 City를 'oslo'로 변경한다.
    
    UPDATE Customers
    SET City = 'Oslo',
    Country = 'Norway'
    WHERE CustomerID = 32;
    //CustomerID가 32이면 County는 Norway로 City는 Oslo로 변경한다.
    

    Delete


    deleteを使用して
  • テーブルからローを削除
  • deleteの場合、WHERE(条件文)として指定するすべての行が削除され、条件が指定されていない場合、すべての行
  • が削除されます.
  • DELETEの場合、FROMを使用してどのテーブルを削除するかを記入する必要があります.
  • きほんけいじょう
    DELETE FROM[表]WHERE[条件]
    DELETE FROM Customers
    WHERE Country = 'Norway';
    //Country가 Norway인 행을 삭제.
    
    DELETE FROM Customers;
    //Customers의 테이블에서 모든 행을 삭제.

    集約関数MIN()

  • パラメータは、与えられた列の最小値
  • を返す.
  • 主にSELECT文法とともに
  • を使用
    きほんけいじょう
    SELECT MIN(列)FROM[表名]
    SELECT MIN(Price)
    FROM Products;
    //Price column중 가장 낮은 값을 반환
    

    集約関数MAX()

  • パラメータは、与えられたカラムの最大値
  • を返す.
  • 主にSELECT文法とともに
  • を使用
    きほんけいじょう
    SELECT MAX(列)FROM[表名]
    SELECT MAX(Price)
    FROM Products;
    //Price column중 가장 큰 값을 반환

    集約関数COUNT()

  • 表の行番号については、COUNT(*)
  • をクリックします.
    特定の列の数字
  • を決定するには、COOUNT(列名)
  • 一部のカラムの値がnullの場合、カウントされません.
  • きほんけいじょう
    SELECT COUNT()FROM[表名]WHERE条件式
    SELECT * FROM Products
    WHERE Price = 18.00;
    //Products 테이블에서 Price가 18.00인것을 반환
    
    SELECT COUNT(*) FROM Products
    WHERE Price = 18.00;
    //Products 테이블에서 Price가 18.00인 행의 숫자를 알려줌 이때 column명은 COUNT(*)

    集約関数AVG()

  • の平均値を計算する関数
  • きほんけいじょう
    SELECT AVG(列)FROM[表名]
    SELECT AVG(Price)
    FROM Products;
    //Products테이블의 Price 컬럼의 모든 값의 평균을 냄 이때 컬럼명은 AVG(price)

    集約関数SUM()


    特定の列の和を計算する関数

  • きほんけいじょう
    SELECT SUM()FROM[表名]
    SELECT SUM(Price)
    FROM Products;
    //products테이블의 price컬럼의 모든 값을 더한 결과를 알려줌 이때 컬럼명은 SUM(Price)

    Like


    主に
  • WHEREセクションに使用され、部分的に一致する列
  • を検索するために使用される.
  • A%(Aで始まる文字を検索)、%A%(Aを含む文字を検索)、%A(Aで終わる文字を検索)、
  • (Aで始まる2文字を検索)
    きほんけいじょう
    SELECT*FROM[表名]WHERE LIKE[条件]
    SELECT * FROM Customers
    WHERE City LIKE 'a%';
    //City라는 컬럼에서 a로 시작하는 열을 반환
    
    SELECT * FROM Customers
    WHERE City LIKE '%a';
    //City라는 컬럼에서 a로 끝나는 열을 반환
    
    SELECT * FROM Customers
    WHERE City LIKE '%a%';
    //City라는 컬럼에서 a를 포함하는 열을 반환
    
    SELECT * FROM Customers
    WHERE City LIKE 'a%b';
    //City라는 컬럼에서 a로 시작하로 b로 끝나는 열을 반환
    
    SELECT * FROM Customers
    WHERE City NOT LIKE 'a%';
    //City라는 컬럼에서 a이외의 알파뱃으로 시작하는 열을 반환
    
    SELECT * FROM Customers
    WHERE City LIKE '_a%';
    //City의 두번째 글자가 a인 열을 반환
    
    SELECT * FROM Customers
    WHERE City LIKE '[acs]%';
    //City의 첫번째 글자가 a or c or s 인 열을 반환
    
    SELECT * FROM Customers
    WHERE City LIKE '[a-f]%';
    //City의 첫번째 글자가 a~f인 경우 해당 열을 반환
    
    SELECT * FROM Customers
    WHERE City LIKE '[!acf]%';
    //City의 첫번째 글자가 a,c,f가 아닌경우 해당 열을 반환
    

    IN

  • WHEREセクションで複数の特定の値を選択するSQL演算子
  • 値が
  • カッコ内で一致する場合はtrue
  • 基本構文
    SELECT*FROM[テーブル名]WHERE[カラム名]IN(値,値)
    SELECT * FROM Customers
    WHERE Country IN ('Norway','France');
    //Country의 값이 Norway이거나, France인 값이 있는 열을 반환 둘중에 하나라도 있으면 반환
    
    SELECT * FROM Customers
    WHERE Country NOT IN('Norway', 'France');
    //Country의 값이 Norway, France가 아닌 열을 반환 

    Between

  • は、ある範囲または値の間に
  • と入力される「何の間に」という意味に訳される.
  • BETWEEN AとB:AとBの内容を検索し、
  • にインポートする.
    基本構文
    SELECT*FROM[表]WHERE[列]BETWEND A AND B
    SELECT * FROM Products
    WHERE Price BETWEEN 10 AND 20;
    //Price라는 컬럼중 10~20사이에 있는 값을 반환해라 이때 1과 20도 포함
    
    SELECT * FROM Products
    WHERE Price NOT BETWEEN 10 AND 20;
    //Price라는 컬럼에서 10~20사이에 있지 않은 열을 반환 
    
    SELECT * FROM Products
    WHERE ProductName BETWEEN 'Geitost' AND 'Pavlova';
    //productName에서 이름이 Geitost와 Pavlova사이에 있는 열을 반환 (오름차순)
    

    Alias (as)

  • 別名とも呼ばれ、値に別名を付与し、アクセスを別名として行う.
  • の代表的なコラムではASが多く使われており、
  • SELECT CustomerName,
    Address,
    PostalCode AS Pno
    FROM Customers;
    //기존 컬럼이 PostalCode이지만 간결하고 알기쉽게 하기위해 Alias를 사용하여 Pno로 변경 아래 사진 참조하면 이해가 더 간결
    
    SELECT * FROM Customers AS Consumers;
    //FROM도 Customers라고 쓰기 싫으니 Consumers로 변경해서 사용이 가능.

    Join


    2つ以上のテーブルを接続してデータを取得します:
  • に接続するには、テーブルに少なくとも1つの共通のカラムが必要です.
  • Joinのタイプ
    1.INNERJOIN:内部結合(交差)
    2.LEFT/RIGHT JOIN->サブセット
    以下のブログ記事を参照して、より良い理解を得てください.
    https://pearlluck.tistory.com/46
    下のYouTube 35強と36強を見ると理解にも役立ちます.
    https://www.youtube.com/watch?v=NAuHvZDU15M&t=31s
    SELECT *
    FROM Orders LEFT JOIN Customers
    ON Orders.CustomerID = Customers.CustomerID;
    //Orders를 기준으로 Customers와 Left조인을 하였으며 이때 기준은 각각의 CustomerID라는 컬럼임. 최종적으로는 Orders와 JOIN이 공통적으로 가지고 있는것과 Orders가 독자적으로 가지고 있는것만 합친 후 반환 합쳐질때 customers에만 독자적으로 있는 부분은 null처리됨.
    
    SELECT *
    FROM Orders INNER JOIN Customers
    ON Orders.CustomerID=Customers.CustomerID;
    //INNER조인으므로 Orders와 Customers의 CustomerID가 공통으로 들어가 있는것만 합친 후 반환
    
    SELECT *FROM Orders
    RIGHT JOIN Customers
    ON Orders.CustomerID=Customers.CustomerID;
    //LEFT 조인과 반대
    

    Group By

  • パケットクエリデータ
  • Count関数を使用してデータを問合せた場合、合計数のみが取得されます.各タイプの数を知りたい場合は、列でGROUP BYを使用して各タイプの数を知ることができます.
  • 基本構文
    SELECT列FROM表GROUP BYグループ化する列
    SELECT Count(CustomerID),Country
    FROM Customers GROUP BY Country;
    //customers라는 테이블의 customerID라는 컬럼의 수를 Count로 나타내고 GROUP BY를 사용하여 동일한 Country가 몇개씩 있는지를 나타냄. 여기서 추가로 SELECT Country를 하는 이유는 사용하지 않으면 어느나라가 몇번씩 Count가 되었는지 눈으로 확인하기 어렵기 때문.
    
    SELECT COUNT(CustomerID),Country
    FROM Customers
    GROUP BY Country
    ORDER BY 
    COUNT(CustomerID) DESC;
    //위와 동일하지만 Order BY를 사용해서 Count가 가장 많은 것부터 내림차순으로 정렬하게끔 수행

    下のYouTube 30強を見て、もっと理解しました.
    https://www.youtube.com/watch?v=zf4XyeifrqI
    関連項目:https://www.w3schools.com/sql/exercise.asp?filename=exercise_database7
    https://www.youtube.com/watch?v=zf4XyeifrqI
    https://pearlluck.tistory.com/46