본문 바로가기
개발일지/SQL

SQL 기본 흐름

by 다니엘의 개발 이야기 2022. 8. 29.
320x100

#1 기본 테이블 생성

 

CREATE TABLE acount(

# SERIAL에 대해서 더욱 공부하자

user_id SERIAL PRIMARY KEY,

# unique로써 중복값이 없게끔

username VARCHAR(50) UNIQUE NOT NULL,

password VARCHAR(50) NOT NULL,

email VARCHAR(250) UNIQUE NOT NULL,

create_on TIMESTAMP NOT NULL,

last_login TIMESTAMP

)


#2 기본테이블에 REFERENCE 하는 테이블 및 추가테이블 생성

 

1)

 

CREATE TABLE acount_job(

user_id INTEGER REFERENCES acount(user_id),

job_id INTEGER REFERENCES job(job_id),

hire_date TIMESTAMP

)

 

2)

 

CREATE TABLE job(

job_id SERIAL PRIMARY KEY,

job_name VARCHAR(200) UNIQUE NOT NULL

)

 

3)

 

CREATE TABLE information(

info_id SERIAL PRIMARY KEY,

title VARCHAR(500) NOT NULL,

person VARCHAR(50) NOT NULL UNIQUE

)

 

4)

 

CREATE TABLE employees(

emp_id SERIAL PRIMARY KEY,

first_name VARCHAR(50) NOT NULL,

last_name VARCHAR(50) NOT NULL,

birthdate DATE CHECK (birthdate > '1900-01-01'),

hire_date DATE CHECK (hire_date > birthdate),

salary INTEGER CHECK (salary > 0)

)


#3 만들어놓은 테이블에 자료 집어넣기

 

1)

 

# 내가 잘못알고 있는게 아니라면 컬럼에 한에서는 굳이 쓸필요없다.

# 해당 테이블의 모든 컬럼에 맞는 자료를 입력하는 것이라면

# 따라서 첫번째줄의 필요한 줄은 INSERT INTO acount

# 정도가 될 것 같다.

INSERT INTO acount(username, password, email, create_on)

 

# 자료구조가 ‘TIMESTAMP’일때 정말 중요한 기능이 CURRENT_TIMESTAMP

VALUES ('Jose', '0000', 'jose@gmail.com', CURRENT_TIMESTAMP)

 

2)


INSERT INTO job(job_name) VALUES ('president')

 

3)

 

INSERT INTO acount_job(user_id, job_id, hire_date)

VALUES (1,1,CURRENT_TIMESTAMP)

 

4)

 

INSERT INTO job(job_name)

VALUES ('Cowboy')

 

5)

 

INSERT INTO employees(

first_name, last_name, 

birthdate, hire_date, salary)

 

VALUES('Jose', 'Portilla', '1990-11-03', 

  '2010-01-01', 100)

 

6)

 

INSERT INTO employees(

first_name, last_name, 

birthdate, hire_date, salary)

 

VALUES('Sammy', 'Smith', '1990-11-03', 

  '2010-01-01', 200)


#4 기본적으로 입력되어 있는 값들을 UPDATE

 

1)

 

UPDATE acount

SET last_login = CURRENT_TIMESTAMP

 

2)

 

UPDATE acount

SET last_login = create_on

 

3)

 

UPDATE acount_job

SET hire_date = acount.create_on

FROM acount

 

4)

UPDATE acount

SET last_login = CURRENT_TIMESTAMP

RETURNING email, create_on, last_login


#4 기본적으로 입력되어있는 값들을 DELETE

 

DELETE FROM job

WHERE job_name = 'Cowboy'

RETURNING job_id, job_name


#5 alter는 기본 뜻 자체가 ‘바꾸다’라는 뜻이다. alter 섹션

 

1)

 

ALTER TABLE information

RENAME TO new_info

 

2)

 

ALTER TABLE new_info

RENAME COLUMN person TO people

 

3)

 

ALTER TABLE new_info

ALTER COLUMN people DROP NOT NULL

 

4)

 

# 컬럼명 변경

ALTER TABLE teachers

RENAME COLUMN student_id TO teacher_id


#6 기존의 테이블및 내용을 drop

 

1)

ALTER TABLE new_info

DROP COLUMN people

 

2)

#조건 드랍형이고

 

ALTER TABLE new_info

# people이라는 컬럼이 만약에 있으면 드랍해라. 라는 명령

DROP COLUMN IF EXISTS people

300x250