[DB] SQL - 1
by 너나나SQL 정리
SELECT: 무엇(어떤 열)을 가져올지 FROM: 어디서 가져올지 WHERE: 어떤 조건으로 필터링할 것인지 |
1) SELECT
SELECT column1, column2, … FROM table_name;
ex) SELECT CustomerName, City FROM Customers;
SELECT 뒤에 DISTINCT를 넣으면 중복 제거
ex) SELECT DISTINCT City FROM Customers;
SELECT COUNT(DISTINCT City) FROM Customers;
SELECT COUNT(*) AS DistinctCountry FROM (SELECT DISTINCT Country FROM Customers);
2) WHERE
ex) SELECT * FROM Customers WHERE Country='UK';
<>: 같지 않음(!=)
ex) SELECT * FROM Products WHERE SupplierID <> 1
BETWEEN: 특정 범위 사이
ex) SELECT * FROM Products WHERE price BETWEEN 10 AND 30
// 10, 30도 포함
LIKE: 특정한 패턴을 찾음
ex) SELECT * FROM Customers WHERE City LIKE "s%";
// City가 s로 시작하는 애들. %s면 s로 끝나는 애들이고 _s%이면 s가 두번째인 애들 %는 문자열, _는 문자
IN: 여러 조건(OR같은 친구)
ex) SELECT * FROM Customers WHERE Country IN ('Mexico', 'France');
// Country가 Mexico나 France인 애들
AND, OR로 WHERE에 여러 조건 사용 가능, NOT
ex) SELECT * FROM Customers WHERE City='Berlin' AND Country='Germany';
// City가 Berlin이고 Country가 Germany인 애들
ex) SELECT * FROM Customers WHERE City="Berlin" OR Country="France";
ex) SELECT * FROM Customers WHERE NOT City="Berlin";
// City가 Berlin이 아닌 애들
3) ORDER BY
순서대로 정렬, 내림차순으로 정렬하고 싶으면 DESC
ex) SELECT * FROM Customers ORDER BY Address;
ex) SELECT * FROM Customers ORDER BY City DESC;
ORDER BY에 여러 개 속성을 넣을 수 있음
-> 첫번째 기준으로 정렬했을 때 같은 애들이 있으면 두번째 기준으로 정렬
ex) SELECT * FROM Customers ORDER BY Country, CustomerName;
// Country로 정렬하고 얘네가 같은 애들은 Name
순으로 정렬
ex) SELECT * FROM Customers ORDER BY Country ASC, CustomerName DESC;
// Country를 기준으로 오름차순 정렬하고 country가 같은 애들은 이름을 내림차순으로 정렬
4) INSERT INTO: 테이블에 새로운 레코드 추가
INSERT INTO table_name (column1, column2, …) VALUES (value1, value2, …)
// column1 속성에 value1을 가진 레코드 추가)
ex) INSERT INTO Customers (CustomerID, CustomerName, City) VALUES ("92", "Kim", "Busan");
// 채우지 않은 attribute은 null이 들어감
INSERT INTO table_name VALUES (value1, value2, value3, …)
// table의 모든 속성에 value를 가진 레코드 추가
ex) Insert INTO Customers Values (93, "Kim", "Kim", "ABC", "Busan", "123456", "Korea");
5) IS NULL/IS NOT NULL
=, <, <> 이런 애들로 Null value를 test 할 수 없음
대신 IS NULL, IS NOT NULL로 null값 찾을 수 있음
ex) SELECT CustomerName, Address FROM Customers WHERE Address IS NULL;
// address가 null값인 레코드의 CustomerName, Address 가져옴
ex) SELECT CustomerName, Address FROM Customers WHERE Address IS NOT NULL;
// address가 null값이 아닌 레코드의 CustomerName, Address 가져옴
6) UPDATE: 테이블에 이미 존재하는 레코드를 수정
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
ex) UPDATE Customers SET CustomerName="Ohhh", City="New City" WHERE CustomerID=1;
// CustomerID가 1인 애의 CustomerName과 City를 수정
ex) UPDATE Customers SET CustomerName="OTL", Address="MUINDO" WHERE Country="Mexico";
// Country가 Mexico인 애들 모두 CustomerName과 Address를 바꿈
7) DELET: 테이블에 존재하는 레코드 삭제
DELETE FROM table_name WHERE condition;
ex) DELETE FROM Customers WHERE CustomerName="OTL";
// CustomerName이 OTL인 애들 삭제
ex) DELETE FROM Customers;
// 조건을 안 적으면 테이블에 존재하는 모든 레코드 삭제 (테이블이 사라지는건 아님!!)
참고 자료
블로그의 정보
공부 기록
너나나