데이터베이스 생성
PostgreSQL에서 새 데이터베이스를 생성하려면 다음 단계를 따른다:
- psql 명령어를 사용하여 PostgreSQL에 superuser 권한으로 로그인한다.
psql -U postgres
CREATE DATABASE
명령어를 사용하여 새 데이터베이스를 생성한다.
CREATE DATABASE mydb;
이 명령어는 “mydb”라는 이름의 새 데이터베이스를 생성한다.
데이터베이스 수정
PostgreSQL에서 데이터베이스를 수정하려면 ALTER DATABASE
명령어를 사용한다. 예를 들어, 데이터베이스의 이름을 변경하려면 다음 명령어를 사용한다:
ALTER DATABASE mydb RENAME TO newdb;
이 명령어는 “mydb” 데이터베이스의 이름을 “newdb”로 변경한다.
데이터베이스 삭제
PostgreSQL에서 데이터베이스를 삭제하려면 DROP DATABASE
명령어를 사용한다.
DROP DATABASE mydb;
이 명령어는 “mydb” 데이터베이스를 삭제한다. 주의: 이 명령어는 데이터베이스와 그 안의 모든 데이터를 영구적으로 삭제하므로 주의해서 사용해야 한다.
데이터베이스 검색
PostgreSQL에서 데이터베이스를 검색하려면 \l
명령어를 사용한다. 이 명령어는 모든 데이터베이스의 목록을 출력한다.
\l
테이블 생성
데이터베이스에 테이블을 생성하려면 CREATE TABLE
명령어를 사용한다. 예를 들어, “users” 테이블을 생성하려면 다음 명령어를 사용한다:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(50)
);
이 명령어는 “users”라는 이름의 새 테이블을 생성한다. 테이블은 “id”, “name”, “email” 세 개의 열을 가진다.
테이블 수정
PostgreSQL에서 테이블을 수정하려면 ALTER TABLE
명령어를 사용한다. 예를 들어, 테이블에 새 열을 추가하려면 다음 명령어를 사용한다:
ALTER TABLE users ADD COLUMN age INT;
이 명령어는 “users” 테이블에 “age”라는 이름의 새 열을 추가한다.
테이블 데이터 삭제
DELETE
명령어:
DELETE FROM table_name;
이 명령어는 테이블 “table_name”의 모든 행을 삭제한다. DELETE
는 테이블의 각 행을 개별적으로 삭제하므로, 대량의 데이터를 삭제할 때는 느릴 수 있다. 또한 DELETE
는 트랜잭션 로그를 생성하므로, 삭제 작업을 되돌릴 수 있다.
TRUNCATE
명령어:
TRUNCATE TABLE table_name;
이 명령어도 테이블 “table_name”의 모든 행을 삭제한다. TRUNCATE
는 테이블 전체를 삭제하고 다시 생성하는 방식으로 작동하므로, DELETE
보다 빠르다. 하지만 TRUNCATE
는 트랜잭션 로그를 생성하지 않으므로, 삭제 작업을 되돌릴 수 없다.
주의사항:
- 이 명령어들은 테이블의 모든 데이터를 영구적으로 삭제하므로, 사용 전에 주의해야 한다.
- 테이블에 외래 키 제약 조건이 있는 경우,
TRUNCATE
는 작동하지 않을 수 있다. 이 경우에는DELETE
를 사용해야 한다. DELETE
와TRUNCATE
모두 테이블의 구조 (열, 제약 조건 등)는 변경하지 않는다. 테이블 구조를 변경하려면ALTER TABLE
명령어를 사용해야 한다.
테이블 삭제
PostgreSQL에서 테이블을 삭제하려면 DROP TABLE
명령어를 사용한다.
DROP TABLE users;
이 명령어는 “users” 테이블을 삭제한다. 주의: 이 명령어는 테이블과 그 안의 모든 데이터를 영구적으로 삭제하므로 주의해서 사용해야 한다.
테이블 검색
PostgreSQL에서 테이블을 검색하려면 \dt
명령어를 사용한다. 이 명령어는 현재 데이터베이스의 모든 테이블 목록을 출력한다.
\dt
사용자 생성
PostgreSQL에서 새 사용자를 생성하려면 CREATE USER
명령어를 사용한다.
CREATE USER myuser WITH PASSWORD 'secret';
이 명령어는 “myuser”라는 이름의 새 사용자를 생성하고, 비밀번호를 “secret”로 설정한다.
사용자 수정
PostgreSQL에서 사용자를 수정하려면 ALTER USER
명령어를 사용한다. 예를 들어, 사용자의 비밀번호를 변경하려면 다음 명령어를 사용한다:
ALTER USER myuser WITH PASSWORD 'newsecret';
이 명령어는 “myuser” 사용자의 비밀번호를 “newsecret”로 변경한다.
사용자 삭제
PostgreSQL에서 사용자를 삭제하려면 DROP USER
명령어를 사용한다.
DROP USER myuser;
이 명령어는 “myuser” 사용자를 삭제한다.
사용자 검색
PostgreSQL에서 사용자를 검색하려면 \du
명령어를 사용한다. 이 명령어는 모든 사용자의 목록을 출력한다.
\du
권한 부여
PostgreSQL에서 사용자에게 권한을 부여하려면 GRANT
명령어를 사용한다. 예를 들어, 사용자에게 테이블에 대한 SELECT 권한을 부여하려면 다음 명령어를 사용한다:
GRANT SELECT ON users TO myuser;
이 명령어는 “myuser” 사용자에게 “users” 테이블에 대한 SELECT 권한을 부여한다.
모든 데이터베이스에 대한 모든 권한을 부여하려면 다음 명령어를 사용한다:
GRANT ALL PRIVILEGES ON ALL DATABASES TO myuser;
이 명령어는 “myuser” 사용자에게 모든 데이터베이스에 대한 모든 권한 (CREATE, CONNECT, TEMPORARY, 등)을 부여한다.
모든 테이블에 대한 모든 권한을 부여하려면 다음 명령어를 사용한다:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO myuser;
이 명령어는 “myuser” 사용자에게 “public” 스키마의 모든 테이블에 대한 모든 권한 (SELECT, INSERT, UPDATE, DELETE, 등)을 부여한다.
이러한 변경사항을 적용하려면 다음 명령어를 사용한다:
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO myuser;
이 명령어는 “public” 스키마에서 새로 생성되는 모든 테이블에 대해 “myuser” 사용자에게 모든 권한을 자동으로 부여하도록 설정한다.
주의: 이러한 방법은 사용자에게 매우 강력한 권한을 부여하므로, 신중하게 사용해야 한다. 일반적으로는 각 사용자에게 필요한 최소한의 권한만 부여하는 것이 좋다.
권한 수정
PostgreSQL에서 사용자의 권한을 수정하려면 REVOKE
명령어와 GRANT
명령어를 함께 사용한다. 예를 들어, 사용자의 INSERT 권한을 취소하려면 다음 명령어를 사용한다:
REVOKE INSERT ON users FROM myuser;
이 명령어는 “myuser” 사용자로부터 “users” 테이블에 대한 INSERT 권한을 취소한다.
권한 삭제
PostgreSQL에서 사용자의 권한을 삭제하려면 REVOKE
명령어를 사용한다. 예를 들어, 사용자의 모든 권한을 삭제하려면 다음 명령어를 사용한다:
REVOKE ALL ON users FROM myuser;
이 명령어는 “myuser” 사용자의 “users” 테이블에 대한 모든 권한을 삭제한다.
권한 검색
PostgreSQL에서 사용자의 권한을 검색하려면 \z
명령어를 사용한다. 이 명령어는 모든 테이블과 그에 대한 권한을 출력한다.
\z