[sql 첫걸음] 2. 테이블에서 데이터 검색

ㅎㅎ·2021년 9월 12일
0

SQL

목록 보기
4/5

📌 4강. 테이블

- select 명령 구문

select * from 테이블명;

select는 명령의 종류, *는 모든 열 ;은 명령문의 마지막을 뜻하며, from 뒤에는 테이블 명을 써준다. sql 명령의 경우 select구와 from구로 나뉜다.

예시)

- 테이블

위의 select 명령을 실행하면 행(레코드), 열(컬럼/필드) 형식의 테이블이 출력된다. 그리고 이 행과 열이 만나는 부분을 이라고 한다. 셀에는 하나의 데이터 값이 저장되어 있다.

- 예약어와 데이터베이스 객체명

selectfrom이 구를 결정하는 키워드이자 예약어이다. 데이터 베이스에는 테이블 외에 다양한 데이터를 저장,관리하는 어떤 것을 만들 수있다. 이를 데이터베이스 객체라고 부르는데 예를 들면 view가 그에 해당한다. 데이터베이스 객체는 이름을 붙여 관리하는데 같은 이름의 객체는 만들 수 없다.

- 값이 없는 데이터 = NULL

예시를 보면 셀의 값이 NULL로 표시된 부분이 있는데 이는 특별한 데이터 값이 아무것도 저장되어 있지 않다는 뜻이다.


📌 5강. 테이블 구조 참조하기

- DESC

desc 테이블명;

desc 명령으로 테이블에 어떤 열이 정의되어있는지 알 수 있다.

  • field 에는 열의 이름,
  • type에는 해당 열의 자료형, int(11)은 11자리 정수값을 저장할 수 있는 자료형을 말한다.
  • key는 해당 열이 '키로 '지정되어 있는지,
  • Default는 그 열에 주어진 기본값 즉 생략했을 경우 적용되는

- 자료형

  • INTEGER : 정수값을 저장할 수 있는 자료형. 소수점 X
  • CHAR : 문자열형의 한 종류, 문자열형에서는 열의 최대 길이를 지정해야한다. 언제나 고정된 길이로 저장되기 때문에 최대 길이보다 작은 문자열을 저장할 경우 공백문자로 나머지를 채운 후 저장한다.
  • VARCHAR : 문자열형의 한 종류. 최대 길이를 지정해야하나 데이터의 크기에 맞춰 저장공간의 크기도 변경된다.
  • DATE : 날짜 값을 저장할 수있는 자료형
  • TIME : 시간을 저장할 수 있는 자료형

📌 6강. 검색 조건 지정하기

select1,2 from 테이블명 where 조건식

행을 선택할 때는 where구를 사용하며, 열을 선택할 때는 select 구를 사용한다. sql에서는 구의 순서가 정해져 있어 바꿀 수 없다. 따라서 select ->from -> where 순으로 적어야 한다.

- 조건식

where 구 조건식은 열과 연산자, 상수로 구성되는 식이다.

예제에서는 no = 2라는 식을 사용했다. 즉 이 조건식에 일치하는 행만 select의 결과로 반환된다.
no = 2 라는 조건식에서 no는 열 이름이며, =는 연산자, 2는 상수이다.

만약 조건식을 no <> 2로 바꾼다면 2행을 제외한 모든 행이 출력된다. 연산자 <>는 값이 서로 다른 경우를 의미한다.

또한 where구를 이용해 name의 열 값이 "박준용"인 행만 추출할 수 있다. 이때 주의해야 할 점은 name행이 문자열형이기 때문에 검색 지정값도 그 자료형에 맞게 지정해야 한다.

- NULL 값 검색

NULL을 검색할 때는 조심해야 한다. null은 연산자로 검색이 불가능하다. 따라서 연산자가 아닌 IS NULL를 사용해야 한다.

select * from 테이블명 where 행이름 IS NULL;

// null이 없는 경우 검색하고 싶을 경우
select * from 테이블명 where 행이름 IS NOT NULL;

예시)

- 비교연산자

  • = : 좌변과 우변이 같을 때 참
  • <> : 좌변과 우변의 값이 같지 않을 경우 참
  • >
  • >=
  • <
  • >=

📌 7장. 조건 조합하기

- AND(교집합)

AND는 좌우의 식이 모두 참일 경우 값을 반환한다.

조건식 and 조건식

예를들어 맨 위의 예시에서 a과 b열이 모두 0이 아닌 행을 검색할때는 ,

a 열에서 0이 아닌 행은 1과 4행 그리고 b열에서 0이 아닌 행은 2,4,5 행이므로 a와 b 열에서 모두 0이 아닌 행은 4행이다.

- OR(합집합)

어느 쪽이든 조건을 만족하면 결과는 참이 된다.

조건식 or 조건식

or은 조건식을 연결하면 어느 쪽이든 만족하는 행을 모두 검색할 수 있다.
그리고 or보다 and가 더 우선순위가 높다.

- NOT으로 조합

not 조건식

not 연산자는 오른쪽에만 항목을 지정하는 '단항 연산자'이다. 오른쪽에 지정한 조건식의 반대 값을 반환한다.


예를 들어 a열이 0이 아니거나 b열이 0이 아닌 행을 제외한 나머지 행을 검색할때는 위와 같이 할 수 있다.

- AND와 OR을 사용할 경우 주의할 점

예를 들어 no열의 값이 1 또는 2인 행을 추출하고 싶을 경우, 이렇게 한다면 상수 '2'는 논리 연산으로 항상 참이 되서 모든 행을 반환한다.

select * from sample24 where no = 1 or '2';

따라서 올바른 조건식을 사용해야 한다.

select * from sample24 where no = 1 or no = 2;

연산자의 우선순위

select * from sample24 where a <>0 and b <>0;

이라는 문을 이렇게 바꿀 수 있다.

select * from sample24 where a=1 or a=2 and b=1 or b=2;

하지만 이 문을 실행하면 다른 결과가 나오는데 이는 연산자의 우선순위 때문이다. AND > OR 이기 때문에 위 조건문에서는 a =2 and b= 1문이 먼저 실행된다. 따라서 즉 3개의 조건문이 or로 연결된 것이나 다름없다. 따라서 기존문과 동일한 쿼리문을 실행하려면 괄호를 사용해야한다.

select * from sample24 where (a=1 or a=2) and (b=1 or b=2);d=

0개의 댓글