검수요청.png검수요청.png

DB 명령어

위키원
rudgh01 (토론 | 기여)님의 2020년 9월 9일 (수) 16:43 판 (데이터 정의어)
이동: 둘러보기, 검색

DB 명령어DBMS를 활용할 때 사용하는 명령어이다. 데이터 베이스중 가장 널리 사용되고 있는 것은 오라클에서 제작한 오라클 데이터베이스이며 현재 유닉스 환경에서 가장 널리 사용되고 있는 RDBMS이다. 그 밖에 마이에스큐엘, 엠에스에스큐엘, 포스트그레스큐엘, 몽고디비, 디비투, 에스큐엘라이트, 마리아디비 등이 있다.

SQL

SQL의 종류에는 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL) 가 있다.[1]

데이터 정의어

스키마, 도메인, 테이블, 뷰, 인덱스를 정의하거나 변경 또는 삭제할 때 사용하는 언어로, 데이터 베이스 관리자나 데이터베이스 설계자가 사용한다. 데이터 정의어의 유형은 세가지로 CREATE, ALTER, DROP이 있다. CREATE는 스키마, 도메인, 테이블, 뷰, 인덱스를 정의하며 ALTER는 테이블에 대한 정의를 변경하는데 사용한다. 그리고 DROP은 스키마, 도메인, 테이블, 뷰, 인덱스를 삭제하는데 사용한다. 추가로 TRUNCATE는 테이블에 있는 모든 데이터를 삭제하는 명령어다.[2]

데이터 조작어

  • SELECT : 데이터 조회
  • INSERT : 데이터 입력
  • UPDATE : 데이터 수정
  • DELETE : 데이터 삭제

데이터 제어어

  • GRANT : 권한 생성
  • REVOKE : 권한 삭제

오라클

SQL 명령 줄은 오라클 데이터베이스XE에 액세스 하기위한 명령 줄 도구다. SQL, PL/SQL, SQL *Plus의 명령과 문을 입력하고 실행할 수 있다.

계정관련

  • 계정확인
SHOW USER;
  • 모든 계정 확인
SELECT * FROM all_users;
  • SYS 계정으로 들어가기
SYS as sysdba
  • 계정 생성
CREATE USER testuser IDENTIFIED BY "testpwd"
  • 다른 계정으로 넘어가기
conn testuser/testuser;
  • 계정 비밀번호 변경
ALTER USER testuser IDENTIFIED BY "chagepwd";
  • 계정 삭제[3]
DROP USER testuser;

권한관련

  • 접속 권한 주기
GRANT CONNECT, RESOURCE TO testuser;
  • 사용자에게 권한 주기
GRANT DELETE, INSERT, SELECT, UPDATE ON testdb TO testuser;
  • DBA 권한주기
GRANT DBA TO testuser;
  • 권한 취소[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;
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 조건

각주

  1. 돼민이, 〈(Oracle) SQL의 종류 (DDL, DML, DCL)〉, 《티스토리》, 2016-11-13
  2. 장군이는 홍군, 〈DDL(데이터 정의어), DML(데이터 조작어) , DCL(데이터 제어어)〉, 《티스토리》, 2008-07-28
  3. 3.0 3.1 3.2 3.3 3.4 대충고양이짤, 〈(Oracle) 오라클 명령어 간단 정리〉, 《티스토리》, 2013-11-12

참고자료

같이보기


  검수요청.png검수요청.png 이 DB 명령어 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.