SQL

WebStudy / / 2021. 2. 4. 23:03

SQL

SQL(Structured Query Language): 데이터를 보다 쉽게 검색하고 추가, 삭제, 수정 등 조작을 할 수 있도록 고안된 컴퓨터 언어.
관계형 데이터베이스에서 데이터를 조작하고 쿼리하는 표준 수단.

  • DML(Data Manipulation Language)
    • 데이터를 조작하기 위해 사용
    • ex) INSERT, UPDATE, DELETE, SELECT 등
  • DDL(Data Definition Language)
    • 데이터베이스의 스키마를 정의하거나 조작하기해 사용
    • ex) CREATE, DROP, ALTER 등
  • DCL(Data Control Language)
    • 데이터를 제어하는 언어
    • 권한을 관리, 데이터의 보안,무결성 등을 정의
    • ex) GRANT, REVOKE 등

Database 생성

MariaDB로 수행할 예정.

  1. 관리자 로그인
    • mariadb -uroot -p: 관리자 계정인 root로 DBMS에 접속한다.
  2. DB 생성하기
    • create database DB명;: DB명으로 database를 생성한다.
  3. DB 사용자 생성 및 권한 부여
    • create user '계정이름' @'%' identified by'암호';
      • 계정 및 비밀번호 생성
    • grant all privileges on db이름.* to 계정이름 @'%' identified by '암호';
      • 암호를 가진 계정 이름에 db이름을 가진 db 모든 권한을 주겠음을 의미한다.\
      • @'%': 모든 클라이언트에서 계정이름으로 접근이 가능함을 의미한다.
    • grant all privileges on db이름.* to 계정이름 @'localhost' identified by '암호’;
    • flush privileges;
      • 수정 작업을 적용함

SQL 규칙?

  • 키워드는 대소문자를 구별하지 않는다.
    • select version(), current_date;
    • SELECT VERSION(), CURRENT_DATE;
    • 모두 같은 실행 결과를 도출한다.
      • 현재 버전과, 날짜를 출력함
  • 쿼리를 이용하여 계산도 가능함
    • select sin(pi()/4), (4+1)*5;
  • sql은 ;로 한 줄의 명령이 끝난다.
  • 여러 문장을 한 줄에 연속으로 붙여서 실행 가능함
    • select version(); select now();
  • 하나의 줄을 여러 줄로 입력이 가능하다.
    • selecet
    • version()
    • ;
  • 입력 도중에 취소하는 키워드
    • \c
  • show databases: DBMS에 존재하는 데이터 베이스 확인
  • use db명: db명으로 전환함

Table

  • table
    • RDBMS의 기본적 저장구조
    • 한 개 이상의 column과 0개 이상의 row로 구성된다.
  • 열(Column)
    • 테이블 상에서의 단일 종류의 데이터를 나타냄
    • 특정 데이터 타입의 크기를 가지고 있음
  • 행(Row)
    • Column들의 값의 조합, 레코드라 불림
    • 기본키(PK)에 의해 구본됨.
    • 기본키는 중복을 허용하지 않으며 없어서는 안된다.
  • Field
    • Row와 Column의 교차점
    • Field는 데이터를 포함할 수 있고 없을 때는 NULL 값을 가지고 있다.

관련 명령어

  • show tables;
    • 현재 DB에 저장된 테이블들을 보여줌
  • desc table명;
    • 선택한 테이블의 정보를 보여준다.

DML

DML(Data Manipulation Language)
모두 동사로 시작한다.
시작하는 동사에 따라 4가지 조작어가 존재.

  • SELECT: 검색
    • 사용법: SELECT(DISTINCT) 칼럼명( (as) ALIAS) FROM 테이블명
      • SELECT: 검색하고자 하는 데이터(칼럼)을 나열
      • DISTINCT: 중복행 제거
      • ALIAS: 나타날 컬럼에 대한 다른 이름 부여
      • FROM: 선택한 컬럼이 있는 테이블 명시
    • 전체 데이터 검색(*)
      • SELECT * FROM DATABASE
    • 칼럼의 합성(Concatenation)
      • CONCAT
      • select concat(empno, '-', deptno) as '사번-부서번호' from employee;
    • 중복행 제거
      • DISTINCT
      • select distinct deptno from employee
    • 정렬
      • ORDER BY 칼럼명/INDEX (ASC/DESC)
        • ASC: 오름차순, 기본값
        • DESC: 내림차순
      • SELECT EMPNO, NAME FROM EMPLOYEE order by empno;
    • 특정 햄 검색
      • WHERE 조건식
      • SELECT * FROM EMPLOYEE WHERE DEPTNO = 10
      • SELECT * FROM EMPLOYEE WHERE DEPTNO IN (10, 30)
        • deptno이 10 또는 30 인 경우만 출력
        • DEPTNO = 10 OR DEPTNO = 30과 동일한 값이다.
      • LIKE 키워드
        • 와일드 카드를 사용하여 특정 문자를 포함한 값에 대한 조건을 처리
        • %는 0에서부터 여러 개의 문자열을 나타냄
        • _는 단 하나의 문자를 나타냄
          • SELECT NAME, JOB FROM EMPLOYEE WHERE NAME LIKE '%A%';
          • SELECT NAME, JOB FROM EMPLOYEE WHERE NAME LIKE '_A%';
    • 함수의 사용
      • UCASE, UPPER
        • 대문자, 소문자 변환
        • SELECT LOWER(NAME) FROM EMPLOYEE
      • SUBSTRING
        • 원하는 문자열 출력
        • SELECT SUBSTRING('Happy Day', 3, 2);
          • Happy Day 3번째 글자부터 2글자 만 출력
      • LPAD, RPAD
        • 글자수 제한
        • `SELECT LPAD('hi', 5, '?'), LPAD('joe', 7, '*');
          • 빈공간은 ?/* 로 채움
      • TRIM, LTRIM, RTRIM
        • 공백 제거
      • 등..
    • 형변환
      • CAST 함수: type을 변경하는데 유용
        • CASE(expression AS type)
        • CONVERT(expression, type)
        • CONVERT(expr USING TRANSCODING_NAME)
      • MySQL 타입
        • BINARY
        • CHAR
        • DATE
        • DATETIME
        • SIGNED {INTEGER}
        • TIME
        • UNSGINED {INTEGER}
    • 그룹 함수
      • 여러개의 컬럼의 값을 가지고 결과 값을 하나만 만들어내는 함수
        • COUNT(expr): 결과의 개수를 출력
        • AVG(expr): 평균을 출력
        • MIN(expr): 최소 값을 출력
        • MAX(expr): 최대 값을 출력
        • SUM(expr): 모든 값의 합을 출력
        • GROUP_CONCAT(expr): 그룹단위로 칼럼을 합성
        • VARIANCE(expr): 분산을 출력
        • STDDEV(expr): 표준편차를 출력
      • GROUP BY 칼럼명
        • 해당 칼럼에 따라 그룹핑을 수행한다.
        • SELECT DEPTNO, AVG(salary), SUM(salary), FROM EMPLOYEE GROUP BY DEPTNO;
  • INSERT: 등록
    • 사용법: INSERT INTO 테이블 명(필드1, 필드2, ...) VALUES (필드1의 값, 필드 2의 값,...)
    • 필드명을 지정해주는 방식은 디폴트 값이 세팅되는 필드는 생략할 수 있다.
    • 추 후, 필드가 추가/변경/수정 되는 변경에 유연하게 대처 가능하다.
    • 필드명을 생략했을 경우에는 모든 필드값을 반드시 입력해야 한다.
  • UPDATE: 수정
    • 사용법: UPDATE 테이블명 SET 필드1 = 필드1의 값, 필드2 = 필드2의 값,.... WHERE 조건식
    • 조건식을 통해 특정 row만 변경할 수 있다.
    • 조건식을 주지 않으면 전체 로우가 영향을 미친다.
  • DELETE: 삭제
    • 사용법: DELETE FROMR 테이블명 WHERE 조건식
    • 조건식을 통해 특정 row만 삭제할 수 있다.
    • 조건식을 주지 않으면 전체 로우가 영향을 미친다.

DDL

DDL(Data Definition Language)

  • 테이블 생성
    • CREATE TABLE 테이블명(필드명1 타입[NULL | NOT NULL][DEFAULT][AUTO_INCREMENT], 필드명1 타입[NULL | NOT NULL][DEFAULT][AUTO_INCREMENT], ... PRIMARY KEY(필드명));
    • 데이터 형 외에도 속성값의 빈 값 허용 여부는 NULL 또는 NOT NULL로 설정
    • DEFAULT 키워드와 함께 입력하지 않았을 때의 초기값을 지정할 수 있다.
    • 입력하지 않고 자동으로 1씩 증가하는 번호를 위해 AUTO_INCREMENT사용
  • 테이블 수정
    • 컬럼 추가
      • ALTER TABLE 테이블명 ADD 필드명 타입[NULL | NOT NULL][DEFAULT][AUTO_INCREMENT];
    • 컬럼 삭제
      • ALTER TABLE 테이블명 DROP 필드명;
    • 컬럼 수정
      • ALTER TABLE 테이블명 CHANGE 필드명 새필드명 타입[NULL | NOT NULL][DEFAULT][AUTO_INCREMENT];
      • CHANGE 키워드를 사용하고 칼럼을 새롭게 재정의(이름부터 속성까지 전부)
  • 테이블 이름 변경
    • ALTER TABLE 테이블명 RENAME 새이름;
  • 테이블 삭제
    • DROP TABLE 테이블명;
    • 제약 조건이 있을 경우 삭제가 안될 수도 있다.
      • 서로 관계가 있을 경우
      • 따라서 역순서로 삭제를 수행한다.

'WebStudy' 카테고리의 다른 글

Browser  (0) 2021.02.06
HTTP  (0) 2021.02.06
프로젝트A. 명함 관리 프로그램  (0) 2021.02.05
JDBC  (0) 2021.02.05
Maven  (0) 2021.02.04
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기