Maria SQL - DDL 명령어 / 데이터베이스 목록 조회, 전체 목록 확인/ 테이블 생성, 추가,수정,삭제, 초기화

2025. 5. 3. 20:49·DB

DDL
명령어 알아보기

 

현재 존재하는 데이터베이스 목록 조회

show databases;

 

show databases;

 

 

maria db의 기본 데이터 베이스

 

1.information_schema

데이터 사전 -> 현재 DBMS 거의 대부분의 설정 정보나 DB,table의 정보를 저장하고 있는 운영 목적의 DB

 

2.my sql

DBMS에서 관리하는 계정이나 권한을 저장하고 관리하는 DB

보통 ftp, ssh등은 계정이 운영체제 자체에 있었지만 sql은 따로 되어 있음

 

3. perfomance_schema

현재 구동되고 있는 DBMS가 실시간으로 발생하거나 추가된 이벤트 정보를 저장하고 있는 DB

원하는 데이터 베이스를 선택

use DB명   (use라는 명령어는 ;를 치지 않아도 실행이 된다// 근데 딱 이것만 그럼!!!!)

use DB명;

 

ex.

use information_schema;

 

현재 선택한 DB에서 사용하는 모든 table의 목록 조회

show tables;

 

데이터베이스 생성

create database DB명;

 

ex. create database kh_db;

create database kh_db;

생성이 잘 된다

 

show databases; 로 생성 확인하기

 

데이터베이스 삭제

drop database DB명;

 

ex.  drop database kh_db;

 drop database kh_db;

권한설정이 아무것도 안 되어있으므로 삭제도 잘 된다

 

table 생성

create table table명 (컬럼명 데이터 타입 옵션 제약조건, 컬럼명 데이터타입 옵션 제약조건);

컬럼명, 데이터 타입은 필수이지만 나머지는 부수적인 것.

() 안에 내용 적어주고 ()나와서 ;꼭 붙여주기

 

ex.

create table kh_member (no int auto_increment primary key, id varchar(20) unique not null, pw varchar(50) default "1234", name char(20), reg_date datetime not null);

 

테이블을 생성할 때 속성들을 모두 같이 설정을 해줘야 한다. 가로인 ROWS는 몇줄이 추가되든 별로 중요하지 않지만 컬럼은 중요함.

 

ex.

create table table 명

=>

회원정보 테이블

no,id,pw, 이름, 가입일

 
create table kh_member (no int auto_increment primary key, id varchar(20) unique not null, pw varchar(50) default "1234", name char(20), reg_date datetime not null);

 

create table table명 (컬럼명 데이터 타입 옵션 제약조건, 컬럼명 데이터 타입 옵션 제약조건, 컬럼명 데이터 타입 옵션 제약조건, 컬럼명 데이터 타입 옵션 제약조건);

이런 식으로 들어감

, 는 구분자역할을 하고 각 설정 마다는 띄어쓰기를 한다.

테이블에 들어갈 컬럼들이 많을 수록 table생성 명령어가 길어진다.

 

create table table명 (컬럼명 데이터 타입-예를 들면 위에 테이블 no를 정하는데 여기에 한글이 들어가면 안 되니까 제약을 건다);

 


 

table 생성을 위한 명령어 하나씩 살펴보기! 

 

 

1. 컬럼명

해당 culumm의 이름 지정 -> 유일성 보장 (테이블 내) 이름이 겹치면 안 된다는 뜻

 

2. 데이터 타입

해당 컬럼에 저장될 데이터의 유형, 종류를 지정

 

1) 숫자형

숫자형 데이터를 저장할 때 숫자형태로 저장한다
int 정수형 4byte -3,-2,-1,0,1,2,3
doble 실수형 8byte 1.265, 265.25

 

 

2) 문자형

문자형 데이터를 저장할 때 문자형태로 저장한다
char char(8) char 8byte 고정형 크기의 데이터 타입
varchar varchar(8) 최대 8byte 크기만큼 문자저장 가변형 크기의 데이터 타입
text                                     2^16 byte *장문형일 때 사용

 

ex. char(4) -> A -> 4byte   // AB -> 4byte

varchar(4) -> A -> 2byte // AB -> 2byte

 

text(2^16 byte) 장문형태의 경우에는 이 명령어를 사용한다.

 

3) 시간형

시간형 날짜, 시간 등을 저장할 때
date 날짜 저장  년도-월-일
time 시간 저장 시:분:초
datetime 날짜와 시간 모두 저장 년도-월-일 시:분:초 고정적으로 시간 저장 
timestamp 날짜와 시간 모두 저장 년도-월-일 시:분:초 time-zone으로 설정된 값을 보고 시간을 저장 -외국연동

 

 

3. 옵션

옵셥 해당 컬럼에 저장될 때 데이터에 추가적인 특징이나 설정을 하고싶은 경우 넣는 설정
auto_increment 자동으로 숫자가 하나씩 중가하며 값이 입력, 저장
default 해당 컬럼에 데이터를 입력하지 않으면 자동으로 입력되는 기본값 설정

 

4.제약조건

제약조건 데이터의 무결성을 만족하기 위해 미리 설정하는 제약, 제한 조건 아무렇게나 데이터가 변화되면 안된다.
unique 해당 컬럼에서 동일한 데이터가 2번 발생하면 안된다

중복데이터 설정 불가능
not null null이라고 하는 특정한 값을 입력하지 못하도록 제한하는 설정 비어있지 못하게 하는 것
primary key 테이블에서 각 행을 고유하게 식별할 수 있도록 설정해주는 값 unique + not null

 

테이블 구조 확인

desc 컬럼명;

desc kh_member;

 

**use kh_member; 

먼저 명령어로 이 테이블 안에 들어가 있어야 함.


테이블 구조 수정 (alter)

 

1. add

컬럼 추가 (마지막 위치에 넣고 싶으면)

alter table 테이블명 add 컬럼명 데이터타입 옵션 제약조건;

alter table kh_member add nickname varchar(20);

 

첫번째 위치에 넣고 싶으면,

alter table 테이블명 add 컬럼명 데이터타입 옵션 제약조건 first;

alter table kh_member add age int first;

 

특정 위치에 넣고 싶으면 컬럼 순서에서 넣고 싶은 컬럼 사이의 위 파트

alter table 테이블명 add 컬럼명 데이터타입 옵션 제약조건 after 칼럼명;

alter table kh_member add memo text after pw;

 

들어간 것 확인 가능

2. drop

컬럼 삭제

alter table 테이블명 drop 컬럼명;

alter table kh_member drop age;

 

3. modify

컬럼 수정 (컬럼의 정보 수정 (데이터 타입, 옵션, 제약조건))

alter table 테이블명 modify 컬럼명 데이터타입 옵션 제약조건;

데이터 타입, 옵션, 제약조건은 변경할 데이터로 설정

alter table kh_member modify pw varchar(50) default "qwer1234";

 

4. change

컬럼 변경 (컬럼명을 포함한 모든 컬럼의 정보 변경)

alter table 테이블명 change 기존컬럼명 새컬럼명 데이터타입 옵션 제약조건 

alter table kh_member change memo address varchar(100);

 

5.rename

테이블 이름 변경 

alter table 테이블명 rename 새테이블명;

alter table kh_member rename kisa_mem;

테이블명이 바뀐 것을 확인 할 수 있다

rename table 테이블명 to 새테이블명;

rename table kisa_mem to kh_mem;

rename 방법이 2가지 있지만 이 방법은 잘 쓰지 않는다. 이유는 명령어 구조가 달라 헷갈리니까~

 

6. truncate

테이블 초기화

truncate 테이블명;

truncate kh_mem;

 

7.drop

테이블 삭제

drop table 테이블명;

drop table kh_mem;

+리눅스에서는 더블 쿼트"----"를 문자열로 썼었지만 sql에서는 싱글쿼트'----'를 사용한다!


실습

create database khacademy;


use khacademy;


create table member (id varchar(20) not null unique, pass varchar(20) not null, name varchar(20) not null, sex char(1), tel varchar(20) default '010-0000-0000', address varchar(90));


create table freeboard (num int not null auto_increment primary key, name varchar(20) not null, email varchar(20), subject varchar(100) not null, content varchar(500) not null, regist_day varchar(20), ip varchar(20));

 

 

----

실습2

테이블 구조 수정하기
member 테이블의 가장 위에 일련 번호 컬럼 추가
컬렴명 : no , 데이터 타입 : int , 옵션 : 번호 자동증가 , 제약조건 : primary key
alter table member add no int auto_increment primary key first;

member 테이블의 비밀번호 컬럼 데이터 타입을 varchar(50) 으로 수정
alter table member modify pass varchar(50) not null;

member 테이블의 성별 컬럼을 나이 컬럼으로 변경
컬럼명 : age , 데이터 타입 : int , 옵션 및 제약조건 없음
alter table member change sex age int;

member 테이블의 주소 컬럼을 작성일시 컬럼으로 변경
컬럼명: reg_date , 데이터 타입 : datetime , 옵션 없음 , 제약조건 : not null
alter table member change address reg_date datetime not null;

member 테이블의 전화번호 컬럼 삭제
alter table member drop tel;

member 테이블 이름을 kh_mem 으로 변경
alter table member rename kh_mem;

freeboard 테이블의 이름 컬럼 다음에 게시글 비밀번호 컬럼 추가
컬럼명 : passwd , 데이터 타입 : varchar(20) , 옵션 : 기본값 0000 으로 설정 , 제약조건 없음
alter table freeboard add passwd varchar(20) default "0000" after name;

freeboard 테이블의 글 내용 컬럼 데이터 타입을 text 로 수정
alter table freeboard modify content text not null;

freeboard 테이블의 글쓴 날짜 컬럼 이름 및 데이터 타입 변경
컬럼명 : reg_date , 데이터 타입: datetime , 옵션 없음 , 제약조건 : not null
alter table freeboard change regist_day reg_date datetime not null;

freeboard 테이블의 메일주소 컬럼 삭제
alter table freeboard drop email;


 

SQL 이름 바꾸기🤦‍♂️

 

sql에서 데이터베이스의 이름을 바꾸는 명령어는 없다. 바꾸고 싶으면 새로은 데이터베이스 생성 후 rename으로 테이블 하나씩 옮겨야 한다

또한 테이블명을 바꾸는 명령어도 없다. change로 바꿀 수 있지만 기존의 설정들이 전부 없어지므로 desc 테이블명; 쳐서 기존 설정을 다시 넣어줘야 한다.

 

결론-> sql에서 이름 바꾸려고 하지말자:)

 

저작자표시 비영리 변경금지 (새창열림)

'DB' 카테고리의 다른 글

database engine / 데이터베이스 엔진  (0) 2025.05.11
연습문제 풀이 SQL (DDL,DML,DCL,Join,Union,서브쿼리)  (0) 2025.05.10
DML (데이터 조작 언어) 명령어+ 추가로 알아두면 좋은 select 절  (0) 2025.05.08
DCL 데이터 제어어 Data Control Language (계정정보, 계정생성, 비밀번호 변경, status, 다른 db정보 검색)  (0) 2025.05.08
DBMS, 데이터 베이스 이해, SQL 정의, 구조 -maria db설치 후 초기 설정(한글)  (0) 2025.05.02
'DB' 카테고리의 다른 글
  • 연습문제 풀이 SQL (DDL,DML,DCL,Join,Union,서브쿼리)
  • DML (데이터 조작 언어) 명령어+ 추가로 알아두면 좋은 select 절
  • DCL 데이터 제어어 Data Control Language (계정정보, 계정생성, 비밀번호 변경, status, 다른 db정보 검색)
  • DBMS, 데이터 베이스 이해, SQL 정의, 구조 -maria db설치 후 초기 설정(한글)
햅삐root
햅삐root
happyroot 님의 블로그 입니다. IT 보안 정리💛
  • 햅삐root
    햅삐한 root
    햅삐root
  • 전체
    오늘
    어제
    • 전체보기 IT (123)
      • Linux (21)
      • Network (23)
      • packet tracer& GNS3 (10)
      • Cryptology (7)
      • WEB (16)
      • DB (16)
      • Hacking (28)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    injectionvector
    Hack
    sqlinjection
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
햅삐root
Maria SQL - DDL 명령어 / 데이터베이스 목록 조회, 전체 목록 확인/ 테이블 생성, 추가,수정,삭제, 초기화
상단으로

티스토리툴바