Security/Web Hacking

데이터베이스(DB) 종류 별 명령어 정리

MS-SQL

* MS-SQL은 각 개별 데이터베이스별로 시스템 뷰가 존재하기 때문에 데이터베이스명으로 필터링할 필요 없음

데이터베이스 조회

SELECT * FROM sys.sysdatabases

SELECT name, database_id, create_date FROM sys.databases ; 

SELECT DB_NAME() -> 현재 DB명 반환

SELECT DB_NAME(3) -> DB id 가 3인 DB명 반환

테이블 조회

SELECT * FROM sys.tables 

SELECT * FROM information_schema.tables

컬럼 조회

SELECT * FROM sys.syscolumns 

SELECT column_name FROM information_schema.columns WHERE table_name = "테이블명"

각테이블 상세 컬럼 정보 

select * from sys.systypes 


MySQL

데이터베이스 조회

SELECT DATABASE() -> 현재 사용중인 DB명

SELECT 1 FROM Information_schema.SCHEMATA WHERE SCHEMA_NAME = 'DB명' -> 해당 DB 존재여부 확인(있으면 1, 없으면 0)

SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = 'DB명'; 

테이블 조회

SELECT 1 FROM information_schema.tables WHERE table_schema = 'DB명'  AND table_name = '테이블명' -> 테이블의 존재여부 확인(있으면 1, 없으면 0)

SELECT TABLE_NAME, TABLE_COMMENT FROM information_schema.tables WHERE table_schema = 'DB명'

컬럼 조회

SELECT 1 FROM Information_schema.columns WHERE table_schema = 'DB명'  AND table_name = '테이블명'  AND column_name = '컬럼명' -> 컬럼의 존재여부 확인(있으면 1, 없으면 0)

SELECT column_name FROM information_schema.columns WHERE table_schema = 'DB명'  AND table_name = '테이블명' 


Maria DB

데이터베이스 조회

SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = 'DB명'; 

SELECT * FROM information_schema.SCHEMATA;

테이블 조회

SELECT * FROM informaiton_schema.TABLES

SELECT TABLE_NAME FROM information_schema.tables WHERE table_schema = 'DB명'

컬럼 조회

SELECT * FROM information_schema.COLUMNS

SELECT column_name FROM information_schema.columns WHERE table_schema = 'DB명'  AND table_name = '테이블명' 


SQLite

* SQLite에는 information_schema 가 없고 sqlite_master 라는게 있다.

데이터베이스 조회

SELECT를 사용한 데이터베이스 조회는 없는듯 하다. 

데이터베이스 버전 조회

sqlite_version()

테이블 조회

SELECT tbl_name FROM sqlite_master;

SELECT name FROM sqlite_master; 

name 이랑 tbl_name 이랑 같음

컬럼 조회

SELECT * FROM information_schema.SCHEMATA;SELECT sql FROM sqlite_master WHERE name='테이블명' AND sql LIKE '%컬럼명%'

sql에는 해당 테이블을 만들때 사용한 sql문이 저장되어 있다. (e.g CREATE TABLE 테이블명...)


Oracle DB

데이터베이스 조회

SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = 'DB명'; 

테이블 조회

SELECT table_name FROM information_schema.TABLES WHERE table_schema = 'DB명'

컬럼 조회

SELECT column_name FROM information_schema.columns WHERE table_schema = 'DB명'  AND table_name = '테이블명'