SQL

SQL 정리(DDL)

goshek 2024. 9. 23. 15:50

/*
데이터베이스 문법 정리
    create, alter, drop, truncate
    
    데이터베이스
    ㅇcreate: 데이터베이스 생성, 데이터를 저장하고 관리하는 첫 단계
    기본 형태
    create database 데이터베이스명;
*/
create database example;

/*
create: 테이블 생성, 테이블에 저장될 데이터의 형태와 특성을 정의
데이터 타입, 제약 조건, 기본값등을 설정 가능
기본형태
create table 테이블명(
컬럼1 데이터타입 [선택적 옵션]
컬럼2 데이터타입 [선택적 옵션]
컬럼3 데이터타입 [선택적 옵션]
    ...
);
*/
create table `example`.`students` (
student_id int,
    student_name char(8),
    student_gender char(8)
);

create table `example`.`students2` (
student_id int,
    student_name char(8),
    student_gender char(8)
)default character set= utf8;

select * from example.students3;

/*
테이블 삭제
    기본 형태: drop table 데이터베이스명.테이블명;
*/
drop table `example`.`students2`;

/*
DDL 문법 정리
데이터 베이스
1. 데이터 베이스 생성(create)
*/
create database database_name;

-- cf)데이터베이스의 유무를 확인하고 오류를 방지하는 SQL문, 존재하지 앟을 경우에만 새로 생성
create database if not exists database_name;

/*
2. 데이터베이스 선택(use)
use keyword를 사용하여 데이터베이스 선택시 모든 SQL명령어가 선택된 DB내에서 실행, 스키마명을 더블클릭한 것과 동일함
*/
use sys;
use database_name;

/*
3. 데이터베이스 삭제
    데이터베이스 삭제 기능, 해당 작업은 실행 후 되돌릴 수 없다.
*/
drop database database_name;

/*
데이터베이스 목록 조회
    : 서버에 존재하는 모든 데이터베이스 목록을 확인
    show databases;
    
    table
    1. 테이블 생성(create table)
*/
create database example;
use example;
create table students( #테이블 생성 시 데이터베이스명이 필수는 아니지만 오류방지를 위해 권장
student_id int primary key,
    name varchar(100) not null,
    age int not null,
    major varchar(100)
);

# 2. 테이블의 구조 조회(describe, decs)
# 테이블 구죄: 정의된 컬럼, 데이터 타입, 키 정보(제약조건)등을 조회 가능
# describe 테이블명;
# select * from 테이블명 desc(asc)
# 혹은 desc 테이블명: 테이블 상세 정보 출력
# key: 각 컬럼의 제약사항, default: 기본값 지정, extra: 제약사항-추가 옵션alter
/*
테이블 수정
    alter table
    : 이미 존재하는 테이블의 구조를 변경하는데 사용
    > 컬럼 또는 제약 조건을 추가, 수정, 삭제alter
    
    - 컬럼 -
    a) 컬럼 추가 add column
    alter table 테이블명 add column 컬럼명 데이터타입 기타사항;
*/
alter table `students`
add email varchar(255);
desc students;

/*
b) 컬럼 수정 modify (column)
alter table 테이블명 modify column 컬럼명 새로운컬럼_데이터타입;
*/
alter table students modify email varchar(100);

#c) column 삭제 drop
alter table students drop email;
desc students;

/*
cf. if exists
: 선택적 키워드, 테이블이 존재하는 경우에만 삭제를 수행
> 존재할 때만 삭제하기 때문에 오류X
*/
drop table if exists `lectures`;
drop table `students`;

# cf. 데이터베이스와 테이블을 동시 지정
# : 테이블의 위치를 명확하게 전달하기 위해 .기호를 사용하여 경로를 지정을 권장
# > 데이터베이스.테이블명