SQL 기초 1일차

hanjae_99·2023년 1월 25일
0

Learned by 창

목록 보기
7/8
post-thumbnail

복습하는 기분으로

sql은 간단하게 스파르타코딩에서 배웠었는데 또? 라고 생각할 수 있지만
이번에는 친구와 함께 공부하면서 더 세세히 복습하는 느낌으로 정리해보려한다.

아뇨 저 안까먹었는데요?

  • mariaDB
  • 지난 스파르타코딩때는 DBeaver 를 사용했지만 이번엔 mariaDB 사이트에서 다운받은 HeidiSQL을 사용해볼예정이다.

    대충 다운받고 관리자 비밀번호도 간단하게 설정해준뒤 비밀번호 입력후 로그인하면 짜잔 sql 화면이 뜨게된다.

    기초 문법은 동일하고 (select, where, group by...) 자동완성이나 한글깨짐등은 DBeaver 보다 좀 못한듯..?

  • DDL, DCL, DML
  • 용어 설명을 잠깐 하고 넘어가자면
    DDL - Data Definition Language (데이터 정의어) 로써
    CREATE, ALTER, DROP, RENAME, TRUNCATE 문법이 있다.
    주로 데이터자체(테이블 단위)를 생성하거나 변경, 삭제할 때 사용한다.

    DCL - Data Controll Language (데이터 제어어)
    GRANT, REVOKE 문법이 있으며, 데이터접근 권한에 대해 조정할 때 사용한다.

    DML - Data Manipulation Language (데이터 조작어)
    SELECT, INSERT, UPDATE, DELETE 문법이 있고
    주로 필드단위 검색이나 추가, 편집, 삭제할 때 사용한다.

    <스키마 표기법>
    --부서(부서번호, 부서명, 위치) 처럼 표시하는것으로
    데이터가 어떤식으로 구성되어있는지 기본형식을 표기하는 방식이다.

  • DML 문법
  • SELECT

    SELECT * FROM department;

    select 로 보고싶은 테이블을 불러올 수 있으며, where 문법이나 group by, order by, inner join 등과 함께 쓰인다.

    INSERT

    INSERT INTO department VALUES('D001','manage', 10);
    INSERT INTO department VALUES('D002','finance', 9);
    INSERT INTO department VALUES('D003','selling', 8);
    INSERT INTO department VALUES('D004','dev', 5);

    insert 로 각 필드값의 순서대로 값을 입력해 넣을 수 있다.

    UPDATE

    UPDATE department set FLOOR=3 WHERE deptname='dev';

    update 로 필드내의 특정값을 편집할 수 있다.

    DELETE

    DELETE FROM department WHERE deptno='D004';

    delete 로 필드내의 특정값을 삭제할 수 있다.

  • DDL 문법
  • CREATE

    CREATE TABLE login(
    	id VARCHAR(20) NOT NULL, #문자열 길이 설정 : char
    	pw VARCHAR(20) NOT NULL, #varchar 역시 마찬가지로 문자열 길이설정이지만, 길게 써야할때 알아서 조정해줌
    	uname VARCHAR(30),
    	email VARCHAR(30),
    	address VARCHAR(200),
    	PRIMARY KEY(id)
    	);

    create 로 위처럼 빈 테이블을 생성 후 각 필드값의 자료형과 범위를 지정해준다.

    ALTER

    ALTER TABLE login ADD gender INT DEFAULT NULL; #필드값 추가, 디폴트값으로 null 입력
    ALTER TABLE login MODIFY id VARCHAR(100); #필드의 자료형값 조정

    alter 를 사용해서 필드값을 추가하거나, 자료형값을 조정할 수 있다.

    TRUNCATE

    TRUNCATE login;

    truncate 를 사용하면 해당 테이블의 값을 삭제한다. delete 나 drop 처럼 필드나 테이블을 아예 삭제시키는게 아닌
    빈 껍데기로 남기고 안에 있는 값들만 삭제한다.

  • DCL 문법
  • GRANT

    GRANT SELECT ON fruit TO Lee;

    grant를 사용해 fruit 테이블에 대해 select 문법을 사용할 수 있는 권한을 Lee 에게 줄 수 있다.

    REVOKE

    REVOKE SELECT ON fruit FROM Lee;

    revoke를 사용해 fruit 테이블에 대해 select 문법을 사용할 수 있는 권한을 Lee 에게서 철회할 수 있다.

  • Primary key, Foreign key
  • CREATE TABLE fruit(
     과일번호 int not null auto_increment, #null값 없음, 숫자 자동증가
     과일이름 varchar(20), 
     가격 int, 
     색상 varchar(10), 
     원산지 varchar(30), 
     primary key(과일번호) #기본키 지정 -> 기본키 값이 있어야 한 행이 생성됨, 중복불가, null값 없음
     );

    위처럼 fruit 테이블을 만들 경우 과일번호를 기본키(Primary key)값으로 지정해 해당 값이 입력되어야 행이 생기게끔 할 수 있다.

    CREATE TABLE 과일판매(
    	판매번호 INT NOT NULL AUTO_INCREMENT,
    	과일번호 INT,
    	판매수량 INT,
    	가격 INT,
    	PRIMARY KEY(판매번호),
    	FOREIGN KEY(과일번호) REFERENCES fruit(과일번호) #foreign키(외래키) :다른테이블에서 속성을 가져올때 사용 
    	);

    외래키(Foreign key)를 활용해 다른테이블에서 속성을 가져와 연동시킬 수 있다.

    외래키를 사용할 땐 조건이 몇가지 있는데,
    1. 외래키로 묶여있는 기본값에 해당하지 않는 값을 insert 하려하면 오류가 발생한다.
    2. 테이블을 삭제하고싶을 땐 외래키로 묶여있는 친구부터 삭제 후 원래테이블을 삭제하면 된다.

    마무리

    오늘은 큰 틀에서 정리해보았는데 지난 스파르타에서 가볍게 지나간 내용들이
    실은 어디에 속하고 어떤 기능들을 주로 수행하는지,
    테이블 단위를 제어하거나, 권한부여등 이전에 몰랐던 내용에 대해 알게된 시간이었다.

    profile
    단 하나밖에 없는 톱니바퀴

    0개의 댓글