핀수로그
  • SQL문 완전 정복
    2022년 04월 17일 23시 24분 10초에 업로드 된 글입니다.
    작성자: 핀수
    728x90
    반응형

     

       


       

        한글자가 추가된 문자열을 찾기

        [결과] 테이블 처럼 ‘미나’ 라는 문자열 앞에 한글자가 추가된 문자열을 찾기 위한 쿼리를 작성하시오.

        (김조미나, 미나와 같이 앞에 한글자가 추가되지 않은 문자열은 조회되지 않아야한다.)

         

        [이름]

        이름 나이
        김미나 23
        박미나 43
        임미나 28
        김조미나 45
        미나 13

        [결과]

        이름 나이
        김미나 23
        박미나 43
        임미나 28

         

        더보기

        👉

        SELECT * FROM 표 WHERE 이름 LIKE_'미나';

         

        컬럼 LIKE 패턴

        - 와일드카드

        와일드카드 설명
        % 0개 이상의 문자열과 일치
        [ ] 1개의 문자와 일치
        [^] 1개의 문자와 불일치
        _ 특정 위치의 1개의 문자와 일치

         

        조인하기

        [책이름]과 [가격표] 테이블을 조인하여 [결과] 테이블처럼 나오도록 쿼리를 작성하시오

        더보기
        SELECT A.책번호, A.책이름, B.가격 FROM 책이름 A LEFT JOIN 가격표 B ON A.책번호 = B.책번호;

         

        조인은 크게 inner join, outer join 이 있다.

        • INNER JOIN (교집합) : 같은 것만 보여줘
        • OUTER JOIN : 없는 것도 일단 보여줘
          • LEFT OUTER JOIN : 왼쪽을 기준으로 다 보여주는데, 일치하는 것도 보여줘
          • RIGHT OUTER JOIN : 오른쪽을 기준으로 다 보여주는데, 일치하는 것도 보여줘
          • FULL OUTER JOIN : 양쪽의 모든 데이터 다 보여줘

        문법

        SELECT [컬럼] FROM 테이블1 [어떤] JOIN 테이블2 ON 테이블1.기본키 = 테이블2.기본키;

         

         

        DML

        Data Manage Language

        -- 값 조회하기
        SELECT * FROM 테이블명;
        
        -- group by / where
        select 내가 보고 싶은 컬럼 (* : 전부 다 보여줘)
        from 어느 테이블에서??
        where 이 조건에 만족하는 애들만 보여줄래?
        group by 이 기준으로 그룹지어줘;
        
         
        -- group by / having
        select 내가 보고 싶은 컬럼
        from 어느 테이블에서?
        group by 이 기준으로 그룹지어줄래?
        having 아 근데 여기 부합하지 않는 애들은 보여줄 필요없어^^;
        
        -- 참고로 where에서는 avg(stu_score) > 90 이런 식을 쓸 수 없다.
        -- 쓰면 그룹함수는 사용할 수 없고 오류뜸..
        
        -- where stu_score > 90 은 가능하다.
        -- 함수(avg(stu_score))가 안되는거다.
        
        
        -- 값 추가하기
        INSERT INTO 테이블명(컬럼명) VALUES(값들..)
        
        -- 값 수정하기
        UPDATE 테이블명 SET 수정하려는 컬럼명 = 값 WHERE 조건;
        
        -- 값 삭제하기 (전체)
        DELETE * FROM 테이블명
        
        -- 조건을 충족하는 컬럼 삭제
        DELETE FROM 테이블명 WHERE 지우려는 컬럼명 = 값;

         

         

        DCL

        - DB 관리자가 데이터 보안, 무결성 유지, 병행 제어, 회복을 위해 사용하는 언어

         

        사용 권한 부여

        GRANT 권한 TO 사용자; 
        // 시스템 권한
        // 관리자가 사용자에게 테이블/뷰/프로시저 등을 생성하고 삭제할 수 있는 권한 부여
        
        GRANT 권한 ON 테이블 TO 사용자;
        // 객체 권한
        // 관리자가 사용자에게 테이블을 수정, 삽입, 삭제, 조회와 프로시저 실행을 할 수 있는 권한 부여
        
        // 예시
        GRANT UPDATE ON 학생 TO 원빈;
        //관리자가 사용자인 '원빈'에게 '학생' 테이블에 대해 UPDATE 할 수 있는 권한을 부여
        
        GRANT SELECT ON 학생 TO 원빈 WITH GRANT OPTION:
        // 관리자가 사용자인 '원빈'에게 '학생' 테이블에 대해 SELECT 할 수 있는 권한과
        // 그 권한을 다른 사용자에게 부여할 수 있는 권한 부여

         

         

        사용 권한 취소

        REVOKE 권한 FROM 사용자;
        // 시스템 권한
        // 관리자가 사용자에게 테이블/뷰/프로시저 등을 생성하고 삭제할 수 있는 권한 회수
        
        REVOKE 권한 ON 테이블 FROM 사용자;
        // 객체 권한
        // 관리자가 사용자아게 테이블을 수정, 삽입, 삭제, 조회와 프로시저를 실행할 수 있는 권한 회수
        
        // 예시
        REVOKE UPDATE ON 학생 FROM 원빈;
        // 관리자가 사용자인 원빈에게 학생 테이블에 대해 UPDATE 할 수 있는 권한 회수
        
        REVOKE SELECT ON 학생 FROM 원빈 CASCADE CONSTRAINTS;
        // 관리자가 사용자 원빈에게 학생 테이블에 대해 SELECT 할 수 있는 권한과
        // WITH GRANT OPTION으로 부여된 사용자들의 권한까지 회수

         

         

        DDL

        - 데이터를 정의하는 언어

        - 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어

         

        데이터베이스 오브젝트 생성

        CREATE TABLE 테이블명
        (
        	속성명 데이터 타입 [NOT NULL].., ..,
        	PRIMARY KEY(기본 키),
        	UNIQUE(속성명,..),
        	FOREIGN KEY(외래키) REFERENCES 참조테이블(기본 키),
        	CONSTRAINT 제약조건명 CHECK 조건식
        );

         

         

        데이터베이스 오브젝트 변경

        컬럼을 추가하기

        ALTER TABLE 테이블명 ADD 컬럼명 데이터타입 [제약조건];

        컬럼을 수정하기

        ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입 [제약조건];

        컬럼을 삭제하기

        ALTER TABLE 테이블명 DROP 컬럼명;

        컬럼명을 수정하기

        ALTER TABLE 테이블명 RENAME COLUMN 변경전_컬럼명 TO 변형후_컬럼명;

         

        데이터베이스 오브젝트 삭제

        DROP TABLE 테이블명 [CASCADE | RESTRICT];

         

        데이터베이스 오브젝트 내용 삭제

        TRUNCATE TABLE 테이블명

         

        VIEW

        - 논리 테이블

        - 사용자에게 (사용 관점에서) 테이블과 동일

         

        뷰의 생성

        CREATE VIEW 뷰 이름 컬럼 목록 AS 데이터 조회 쿼리;
        // 예시
        CREATE VIEW VW_A AS SELECT * FROM A; // SELECT 문에는 UNION 이나 ORDER BY절을 사용XX

         

        뷰의 삭제 / 변경

        - 뷰 정의 자체를 변경하는 것은 불가능

        DROP VIEW 뷰 이름;

         

         

        INDEX

        - 데이터를 빠르게 찾는 수단, 테이블에 대한 조회 속도를 높여 주는 자료 구조

        - 테이블의 특정 레코드 위치를 알려 주는 용도로 사용

         

         

        INDEX 생성

        - 컬럼은 복수 지정 가능

        CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명);

         

        INDEX 삭제

        - 컬럼은 복수 지정 가능

        DROP INDEX 인덱스명;

         

         

        INDEX 변경

        - 기존 인덱스를 삭제 하고 신규 인덱스를 생성하는 방식으로 사용 권고

        ALTER [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명);
        728x90
        반응형

        '배경지식 > 배경지식' 카테고리의 다른 글

        Class | Object | Instance | IoC | DI  (2) 2022.07.02
        포인터  (0) 2022.04.17
        환경변수  (0) 2021.11.07
        IO  (0) 2021.11.05
        다다익램  (0) 2021.11.05
        댓글