[엘리스 AI 3기] SQL I

홍의·2021년 10월 27일
0

SQL

목록 보기
1/1

MaraDB 설치

설치 순서

  1. MariaDB 사이트 설치

  1. root 계정 사용

    ✅ 비밀번호 기억 꼭!!

  1. TCP
    다른 DB가 설치되어 있으면 3307로 바꿔도 무관한다.

  1. 설치완료 후 CMD를 열어 연결.

    mariadb -u root -p 입력 후 password를 입력한다.

  1. DataBase 확인하기

    show databases 명령어를 입력하면 DB목록을 볼 수 있다.

  1. DB 이동

    use database명으로 이동가능하다.


SQL

데이터베이스란?

  • 여러 사람이 공유해 사용할 목적으로 통합하여 관리하는 데이터 모음
  • MariaDB, Amazon Redshift, Oracle DB 등
  • 관계형 데이터베이스(Relational Data Management System)
    • 하나 이상의 테이블로 이루어지며 서로 연결된 데이터를 갖고 있다.
    • 장점

      1) 데이터를 더 효율적이고 체계적으로 저장하고 관리할 수 있다.

      2) 미리 저장하는 데이터들의 구조를 정의함으로써 데이터의 완전성 보장된다.

      3) 트랜잭션(Transaction)기능을 제공한다.

    • 단점

      1) 테이블을 미리 정의해야 하므로 테이블 구조 변화가 유연하지않다.

      2) 확장이 쉽지않다. 테이블 구조가 미리 정의되어야 하고 , ACID를 보장해야하므로 성능과 서버 모두 높여야 한다.

      3) 서버를 늘려서 분산 저장하는 것도 쉽지 않다. 주로 스케일 아웃보다는 스케일업으로 확장해야한다.

      💡 `scaleout` : 서버수를 늘려서 확장하는 것.

      💡 `scaleup` : 서버의 성능을 높이는 것.

  • 비관계형 데이터베이스(Not Only SQL)
    • 대부분의 전형적인 데이터베이스 시스템에서 찾을 수 있는 행과 열로 이루어진 테이블 형식 스키마를 사용하지 않는 데이터베이스
    • 장점

      1) 데이터 구조를 미리정의하지 않아도 되므로 데이터 구조 변화에 유여한다.

      2) 데이터 베이스 시스템 확장하기가 비교적 쉽다. 스케일 아웃방식으로 가능하다.

      3) 구조가 유연하여 방대한 양의 데이터를 저장하는데 유리하다.

    • 단점

      1) 데이터의 완전성이 덜 보장된다.

      2) 트랜잭션이 안되거나 비교적 불안정하다.

SQL이란?

  • Structured Query Language의 약자로 데이터베이스에 접근하고 조작 하기위한 표준 언어
  • 검색, 삽입, 수정, 삭제, 데이터베이스 생성, 테이블 생성 등의 조작이 가능하다.
  • 테이블의 구성은 컬럼과 레코드로 이루어져 있다.


SQL 명령어

테이블 데이터 검색

  • SELECT

    SELECT * FROM 테이블명; 테이블의 데이터 내용을 볼 수 있다.

    • SELECT * FROM student_tests; 💡 * 은 wildcard 의미로 모든 칼럼을 검색한다.
  • DISTINCT

    뒤에 나오는 컬럼의 중복을 제거하고 보여준다. SELECT DISTINCT(컬럼명) FROM 테이블명;

    • SELECT DISTINCT name FROM student_tests;
    • SELECT DISTINCT name, test FROM student_tests; 💡 DISTINCT 뒤에 2개 이상의 컬럼을 적으면, 한 쪽 컬럼에 중복이 있어도
         다른 쪽 컬럼의 값이 다르면 다르게 취급한다!
  • DESC

    테이블의 구조를 볼 수 있다.

    • DESC student_tests;

테이블 검색 조건문 설정

  • WHERE

    SELECT * FROM 테이블명 WHERE 조건;

    • SELECT * FROM student_tests WHERE name = 'hong';
  • 비교연산자 WHERE (>, <, >=, <=, =, !=)
    • SELECT * FROM student_tests WHERE score >= 80;
  • 복합조건 연산자 (AND, &&, OR, ||, NOT !)
    • SELECT * FROM student_tests WHERE score >= 80 OR test = 'java';
  • 기타연산자(BETWEEN, IN, NOT IN)

    BETWEEN은 ~이상 ~이하로 취급한다. 나이대, 날자에 유용

    • SELECT * FROM student_tests WHERE score BETWEEN 70 AND 75; ✅ 70이상 75이하 이다.
    • SELECT * FROM student_tests WHERE name IN ('hong', 'kim');
    • SELECT * FROM student_tests WHERE name NOT IN ('hong', 'kim');
  • LIKE

    SELECT * FROM 테이블명 WHERE 테이블명 LIKE %글자%; %글자% 글자가 포함된 것을 검색 %글자 글자 앞에 오는 것들을 검색 글자% 글자 뒤에 오는 것들을 검색

    • SELECT * FROM student_tests WHERE name LIKE '%h%';

테이블 데이터 정렬

  • ORDER BY

    SELECT * FROM 테이블명 ORDER BY 칼럼명 DESC; ASC 오름차순, DESC내림차순

    • SELECT * FROM student_tests ORDER BY score ASC;

테이블 데이터 삽입

  • INSERT

    INSERT INTO 테이블명 VALUES (값); INSERT INTO 테이블명(칼람명) VALUES (값); NULL이 허용이 된다면 데이터를 비어 줄 수 있다.

    • INSERT INTO student_tests('name', 'test', 'test_date') VALUES ('chun', 'python', '2012-11-05');
    • INSERT INTO student_tests VALUES ('elice', 'sql', 100, '2012-11-05');

테이블 데이터 수정

  • UPDATE

    UPDATE 테이블명 SET 칼람명 = 변경할 값 WHERE 변경조건;

    • UPDATE student_tests SET score=90 WHERE name = 'chun' AND test = 'python';

테이블 데이터 삭제

  • DELETE

    DELETE FROM 테이블명 WHERE 삭제조건;

    • SELECT * FROM student_tests;

SQL 함수

데이터 개수 확인

  • COUNT()

    SELECT COUNT(칼럼명) FROM 테이블명; 전체 조회할 때는 칼러명에 *을 넣어준다. 칼럼명을 넣었을 때, 데이터가 없으면 건너띈다.

    • SELECT COUNT(*) FROM student_tests;

데이터 개수 조회 제한

  • LIMIT()

    SELECT * FROM 테이블명 LIMIT 제한할 개수; 첫번째 컬럼의 시작은 0, 제한할 개수를 2개 써주면 2번째 줄(레코드)부터 시작.

    • SELECT * FROM student_tests LIMIT 3;
    • SELECT * FROM student_tests LIMIT 1, 4;

SUM & AVG

profile
천천히 가더라도 멈추지 말자!!

0개의 댓글