728x90
반응형
728x90

 

🎈 Where 절

SQL의 WHERE 절은 데이터베이스에서 특정 조건을 충족하는 행만을 선택하기 위해 사용됩니다. WHERE 절은 SELECT, UPDATE, DELETE 문에서 사용될 수 있습니다.

  • 가져올 데이터의 조건(filter)을 컴퓨터에게 알려주는 라인입니다. ( 데이터가 너무 많아, 다 불러오려면 과부하가 될 수 있기 때문입니다.)
  • 한 개 이상의 조건을 작성할 수 있으며, And와 Or 조건들을 구분하여 조건을 설정할 수 있습니다. 작성하는 방식은 , “WHERE 컬럼명 연산자 조건”의 순서로 적어줍니다. (데이터는 ‘ ‘ 안에 작성! ) Ex) - 도시가 'Seoul'이고 직업이 'Developer'인 사용자를 선택하는 예시
    SELECT * FROM users WHERE city = 'Seoul' AND occupation = 'Developer';

 

        --문제 6. Customers 테이블에서 Mexico에 사는 사람들 정보를 추출해주세요.
        select * 
            from Customers
            where Country != 'Mexico';
        --column에 들어있는 값들은 전부 문자열로 저장되어 있기 때문에, 찾고자하는 데이터도 ' ' 로 감싸서 작성해야합니다.

        --문제 7. Customers 테이블에서 Mexico에 살지 않는 회원들의 정보를 추출하세요.
        select * 
            from Customers
            where Country != 'Mexico';

        --문제 8. 국가이름이 "S"로 시작하는 국가에 거주하는 사람들 정보를 모두 추출해주세요
        select * 
            from Customers
            where country like "s%";

        --문제 8-2. "S"로 시작하지 않는 국가에 거주하는 사람들 정보 (like와 반대!)
        select * 
            from Customers
            where country not like "s%";

        --문제 8-3. 회원 중 나라 이름의 마지막 알파벳이 A로 끝나는 국가에 거주 중인 사람 정보를 모두 추출해주세요

            like 연산자 사용 예제
            -- 이름이 'John'으로 시작하는 사용자를 선택하는 예시
            SELECT * FROM users WHERE name LIKE 'John%';

            -- 이메일이 '@gmail.com'으로 끝나는 사용자를 선택하는 예시
            SELECT * FROM users WHERE email LIKE '%@gmail.com';

            -- 이름이 'J_n'과 같은 형식의 사용자를 선택하는 예시 (J 다음에 한 글자와 n으로 끝나는 경우)
            SELECT * FROM users WHERE name LIKE 'J_n';

 

  • LIKE 연산자는 특정 문자열 패턴 매칭을 위해 사용됩니다. LIKE 연산자는 특정 패턴과 일치하는 값을 선택하기 위해 WHERE 절과 함께 사용됩니다.%: 0개 이상의 문자와 일치합니다. _: 단일 문자와 일치합니다. []: 지정된 범위 내의 문자와 일치합니다. 예를 들어 **[abc]**는 'a', 'b', 'c' 중 하나와 일치합니다. [^]: 지정된 범위 외의 문자와 일치합니다. 예를 들어 [^abc]는 'a', 'b', 'c' 이외의 문자와 일치합니다.
  • **pattern**에는 와일드카드 문자를 사용할 수 있습니다. 정규표현식이라는 문자를 다룰 수 있는 사항이 입력됩니다. 주요 와일드카드 문자는 다음과 같습니다

 

🎈 Order by절 - order by ‘key(컬럼명)’ (asc/desc)

ORDER BY 구문은 SQL에서 사용되는 명령문으로, 가져온 데이터의 결과를 순서대로 정렬해주는 명령을 작성해주는 라인이며, 정렬 기준을 지정하는데 사용됩니다.
결과 집합을 특정 열(또는 열들)의 값에 따라 오름차순(ASC) 또는 내림차순(DESC)으로 정렬할 수 있습니다. 디폴트 값이 오름차순(asc)이기때문에, 조건부에 아무것도 안 적을 시 자동으로 오름차순 정렬을 수행합니다.
다중조건 , 즉 두 가지 이상의 컬럼에 조건을 줄 수 있습니다. ex) order by colum1 asc, coulm2 desc

ORDER BY 구문은 SELECT 문에서 마지막에 추가되며, 쿼리 결과의 정렬된 순서로 데이터를 반환합니다. 컴퓨터는 A,B,C.. 등을 출력할 때 문자를 숫자로 인식하여(아스키코드) 크기를 비교할 수 있습니다.

 

        SELECT *
            FROM customers
            order by country asc -> 오름차순 A-Z순서로 나라이름이 정렬됩니다.
            limit 10
            ;
            order by 7 desc -> 7번째 컬럼인 country를 기준으로 내림차순으로 정렬하였습니다.
        컬럼을 가지고 정렬을 하지만 컬럼의 이름은 모르고 위치만 알 때 사용하는 방법도 있습니다. 컬럼의 위치에 따라서 숫자를 입력하여 해당 컬럼을 지정할 수 있습니다.

 

 

728x90
반응형

'[ DATABASE]' 카테고리의 다른 글

[SQL] SQL이란?  (0) 2023.06.27
728x90

SQL이란?



SQL은 Structured(구조화된) Query(질문하다) Language(언어)의 약자로, 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 관리하고 조작하기 위해 사용되는 프로그래밍 언어입니다.

SQL은 컴퓨터에게 데이터를 가져오는 일을 시킬 때 쓰는 언어입니다. 데이터베이스에서 데이터를 생성, 수정, 삭제, 검색하는 등 다양한 작업을 수행할 수 있습니다.
정리하면 SQL은 컴퓨터에게 ‘데이터 가져오는일 ( + 조작하는 일)을 시킬 때 쓰는 구조화된 질문을 하는 언어입니다.

 

💡 가장 기본적인 SQL(Read)의 형태 
           → select * from tableName;

- Select : 검색해보자
- * : 모든 정보 ! (와일드 카드라고 부릅니다)
- from : 어떤 저장소에서 가져와
- from 뒤에는 저장소 (table) 이름을 적어서 알려줍니다.

 

🎈 SQL의 4가지 분류

  1. 데이터 정의 언어(DDL, Data Definition Language): 데이터베이스의 구조를 정의하고 관리하는 명령어를 포함합니다. CREATE, ALTER, DROP 등의 명령어를 사용하여 테이블, 인덱스, 뷰 등을 생성하거나 변경할 수 있습니다.

  2. 데이터 조작 언어(DML, Data Manipulation Language): 데이터베이스에 저장된 데이터를 조작하는 명령어를 포함합니다. SELECT, INSERT, UPDATE, DELETE 등의 명령어를 사용하여 데이터를 조회, 삽입, 수정, 삭제할 수 있습니다.

  3. 데이터 제어 언어(DCL, Data Control Language): 데이터베이스의 보안과 권한을 관리하는 명령어를 포함합니다. GRANT, REVOKE 등의 명령어를 사용하여 사용자에게 권한을 부여하거나 회수할 수 있습니다

 

❓ DB(Data Base) 란 ? DB는 데이터를 통합하여 모아두는 공간

데이터베이스(Database)는 체계화된 데이터의 모임으로, 여러 사용자가 공유하여 사용할 수 있도록 구조화된 데이터의 집합입니다.
데이터베이스는 데이터의 저장, 관리, 조작을 위한 기능을 제공하여 사용자가 데이터에 접근하고 처리할 수 있도록 합니다.

데이터베이스는 일반적으로 테이블(Table)이라는 구조를 사용하여 데이터를 저장합니다.
테이블은 행(Row)과 열(Column)의 형태로 구성되어 있으며, 각 행은 레코드(Record)로 데이터의 한 개체를 나타내고,
각 열은 속성(Attribute)로 데이터의 특징을 나타냅니다. 테이블 간에는 관계(Relationship)를 설정하여
데이터들 간의 연결과 종속성을 나타낼 수 있습니다.

데이터베이스는 다양한 형태로 구현될 수 있으며, 주로 관계형 데이터베이스(RDBMS)와 비관계형 데이터베이스(NoSQL)로 분류됩니다.
관계형 데이터베이스는 테이블 간의 관계를 이용하여 데이터를 구성하고 SQL을 사용하여 데이터를 조작합니다.
현실 환경에서는 관계형 데이터베이스가 가장 널리 사용되고 있습니다. 비관계형 데이터베이스는 테이블과 관계 대신에
다른 구조를 사용하여 데이터를 저장하고, SQL 이외의 쿼리 언어나 API를 사용하여 데이터를 처리합니다.

 

✅ SQL 구문 파헤치기

 

SQL에 4가지의 목적을 가진 용법 (CRUD / Create, Read, Update, Delete)

데이터를 읽을 때는 (Read) ‘Select 구문’을 사용 select구문은 select/from/where/group by/having/order by 의 6가지 절로 이루어져 있습니다.

 

  • Select * from : SELECT * FROM은 SQL 문법에서 사용되는 구문으로, 데이터베이스 테이블에서 모든 컬럼의 데이터를 조회할 때 사용됩니다.
    은 와일드카드 문자로, 모든 컬럼을 의미합니다. 여러 개의 정보를 추출하기 위해서는 SELECT 문을 사용하고, 원하는 컬럼들을 명시적으로 지정해야 합니다. 각 컬럼은 쉼표로 구분하여 나열합니다. → SELECT 이름, 나이 FROM Customers;
  • 예를 들어, "Customers"라는 테이블에서 모든 데이터를 조회하고자 한다면 다음과 같이 SELECT * FROM Customers;와 같은 SQL 문을 사용할 수 있습니다.
    -- 데이터를 가져올 때 가장 먼저 알려주어야 하는 것(컴퓨터에게) 최소 2가지의 정보가 무엇일까요?
    -- 1. 가져와야 할 데이터가 어떤 것인지? -> Select
    -- 2. 그 데이터는 어디에 저장되어 있는지 ? -> From 절


    SELECT * FROM Customers;


    1. Select : ' ~을 가져와!' 라는 뜻입니다.
         - select 뒤에 어떤 것을 가져올지를 적어서 컴퓨터에게 알려줍니다.
       - * (와일드카드) : 모든 (컬럼)의 값을 가져와! 란 뜻입니다.
       - 컬럼(열 - 세로줄) 정보에 대해 원하는 부분을 적어줍니다.
       - select columnName1, columnName2와 같이 개별 컬럼명을 적어 줄 때는 콤마(,)로 구분해줍니다.


    2. From : 데이터를 어디서 가져올지 컴퓨터에게 알려주는 라인
        - select 구문을 실행하기 위한 필수 조건입니다
        - 데이터가 저장되어 있는 주소인 table 명을 적어주어야 하고, 
        - DB 종류에 따라 DB명과 Table 명을 같이 적어줘야 하는 경우도 존재합니다.
        - join명령도 from 절에 작성해서 컴퓨터에게 알려줍니다.

    SELECT *
    FROM Customers
    LIMIT 5;


    * SQL 문에서 결과를 제한하는데 사용되는 절입니다. 
        LIMIT 절은 추출하고자 하는 결과의 개수를 지정하여 해당 개수만큼의 행만 반환합니다.

 

  • 이렇게 작성된 SQL 문은 Customers 테이블의 모든 컬럼에 해당하는 데이터를 반환합니다.
    데이터베이스 시스템은 해당 테이블의 구조를 기반으로 모든 컬럼을 가져와 결과를 반환합니다.

  • 주의할 점은 SELECT * FROM을 사용할 때는 데이터베이스의 성능 측면을 고려해야 합니다.
    모든 컬럼을 조회하면 불필요한 데이터까지 가져올 수 있으며, 테이블에 많은 컬럼이 있는 경우 데이터를 가져오는 데 시간이 오래 걸릴 수 있습니다.
    또한, 테이블 스키마가 변경되었을 때 코드에 영향을 주는 등의 문제도 발생할 수 있습니다.
    따라서, 필요한 컬럼만 명시적으로 선택하여 조회하는 것이 좋습니다.
728x90
반응형

'[ DATABASE]' 카테고리의 다른 글

[SQL] 기본 문법  (0) 2023.07.20

+ Recent posts