SQL 기본문법

박재휘·2024년 1월 12일

SQL

목록 보기
1/2
post-thumbnail

SQL이란

Structured Query Language의 약자로, 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계한 특수 목적의 프로그래밍 언어이다.

데이터베이스 프로그램의 종류는 다음과 같이 다양하다.

이 블로그에서는 XAMPP를 설치하여 MySQL을 사용하였다.

SQL의 기본문법

SQL의 문법규칙

  • 문자열은 홀따옴표' 나 겹따옴표" 로 지정
  • 명령 입력 후에는 세미콜론; 을 붙여서 끝냄

데이터베이스, 테이블, 컬럼 명명 규칙

  • 영문과 숫자로 구성(첫 글자는 숫자로 시작할 수 없음)
  • 특수문자는 _$ 사용 가능.
  • 최대 64자까지 허용
  • 대소문자 구별은 서버의 운영체제에 따라 다름
    • 윈도우 계열은 대소문자를 구분하지 않음
    • 유닉스나 리눅스의 경우 대소문자를 구분함

SQL기본 명령어

실습준비

실습을 하기 위해선 먼저 XAMPP에서 MySQL의 Start버튼을 누르고 Shell을 실행시키고 Shell창에 mysql -uroot -p를 입력하여 MySQL을 실행시킨다.

다음과 같이 상태가 MariaDB로 바뀌면 성공

1. DB생성(create)

create database DB명;

연습용으로 sql_practice라는 DB를 하나 생성해보았다.

2. DB목록 확인(show)

show databases;

전 후를 비교해보면 없던 sql_practice이름의 DB가 생성된 것을 확인할 수 있다.

3. DB선택(use)

use DB명;
사용할 DB를 선택한다.

4. 테이블 생성(create)

create table 테이블명(
name char(20),
gender char(10),
age int,
birth date
);

이런식으로 괄호 안에 컬럼명과 데이터타입을 명시해주면 된다.

int auto_increment int뒤에 저 속성을 넣어주면 데이터 입력시 null이나 ''로 빈 값을 넣어도 자동으로 값을 생성한다.

나는 member라는 테이블을 생성해보았다.

5. 테이블 목록 확인(show)

show tables;
현재 DB의 테이블 목록을 확인할 수 있다.

6. 테이블 구조 확인(desc)

desc 테이블명;
방금 만들었던 member테이블의 구조를 확인할 수 있다.

7. 테이블에 데이터 입력(insert)

insert into 테이블명 values(데이터1, 데이터2, ...);
내가 만든 테이블의 구조대로 데이터를 입력하면 된다. 문자열은 `''`사이에 값을 넣어주고 int는 숫자만 적어주면 된다.

데이터를 여러 행 넣을 경우

//1번 방법
insert into 테이블명 values();
insert into 테이블명 values();
insert into 테이블명 values();

//2번 방법
insert into 테이블명 values(), (), ();

1번 방법처럼 데이터 행마다 insert into 테이블명 values();를 사용하거나, 2번 방법처럼 콤마,를 이용해 괄호를 여러개 붙일 수도 있다.

8. 데이터 수정

update 테이블명 set 컬럼명 = 수정할 값 where 조건;

입력된 데이터를 수정할 때 사용한다.

수정할 값 뒤에 set 컬럼명1 = 수정할 값1, 컬럼명2 = 수정할 값2 콤마,로 이어붙여 여러개를 한번에 수정할수도 있다.

9. 테이블 컬럼 수정(alter)

추가(add)

alter table 테이블명 add 컬럼명 자료형;

예) alter table member add address char(30);

alter table 테이블명 add 컬럼명 자료형 after 기존컬럼명;
//기존컬럼명 옆에 추가

alter table 테이블명 add 컬럼명 자료형 first;
//맨앞에 추가

위와 같이 after, first옵션을 이용하면 원하는 곳에 컬럼을 추가할 수 있다.

변경(change, modify)

alter table 테이블명 change 기존컬럼이름 수정할이름 자료형;

change는 이름과 자료형 모두 변경할 수 있다.

alter table 테이블명 modify 컬럼 자료형;

modify는 이름은 그대로 유지한 채 자료형만 변경할 경우 사용한다.

삭제(drop)

alter table 테이블명 drop 컬럼명;

해당 컬럼을 삭제한다.

10. 테이블 이름 변경(rename)

alter table 테이블명 rename 변경할이름;

테이블의 이름을 변경한다.

11. 테이블 삭제(drop)

drop table 테이블명;

alter table 테이블명 drop 컬럼명; 명령어와 헷갈리지 않게 조심하자.
테이블의 컬럼을 하나 삭제하는것과 테이블을 통째로 삭제하는 아주 큰 차이이다.

12. DB백업 및 복원(dump)

DB를 사용중이라면 exit명령어를 이용하며 빠져나간 후

백업
mysqldump –uroot –p 데이터베이스명 테이블명 > 백업파일명.sql

복원
mysql –uroot -p 데이터베이스명 < 백업파일명.sql

13. 외부파일에서 데이터 입력(load)

스프레드시트나 txt데이터를 DB로 옮길 때 사용한다.

load data local infile '파일명.txt' into table 테이블명;

TAB이 아닌 다른 구분자로 구분되었을 경우, fields terminated by ‘구분자’를 추가해야한다.
load data local infile '파일명.txt' into table 테이블명 fields terminated by ',';

14. 데이터 검색

select 컬럼명 from 테이블명 where 조건;

기본적으로 select, from, where을 이용하여 검색할 수 있다.

예제를 몇개 풀면서 익히는게 빠르다.

다음 테이블을 member라고 한다.

예제1. member테이블의 모든 정보 출력
select * from member;
예제2. member테이블에서 이름이 park인사람의 이름과 생일 출력;
select name, birth from member where name = 'park';
예제3. member테이블에서 주소가 gwangju인 사람의 생일 출력
select birth from member where address = 'gwangju';

이렇게 select뒤에는 내가 출력하고자 하는 컬럼명, from뒤에는 내가 찾고자 하는 테이블명, where뒤에는 조건을 입력하면 된다.

데이터 패턴 검색(like)

select * from 테이블명 where name like “a%”;
a로 시작하는 모든 데이터를 검색한다.

select * from 테이블명 where name not like “%b”;
b로 끝나는 모든 데이터를 제외하고 검색한다.

select * from 테이블명 where name like “_c_”;
세글자인 데이터 중에서 가운데 글자가 c인 데이터를 검색한다.

%는 글자수 제한이 없지만 _는 개수만큼 글자수 제한이 있다.

레코드의 수 출력(count)

select count(*) from 테이블명;

해당 테이블의 레코드 수를 출력한다.

정렬(order by)

명시한 컬럼명을 기준으로 오름차순 또는 내림차순 정렬한다.

//내림차순 정렬
select * from 테이블명 order by 컬럼명 desc;

//오름차순 정렬
select * from 테이블명 order by 컬럼명 asc;

order by는 기본값이 오름차순이라 asc는 쓰지 않아도 무방하다.

order by 컬럼명1 asc, 컬럼명2 desc;

이렇게 만약 정렬기준을 두개 적는다면 첫 번째 기준으로 정렬했을 때 중복이 생기면 두번재 기준으로 정렬해준다.

출력 개수 제한(limit)

select * from 테이블명 where 조건 limit 숫자;
profile
차곡차곡 열심히

0개의 댓글