정렬 order by 정렬하고싶은것
- 낮은 > 높은 -> 오름차순(asc)
- 높 > 낮 -> 내림차순(desc)
cf)
국적으로 정렬
- SELECT * FROM Customers order by Country asc;-> asc생략가능
- SELECT * FROM Customers order by Country desc;
고객 번호로 정렬
- select * from Customers order by CustomerID asc;
- select * from Customers order by CustomerID desc;
국적으로 오름차순 정렬 하되, 값이 같아서 국적같아 정렬이 안되는 경우에는 고객 번호로 내림차순 정렬
select * from Customers order by Country asc, CustomerID desc;
이렇게 정렬 한다해서 칼럼만 나오는게 아니라 그 칼럼의 행도 다나옴
논리연산( 1 = TRUE, 0 = FALSE )
- not 논리값 뒤집기 : select not FALSE;
- and -> 두개의 논리값이 모두 참일 때 참으로 귀결. 그 외에는 거짓. 여러 조건을 동시 만족
- or -> 두개의 논리값이 모두 거짓일 때 거짓으로 귀결. 그 외에는 참. 여러 조건 중 하나라도 만족
- 논리연산 and, or 우선순위 = and > or , or먼저하고싶으면 ()
별명 붙이기
- select 컬럼 or 값 as 별명 from 테이블
between, in
- between -> 사이값 표현 ex ) select 5 BETWEEN 1 AND 10;
- in -> 여러 값을 포함시킬때
주문(Orders) 테이블에서 CustomerID 컬럼값과 EmployeeID 컬럼값을 더하기
- SELECT CustomerID, EmployeeID, CustomerID + EmployeeID as newID FROM Orders;
국적이 Mexico, Spain, France 인 고객만 조회
- select * from Customers where country = 'Mexico' or country = 'Spain' or country = 'France';
in을 사용하면 좀 더 편하게 특정 값이 포함된 결과를 확인할 수 있다.
- select * from Customers where country in ('Mexico', 'Spain', 'France');
테이블의 특정 컬럼을 뽑아서 연산할 수 있다. 이때 해당 컬럼의 모든 행이 연산 대상이 된다. 원래 Products 테이블 값이 바뀌지 않는다. update 안하면 안바뀜
- select Price + 10 from Products; : 테이블의 특정 컬럼에 연산을 하면 기본적으로 모든 행에 적용. 적용된 결과만 나온다.