DATABASE 관련 명령어
SHOW DATABASES;
SHOW DATABASES를 통해 현재 mysql 서버에 있는 database 들을 볼 수 있다.
USE [database_name];
USE명령어를 통해 사용할 데이터베이스를 지정할 수 있다.
사용할 데이터베이스를 한 번 지정한 이후에 실행되는 모든 SQL문은 지정한 데이터베이스에서 실행된다.
workbench에서는 명령어를 사용하는 대신 메인의 왼쪽 아래에 있는schemas에 있는 데이터베이스를 더블클릭하여 선택할 수도 있다.
SHOW TABLES;
SHOW TABLE STATUS;
SHOW TABLES를 통해서 현재 선택한 데이터베이스에 있는 table들을 조회할 수 있다.
SHOW TABLE STATUS를 통해서 현재 선택한 데이터베이스의 있는 table들을 조회할 수 있고, 해당 table들과 관련한 상세 정보들을 함께 출력한다.
DESCRIBE [table_name];
DESC \[table\_name\];
DESCRIBE명령어를 통해서 해당 table이 가진 column들을 반환한다. 열은 곧 테이블에서 속성 정보를 나타낸다. 축약형으로DESC라고 입력하여도 된다.
SELECT
SELECT ... SELECT * FROM [table_name] // 전체 열
SELECT [column_name] FROM [table_name] // 특정 열
SELECT [column_name],[column_name] FROM [table_name] // 복수의 열
SELECT명령어를 통해서 table에서 데이터를 가져올 수 있다.SELECT * FROM ...를 입력하면from이하에 있는 table에서 해당하는 모든 데이터를 가져와서 볼 수 있다.
- 대신 컬럼명을 입력하여서 전체 데이터 대신 특정 컬럼의 데이터만 가져와서 볼 수 있습니다.
WHERE
... WHERE ...
SELECT * FROM Customers
WHERE age > 20;
WHERE명령어를 통해 조회하는 데이터 결과에 특정 조건식을 적용하여 필터링할 수 있다. 테이블에서 가져온 전체 데이터 중에WHERE이하의 조건에 맞는 데이터들만 결과로 가져와서 출력하기 때문에,WHERE조건문의 범위가 아주 넓거나 조건문 자체가 없으면, 데이터의 크기가 크면 클 수록 데이터를 찾아오는 데에 더 큰 노력과 시간이 소요된다.
SELECT * FROM Customers
WHERE age > 20;
AND age < 50;
SELECT * FROM cities
WHERE country != South Korea OR country <> North Korea // <> === !=
SELECT * FROM goods
WHERE goods_id_number IN (12,56,235)
위와 같이WHERE는 여러가지 연산자들을 조합하여 다양한 조건식들을 만들어낼 수 있다. 적용할 수 있는 연산자는 아래와 같다.
- OR 연산자와 AND 연산자
- 조건연산자 (<,>,=, >=, <=, <> ,!= 등)
- 관계 연산자 (NOT, OR, AND, IN)
Sub-Query
...
WHERE [something] = ( SELECT [something]
FROM [table_name]
WHERE ... )
SELECT * FROM City
WHERE CountryCode = ( SELECT CountryCode
FROM City
WHERE Name = 'Seoul' )
Sub Query는 조건문 안에 조건문을 넣을 때에 사용하며, 위와 같은 방법으로 중복된 조건식을 사용할 수 있다. 첫 조건식WHERE의 대상과 서브쿼리 내의 SELECT 대상은 같아야한다.
LIKE
...
LIKE '\[string\]%' ... LIKE '\[string\]\_' SHOW variables LIKE 'char%' SELECT \* FROM City WHERE CountriesCode LIKE 'KO\_' SELECT \* FROM City WHERE Name LIKE 'Addis%'
LIKE를 통해 문자열의 내용을 이용하여 검색할 수 있습니다.%와_두 가지를 활용할 수 있다.
- [string]%는[string]이후에 어떠한 문자가 오든, 찾는 대상에[string]이 있는 값을 보여준다.%이후에 어떠한 것이 오든 앞의 문자열만 만족한다면 결과로 출력한다.
- [string]_은%와 비슷하지만,%와는 달리 length가 1, 즉 한 글자만 매치시키기 위해 사용한다.
DISTINCT
SELECT DISTINCT CountryCode FROM City
SELECT를 수행할 때DISTINCT를 추가하면 결과에서 중복된 값들이 있다면 이들 중 1개만을 출력한다. 결과로 받는 데이터가 중복되는 값이 많을 때나 데이터의 크기가 클 때에 유용하다.
ORDER BY
ORDER BY [something] DESC||(ASC)
SELECT * FROM Country
ORDER BY Population DESC
SELECT * FROM City
ORDER BY Population ASC // default로 오름차순으로 설정되었기에 생략가능
ORDER BY를 통해 결과값을 특정 컬럼에 따라서 오름차순/내림차순으로 정렬하여 결과값이 나오는 순서를 조절할 수 있다. 기본적으로 오름차순으로 정렬되어 있으며, 따라서 오름차순 정렬 명령인ASC를 생략할 수 있다. 내림차순으로 정렬할 시에는DESC를 사용한다.
LIMIT
LIMIT [number] SELECT * FROM UserData
ORDER BY age
LIMIT 100
LIMIT구문은 결과값의 상위 N 개 만을 한정하여 출력하고 싶을 때에 사용하며, 서버의 처리량을 많이 사용하는 쿼리문을 개선할 때에 많이 사용하는 구문이다.
참조 : velog.io/@two_jay/Mysql-%EA%B8%B0%EB%B3%B8-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC