본문 바로가기
개발/Database

MySQL 기본 명령어

by 안뇽! 2021. 10. 12.
반응형

 

데이터베이스 관련 명령어

  • 데이터베이스 생성
CREATE DATABASE 데이터베이스_이름;
  • 데이터베이스 사용
USE 데이터베이스_이름;
  • 테이블 생성
필드 이름 필드 타입 그 외의 속성
id 숫자 Prime key 면서 자동 증가하도록 설정.
name 문자열(최대 255개)  
email 문자열(최대 255개)  
CREATE TABLE user (
  id int PRIMARY KEY AUTO_INCREMENT,
  name varchar(255),
  email varchar(255)
);
  • 테이블 정보 확인
DESCRIBE user;

DESC user;

둘 다 같다.

DESCRIBE user; 명령어를 통해 user 테이블의 정보를 확인할 수 있다.

 


SQl 명령어

SELECT

SELECT 'hello world'//문자열

SELECT 2//숫자

SELECT 2+3//간단연산

 

SELECT FROM

//특성 1개
SELECT name FROM user

//특성 여러개 
SELECT name, phone_number FROM user

//테이블의 모든 특성
SELECT * FROM USER

 

WHERE

//특정 값과 동일한 데이터
SELECT name, phone_number FROM user WHERE name='june'

//특정 값을 제외한 데이터
SELECT name, phone_number FROM user WHERE name<>'june'

// 특정 값보다 크거나 작은 데이터를 필터할 때에는 
//'<', '>', 비교하는 값을 포함하는 '이상', '이하' 값은 '<=', '>=' 을 사용한다.
SELECT name, phone_number FROM user WHERE distanceFromSchool>1000

WHERE LIKE

//user에서 name이 ~~E 인 것들만 골라서 name, phone_number를 조회
SELECT name,phone_number FROM user WHERE name LIKE "%E"

//user에서 name이 J~~인 것들만 골라서 name, phone_number를 조회
SELECT name,phone_number FROM user WHERE name LIKE "J%"

WHERE IN

//user 중 전화번호가 070이나 010인 내용들을 모두 조회
SELECT * FROM user WHERE phone_number IN ("070","010")

WHERE IS NULL

//값이 없는 경우를 찾을때
SELECT * FROM Country WHERE name IS NULL

//값이 없는 경우를 제외할 때
SELECT * FROM Country WHERE name IS NOT NULL

ORDER BY

돌려받는 데이터 결과를 어떤 기준으로 정렬하여 출력할지 결정한다. ORDER BY는 선택적으로 사용할 수 있다.

//오름차순으로 정렬하여 학생들을 조회
SELECT * FROM students ORDER BY name

//내림차순으로 정렬하여 학생들을 조회
SELECT * FROM students ORDER BY number DESC

LIMIT

결과로 출력할 데이터의 갯수를 정할 수 있다. LIMIT은 선택적으로 사용할 수 있다. 쿼리문에서는 가장 마지막에 추가된다.

//데이터 결과중 200개만 출력한다.
SELECT * FROM peopleOfCity LIMIT 200

 

DISTINCT

중복제거

//동명이인들을 신경쓰지 않고 이름만 조회함.
SELECT DISTINCT name FROM User

INNER JOIN

 

교집합을 기준으로 연결한다.

 

content와 user가 다음과 같다.

user
content

이때 다음 명령어를 입력하면 아래와 같은 테이블이 출력된다.

SELECT content.title from content INNER JOIN user 
on user.id=content.userId 
where user.name='jiSungPark'

1. content 테이블중에서 , user와 겹치는 부분의 content.title을 출력한다. -> content.userId=1,5

 

2. (user.name='jiSungPark'이어야함) -> content.userId = 1

 

3. content중 userId = 1인 값의 title은 soccer 이다.

OUTER JOIN

없는 값은 출력하지 않는다.

위와 같은 상황에서 아래의 명령어를 입력하면 다음과 같은 테이블이 출력된다.

//각 user(컬럼명: name)가 작성한 글의 개수 (컬럼명: ContentCount)를 출력

SELECT u.name AS 'name', COUNT(c.id) AS 'ContentCount'
FROM user AS u
LEFT JOIN content AS c ON u.id=c.userId
GROUP BY u.name;

SELECT ~~ FROM user ~~ 이기 때문에, user에 있는 목록들 중에서 겹치는 부분을 뽑아온다.

하지만 다음과 같이 입력하면 테이블이 바뀐다.

SELECT u.name AS 'name', COUNT(c.id) AS 'ContentCount'
FROM content AS c
LEFT JOIN user AS u ON u.id=c.userId
GROUP BY u.name;

SELECT ~~ FROM content ~~ 이기 때문에, content에 있는 목록들 중에서 겹치는 부분을 뽑아온다.

content에는 차두리, 박지성만 있기 때문에 아래와 같은 테이블이 출력된다.

 

반응형

'개발 > Database' 카테고리의 다른 글

JSON, BSON  (0) 2021.10.19
MongoDB에서 sample data 이용하는 방법  (0) 2021.10.19
MVC 모델-뷰-컨트롤러  (0) 2021.10.16
데이터베이스 정규화  (0) 2021.10.13
SQL과 NoSQL  (0) 2021.10.09