[TIL] SQL

최하온·2024년 1월 25일
0

TIL

목록 보기
24/71
post-thumbnail

📃What I learned new


SQL 정의

: 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어

SQL 종류

DDL (Data Definition Language)

: 데이터 정의 언어

  • CREATE : DATABASE, TABLE, VIEW, INDEX 등을 생성
CREATE DATABASE 데이터베이스명;
CREATE TABLE 테이블명
{
 컬럼명 컬럼속성
}
  • DELETE : DATABASE, TABLE, VIEW, INDEX 등을 삭제
DROP DATABASE 데이터베이스명;
DROP TABLE 테이블명;
  • ALTER : DATABASE, TABLE 등의 속성을 변경
ALTER DATABASE 데이터베이스명 변경조건;
ALTER TABLE 테이블명 ADD 변경조건; // 테이블에 컬럼을 추가
ALTER TABLE 테이블명 DROP 변경조건; // 테이블에서 컬럼을 삭제
ALTER TABLE 테이블명 MODIFY 변경조건; // 테이블의 컬럼을 수정
ALTER TABLE 테이블명 RENAME 변경조건; // 테이블의 이름을 변경

DML (Data Manipulation Language)

:데이터 조작 언어

  • SELECT : TABLE에서 원하는 데이터들을 조회
SELECT 컬럼목록 FROM 테이블명 [WHERE 조건];
  • INSERT : TABLE에 새로운 데이터들을 삽입
INSERT INTO 테이블명 (컬럼목록) VALUES (값목록);
  • DELETE : TABLE에서 특정한 조건에 맞는 데이터들을 삭제
    • WHERE 조건이 없다면, 모든 데이터가 삭제
DELETE FROM 테이블명 [WHERE 조건];
  • UPDATE : TABLE에서 특정한 조건에 맞는 데이터들을 수정
    • WHERE 조건이 없다면, 모든 데이터가 수정

DCL (Data Control Language)

: 데이터 조작 언어

  • GRANT : 데이터 베이스의 유저에게 사용 권한 부여
GRANT [권한] ON 객체명 TO 사용자;
  • REVOKE : 데이터 베이스의 유저에게 사용 권한 취소
REVOKE [권한] ON 객체명 FROM 사용자;

TCL Transaction Control Language)

:트랜잭션을 조작 언어.
:DCL에 해당하지만 그 중 트랜잭션을 조작하는 언어

  • COMMIT : 작업이 정상적으로 처리 되어 트랜잭션 실행
START TRANSACTION;
...
COMMIT;
  • ROLLBACK : 작업이 비정상적 일 시 트랜잭션 취소
START TRANSACTION;
...
ROLLBACK;

SQL 사용 예시

테이블 생성

CREATE TABLE IF NOT EXISTS courses (
    id bigint(5) NOT NULL AUTO_INCREMENT, 
    title varchar(255) NOT NULL,
    tutor varchar(255) NOT NULL,
    PRIMARY KEY (id)
);

데이터 삽입

INSERT INTO courses (title, tutor) VALUES
    ('Spring 기초반', '최원빈'),
    ('Spring 숙련반', '최원빈'),
    ('React 기초반', '김예지'),
    ('React 숙련반', '김예지'),
    ('Node.js 기초반', '이용우'),
    ('Node.js 숙련반', '이용우'),
    ('웹개발 종합반', '이범규'),
    ('웹개발 종합반 플러스', '이범규');

데이터 조회

SELECT * FROM courses;

데이터 조건 조회

SELECT * FROM courses WHERE tutor='최하온';

🚨Issue occuring


💦What I tried


CREATE TABLE users (
    id int(11) PRIMARY KEY,
    name varchar(255),
    age int(11),
);

INSERT INTO users (name, age) VALUES
    ('최하온', 29);

SELECT * FROM users;

💡How solve issue


// IF NOT EXISTS : 만약 users가 존재하지 않는다면
CREATE TABLE IF NOT EXISTS users (
    id int(11) NOT NULL AUTO_INCREMENT,
    name varchar(255) NOT NULL,
    age int(11) NOT NULL,
    PRIMARY KEY (id)
);

테이블 생성 sql에서 컬럼에 조건들을 주지 않았고 Type만 주었다.
테이블명 중복과, NOT NULL, AUTO_INCREMENT 등 추가로 넣었어야했다.

0개의 댓글