MySQL

기본 SQL문법 정리

커피마시기 2023. 10. 22. 22:45

 

 

■  SQL이란

SQL은 관계형 데이터베이스 관리 시스템, RDBMS의 데이터를 관리하기 위해 개발된 프로그래밍 언어이다

SQL은 기본적으로 쿼리를 활용하여 데이터베이스 또는 테이블에 요청을 보내고 데이터를 받아오며 쿼리는 대소문자를 구분없이 사용가능하나 가독성을 위해 구분하여 쓰는 것이 좋다 주석은 -- 또는 /* */ 을 사용해준다

 

 

 

 

●  분류

 

  • DDL : Data Definition Language (데이터 정의 언어)
  • 데이터베이스와 테이블을 정의하기 위해 사용하는 언어이다
  • 테이블 생성, 변경, 삭제 등 데이터의 구조와 관련된 명령어들을 말한다
  • CREATE, ALTER, DROP, TRUNCATE 등이 해당된다

 

  • DML : Data Manipulation Language (데이터 조작 언어)
  • 데이터 관리를 위한 언어이다
  • 데이터를 조회하거나, 테이블 안의 데이터에 변형을 주는 명령어들이 해당된다
  • SELECT, INSERT, UPDATE, DELETE 등이 해당된다

 

  • DCL : Data Control Language (데이터 제어 언어)
  • 사용자 관리 및 사용자별 권한(데이터베이스 접근, 객체 사용 등)을 다루기 위한 언어이다
  • GRANT, REVOKE 등이 해당된다

 

 


 

■ 기본문법

 

-- 데이터베이스 보기
show databases;

-- 데이터베이스 생성
create database soccer;

-- 데이터베이스 선택
use soccer;

 

 

 

CREATE

-- 테이블 생성
create table soccer_EPL (
player_num int auto_increment,
player_team varchar(50) not null,
player_name varchar(20) not null,
player_position varchar(20) not null,
player_age int not null,

primary key(player_num)
);

 

  • Not Null : 해당 필드는 Null 값을 저장할 수 없게 된다
  • PRIMARY KEY : 해당 필드가 not null과 UNIQUE 제약 조건의 특징을 모두 가지게 된다
  • UNIQUE : 해당 필드는 서로 다른 값을 가져야만 한다
  • AUTO_INCREMENT : 해당 필드의 값을 1부터 시작하여 새로운 레코드가 추가될 때마다 1씩 증가된 값을 저장한다

 

 

● ALTER

table 내에 새로운 필드를 추가하거나, 기존 필드를 지우거나, 수정할 수 있다

-- 테이블에 필드 추가
ALTER TABLE soccer_epl ADD start_date datetime;

-- 테이블에 있는 필드 삭제
AlTER TABLE soccer_epl DROP column start_date;

-- 테이블에 있는 필드 타입 수정
ALTER TABLE 테이블이름 modify 필드명 새필드타입;

-- 필드 수정
ALTER TABLE 테이블이름 change 필드명 새필드명 새필드타입;

 

 

 

● DROP

table 또는 database를 삭제하는 명령어이다

-- 테이블 삭제
DROP TABLE soccer_epl;

-- 데이터베이스 삭제
DROP database soccer;

 

 

 

● INSERT

-- 필드 몇개만 정하여 넣을 경우
INSERT INTO soocer_epl(필드이름1, 필드이름2)
values (데이터값1, 데이터 값);

-- 필드 전체를 넣을 경우(필드명 생략 가능)
INSERT INTO soccer_epl values (null,'Tottenham', '손흥민', 'FW', 32);

 

 

 

● SELECT

table 내의 데이터를 조회하는 명렁어이며 From 명령어를 통해 데이터를 조회할 table을 지정할 수 있다

-- 필드이름player_team을 팀 으로 변경하여 team에 관한 컬럼만 보고싶을때
SELECT player_team AS '팀' FROM soccer_epl;

-- soccer_epl 테이블 내 데이터 모두 조회
SELECT * FROM soccer_epl;

-- soccer_epl 테이블 내 player_position 컬럼이 FW인 데이터 모두 조회
SELECT * FROM soccer_epl where player_position = 'FW';

-- soccer_epl 테이블 내 player_num 컬럼을 기준으로 내림차순 정렬, 오름차순 정렬
SELECT * FROM soccer_epl order by player_num desc;
SELECT * FROM soccer_epl order by player_num ASC;

-- 각각 컬럼을 따로따로 정렬 설정이 가능하다
SELECT * FROM soccer_epl order by player_num desc, player_age ASC;

 

  • FROM : 테이블을 가장 먼저 확인한다
  • WHERE : 테이블명 확인 후 해당 테이블에서 조건에 맞는 데이터를 추출해준다
  • SELECT : 최종적으로 추출된 데이터들을 조회한다
  • ORDER BY : 추출된 데이터를 정렬해준다

 

 

 

● UPDATE

table에 있는 레코드의 값들을 수정하며  SET 명령어와 함께 사용한다

ALTER는 테이블 구조 타입 추가 및 수정이며 update는 테이블 데이터값만을 수정하는 것이다.

UPDATE 테이블이름 
SET 필드이름1=데이터값1, 필드이름2=데이터값2 
where 필드이름=데이터값; -- 조건식을 써주지 않으면 테이블 전체의 레코드가 다 바뀐다.

 

 

 

 

● DELETE

table의 레코드 값을 삭제한다. 휴지통 개념으로 지웠을 경우 복구가 가능하다where 을 생략한다면 테이블에 저장된 모든 데이터가 삭제된다

-- soccer_epl 테이블의 player_position 컬렴 값이 DF인것을 지운다
DELETE FROM soccer_epl where player_position = 'DF';

 

 

 

 

● GRANT

GRANT는 권한을 부여하는 기능이다

-- U1 사용자에게 soccer 테이블에 대한 select를 사용할 수 있는 권한을 부여
GRANT privilege on soccer to U1;

-- U1 사용자에게 해당 테이블에 select 구문을 사용할 수 있는 권한을 부여하고 받은 권한을 다른 사용자에게 부여할 수 있는 권한을 함께 부여
GRANT select on 테이블명 to U1 with grant option;

 

  • all privileges : 모든 권한 부여
  • references : 외래키를 선언할 수 있는 권한 
  • with grant option : 권한을 받은 사용자가 부여 받은 권한을 다른 사용자에게 부여할 수 있다

 

 

 

● REVOKE

부여한 권한을 철회하는 기능이다

-- U1 사용자에게 soccer 테이블에 대한 모든 권한을 철회
Revoke privilege on soccer from U1;

-- U1 사용자에게 soccer 테이블에 대한 select 권한 철회
Revoke select on soocer from U1;

 

  • 만약 U1 사용자가 U2에게 권한을 주었는데 U3이 U2에게 동일권한을 부여하였다면 U1의 사용자가 Revoke select on soccer from U2; 구문을 입력하더라도 권한은 사라지지 않는다.  U3 사용자도 Revoke select on soccer from U2; 구문을 입력해야 U2 사용자의 해당 테이블의 select 권한이 완전히 없어지게 된다

 

 

 

 


 

 

 

Today short review 

DB와 SQL의 기본적인 문법 사용법을 알아보았다. 익숙해진 후 조금 더 심화된 문법에 대해 공부해봐야겠다

'MySQL' 카테고리의 다른 글

MySQL 조인(JOIN)  (1) 2023.10.28
MySQL 기본문법 활용  (2) 2023.10.26