"DB 명령어"의 두 판 사이의 차이
잔글 (→같이보기) |
(→권한관련) |
||
54번째 줄: | 54번째 줄: | ||
===권한관련=== | ===권한관련=== | ||
− | + | 오라클의 권한 관련 명령어는 GRANT나 REVOKE을 사용한다. 우선 접속 권한을 주기위해선 GRANT에 CONNECT를 추가해서 해당 계정에 접속권한을 주어야한다. 아래와 같이 명령어를 입력하고 testuser자리에 권한을 부여할 아이디를 작성한다. | |
GRANT CONNECT, RESOURCE TO testuser; | GRANT CONNECT, RESOURCE TO testuser; | ||
− | + | 사용자에게 사용 권한을 주기위해서는 아래와 같은 명령어를 작성해야한다. GRANT를 이용해 추가, 삭제, 검색, 수정을 testdb에서 할 수 있도록 해주는 권한을 계정에 부여한다. 계정명은 testuser 자리에 입력하고 세미콜론(;)을 이용해 라인을 종료한다. | |
GRANT DELETE, INSERT, SELECT, UPDATE ON testdb TO testuser; | GRANT DELETE, INSERT, SELECT, UPDATE ON testdb TO testuser; | ||
− | + | 계정에 DBA의 권한을 주기위해서 GRANT를 사용해 해당 계정에 권한을 부여한다. | |
GRANT DBA TO testuser; | GRANT DBA TO testuser; | ||
− | + | 부여한 권한을 취소하고 싶을 때는 REVOKE를 이용하여 권한을 취소시킨다.<ref name="자료1"> 대충고양이짤, 〈[https://insomniachaos.tistory.com/18 (Oracle) 오라클 명령어 간단 정리]〉, 《티스토리》, 2013-11-12</ref> | |
REVOKE CONNECT, RESOURCE FROM testuser; | REVOKE CONNECT, RESOURCE FROM testuser; |
2020년 9월 9일 (수) 17:16 판
DB 명령어는 DBMS를 활용할 때 사용하는 명령어이다. 데이터 베이스중 가장 널리 사용되고 있는 것은 오라클에서 제작한 오라클 데이터베이스이며 현재 유닉스 환경에서 가장 널리 사용되고 있는 RDBMS이다. 그 밖에 마이에스큐엘, 엠에스에스큐엘, 포스트그레스큐엘, 몽고디비, 디비투, 에스큐엘라이트, 마리아디비 등이 있다.
목차
SQL
SQL의 종류에는 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL) 가 있다.[1]
데이터 정의어
스키마, 도메인, 테이블, 뷰, 인덱스를 정의하거나 변경 또는 삭제할 때 사용하는 언어로, 데이터 베이스 관리자나 데이터베이스 설계자가 사용한다. 데이터 정의어의 유형은 세가지로 CREATE, ALTER, DROP이 있다. CREATE는 스키마, 도메인, 테이블, 뷰, 인덱스를 정의하며 ALTER는 테이블에 대한 정의를 변경하는데 사용한다. 그리고 DROP은 스키마, 도메인, 테이블, 뷰, 인덱스를 삭제하는데 사용한다. 추가로 TRUNCATE는 테이블에 있는 모든 데이터를 삭제하는 명령어다.[2]
데이터 조작어
데이터 조작어는 테이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용하는 언어로 데이터베이스 사용자와 데이터베이스 관리 시스템 간의 인터페이스를 제공한다. 데이터 조작어의 유형은 4가지로 SELECT, INSERT, DELETE, UPDATE가 있다. SELECT은 테이블에서 조건에 맞는 튜플을 검색하고, INSERT는 테이블에 새로운 튜플을 삽입한다. DELETE는 테이블 조건에 맞는 튜플을 삭제하고 UPDATE는 테이블의 조건에 맞는 튜플의 내용을 변경한다.[2]
데이터 제어어
데이터 제어어는 데이터의 보안. 무결성, 데이터 회복, 병행 수행 제어 등을 정의하는데 사용하는 언어이다. 데이터 베이스 관리자가 데이터 관리를 목적으로 사용하며 종류는 COMMIT, ROLLBACK, GRANT, REVOKE이 있다. COMMIT은 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려주며, ROLLBACK은 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구할 때 사용한다. GRANT는 데이터베이스 사용자에게 사용권한을 부여하고 REVOKE은 데이터베이스 사용자의 사용권한을 취소할 때 사용한다.[2]
오라클
SQL 명령 줄은 오라클 데이터베이스XE에 액세스 하기위한 명령 줄 도구다. SQL, PL/SQL, SQL *Plus의 명령과 문을 입력하고 실행할 수 있다.
계정관련
오라클에서 사용하는 명령어들은 SQL *PLUS를 사용하는 것도 있으며 COMMANDS에 작성하는 명령어들도 존재한다. 우선 계정을 확인하기 위해서는 SHOW라는 명령어를 사용해 계정을 확인한다.
SHOW USER;
SHOW의 경우 계정 하나를 확인하지만 SELECT과 같은 SQL문을 섞어서 사용하면 모든 계정을 확인하는 것이 가능하다.
SELECT * FROM all_users;
계정을 확인했으면 계정으로 들어가야 한다. 이 때, SYS 명령어를 사용해 계정에 진입해야한다.
SYS as sysdba
계정을 확인하고 사용하는 방법 말고도 계정을 생성하는 명령어도 있다. 이 또한 SQL문을 섞어 사용하는데 CREATE문을 사용한다. CREATE를 이용해 자신이 쓰고싶은 아이디를 testuser 자리에 작성하고 비밀번호를 testpwd에 작성한다.
CREATE USER testuser IDENTIFIED BY "testpwd"
현재 자신이 계정을 사용하고 있지만 다른 계정으로 이동하고 싶을 때는 conn을 활용해 다른 계정으로 이동이 가능하다.
conn testuser/testuser;
위와 같이 작성을 하고 비밀번호를 입력한다.
계정의 비밀번호를 변경하고 싶을때는 ALTER문을 활용해 비밀번호를 변경할 수 있다. 아래와 같이 testuser에 아이디를 입력하고 바꾸고 싶은 패스워드를 chagepwd 자리에 작성한다.
ALTER USER testuser IDENTIFIED BY "chagepwd";
계정을 삭제하고 싶을때는 DROP SQL문을 활용하여 계정을 삭제한다. 현재 존재하는 계정을 DROP문의 testuser 자리에 작성하고 세미콜론(;)으로 문장을 종료한 뒤 엔터를 입력하면 비밀번호 입력창이 뜬다. 비밀번호를 입력하고 다시 확인을 하면 존재하던 계정이 삭제된다.[3]
DROP USER testuser;
권한관련
오라클의 권한 관련 명령어는 GRANT나 REVOKE을 사용한다. 우선 접속 권한을 주기위해선 GRANT에 CONNECT를 추가해서 해당 계정에 접속권한을 주어야한다. 아래와 같이 명령어를 입력하고 testuser자리에 권한을 부여할 아이디를 작성한다.
GRANT CONNECT, RESOURCE TO testuser;
사용자에게 사용 권한을 주기위해서는 아래와 같은 명령어를 작성해야한다. GRANT를 이용해 추가, 삭제, 검색, 수정을 testdb에서 할 수 있도록 해주는 권한을 계정에 부여한다. 계정명은 testuser 자리에 입력하고 세미콜론(;)을 이용해 라인을 종료한다.
GRANT DELETE, INSERT, SELECT, UPDATE ON testdb TO testuser;
계정에 DBA의 권한을 주기위해서 GRANT를 사용해 해당 계정에 권한을 부여한다.
GRANT DBA TO testuser;
부여한 권한을 취소하고 싶을 때는 REVOKE를 이용하여 권한을 취소시킨다.[3]
REVOKE CONNECT, RESOURCE FROM testuser;
테이블관련
- 모든 테이블 보기
SELECT * FROM TAB;
- 테이블 구조 확인하기
DESC testtable;
- 테이블 생성
CREATE TABLE testtable ( test_id NUMBER NOT NULL);
- 코멘트 추가
COMMENT ON TABLE testtable IS 'This table is test table'; COMMENT ON COLUMN testtable.testfield IS 'This column is test column of testtable';
- 테이블 변경
컬럼 추가
ALTER TABLE testtable ADD(testcolumn VARCHAR2(10));
컬럼 타입 변경
ALTER TABLE testtable MODIFY(testcolumn VARCHAR2(10));
컬럼 삭제
ALTER TABLE testtable DROP(testcolumn);
- 테이블 삭제[3]
DROP TABLE testtable;
값 입출력
- 레코드 삽입
INSERT INTO testtable(test_id, test_name, test_date) VALUES(100, 'test', sysdate);
- 레코드 수정
UPDATE testtable SET test_name = 'test001' WHERE test_id = '001';
- 레코드 확인
SELECT * FROM testtable;
- 레코드 삭제[3]
DELETE FROM testtable WHERE test_name = 'test001';
기타 유용한 커맨드
- DB명 확인
SELECT NAME, DE_UNIQUE_NAME FROM v$database;
- SID 확인[3]
SELECT INSTANCE FROM v$thread;
MySQL
MySQL의 기본 명령어와 SQL문이다.
- 데이터베이스 접속
mysql -u 사용자명 -p dbname
설치 직후에는 root 사용자에 비밀번호가 없으므로 다음과 같이 접속하여 MySQL을 관리할 수 있다.
mysql -u root mysql
외부 서버에서 접속이 불가하면 MySQL 설정에서 bind-address 항목을 살펴본다.
mysql --protocol=tcp -h 'hostname' -P 3306 -u [username] -p [database-name]
- 비밀번호변경
MySQL을 설치한 직후에는 root 계정에 암호가 지정되어 있지 않기 때문에 다음 세가지 방법으로 비밀번호를 변경 할 수 있다.
mysqladmin -u root password 새비밀번호
UPDATE user SET password=password('새비밀번호') WHERE user='root'; FLUSH PRIVILEGES;
SET PASSWORD FOR root=password('새비밀번호');
root 비밀번호가 설정된 상태에서는 mysql이나 mysqladmin 명령을 실행할 때 -p 옵션을 붙여주고 기존 비밀번호를 입력해야만 한다.
- 사용자 확인
use mysql; select User,Host from user; SHOW GRANTS FOR 'username'@'%'
- 사용자 추가/권한
CREATE USER username@localhost IDENTIFIED BY 'userpassword' GRANT SELECT,INSERT,UPDATE,DELETE ON dbname.* TO 'username'@'localhost'; GRANT ALL PRIVILEGES ON dbname.* TO username@localhost IDENTIFIED BY 'password';
- 불필요한 사용자 삭제
DLETE FROM USER WHERE USER='username'; FLUSH PRIVILEGES;
- 데이터베이스 생성/보기
CREATE DATABASE dbname; CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; SHOW DATABASES; USE dbname; DROP DATABASE [IF EXISTS] dbname;
- 테이블 생성/보기
CREATE TABLE tablename ( column_name1 INT PRIMARY KEY AUTO_INCREMENT, column_name2 VARCHAR(15) NOT NULL, column_name3 INT ) ENGINE=INNODB;
- 테이블 목록 보기
SHOW TABLES;
- 테이블 구조 보기
EXPLAIN tablename; DESCRIBE tablename;
- 테이블 이름 변경
RENAME TABLE tablename1 TO tablename2[, tablename3 TO tablename4];
- 테이블 삭제
DROP TABLE [IF EXISTS] tablename;
- 현재 상태 보기
STATUS
- 테이블 데이터 추가
INSERT INTO tablename VALUES(값1, 값2, ...); INSERT INTO tablename (col1, col2, ...) VALUES(값1, 값2, ...);
- 테이블 확인
SELECT col1, col2, ... FROM tablename;
컬럼명을 *로 할 시 모든 컬럼을 의미한다. 그리고 AS를 통해 컬럼의 이름을 바꿔서 출력이 가능하며 DESC를 활용해 내림차순 혹은 ASC를 활용해 오름차순으로 결과를 출력할 수 있다.
SELECT * FROM tablename ORDER BY col1 DESC; SELECT col1, korean + math english AS '총점' FROM tablename ORDER BY '총점' ASC;
결과중 숫자를 제한해 얻고싶은 개수만 가져오게 할 수도 있다.
SELECT * FROM grade LIMIT 10;
- 테이블 수정
UPDATE tablename SET col1=새값 WEHER 조건
- 테이블 삭제
DELETE FROM tablename WEHRE 조건
각주
- ↑ 돼민이, 〈(Oracle) SQL의 종류 (DDL, DML, DCL)〉, 《티스토리》, 2016-11-13
- ↑ 2.0 2.1 2.2 장군이는 홍군, 〈DDL(데이터 정의어), DML(데이터 조작어) , DCL(데이터 제어어)〉, 《티스토리》, 2008-07-28
- ↑ 3.0 3.1 3.2 3.3 3.4 대충고양이짤, 〈(Oracle) 오라클 명령어 간단 정리〉, 《티스토리》, 2013-11-12
참고자료
- 대충고양이짤, 〈(Oracle) 오라클 명령어 간단 정리〉, 《티스토리》, 2013-11-12
- 돼민이, 〈(Oracle) SQL의 종류 (DDL, DML, DCL)〉, 《티스토리》, 2016-11-13
- 장군이는 홍군, 〈DDL(데이터 정의어), DML(데이터 조작어) , DCL(데이터 제어어)〉, 《티스토리》, 2008-07-28
같이 보기