본문 바로가기
JavaWeb

자바 웹 공부 17 - MySql4

by 넴넴L 2023. 1. 19.
728x90

오늘 해볼 것은 연산자 중에 비교 연산자다.

 

시작 전에 USE ~(자신이 만든 거) 실행

 

 

비교 연산자(comparison operator)
비교 연산자는 피연산자 사이의 상대적인 크기를 판단해, 참(true)이면 1을 반환하고 거짓(false)이면 0을 반환

다 하지는 않고 몇가지만 해보자

(어제 만들다 보니 너무 가독성이 안 좋은 거 같아 구분선을 좀 쓰려고 한다)


1. 비교연산 =

각각 잘 뜬다. 또한 where 조건문에서 많이 쓰인다.


2. NOT 연산

2가지 방법이 있고

실행하면 1은 1이 아니다! 라고 해서 false(0)로, 1은 2와 다르니 true(1)가 뜬다.

 

NULL은 연산 자체가 되지 않기 때문에 NULL값이 들어가 있는 것은 뜨지 않는다.


3. 크다, 크거나 같다.


4. 작다, 작거나 같다.


5. null 확인

이렇게도 가능하지만 위의 것이 더 간결하니 위의 코드로 사용하자.

 


6. Equal 연산 ( IS )


7. not Equal (IS NOT)


8. Null 비교 연산


9. 사이값 비교 연산 ( BETWEEN a AND b, NOT BETWEEN a, and b)


10. IN 연산 ( IN, NOT IN ) 

10을 1로 바꾸면 0으로 바뀐다.


 

논리 연산자(logical operator)
논리 연산자는 논리식을 판단하여, 참(true)이면 1을 반환하고 거짓(false)이면 0을 반환

1. AND 연산(AND, &&)

여러 개 가능.

나중에 하다 보면 AND가 2개라서 에러가 뜰 수 있다.(컴퓨터가 인식을 잘 못할 수도)

그래서 아래 코드로 바꿔서 사용하자


2. OR 연산 ( OR, || )

아래는 빈문자열 ''이 들어가 있는 것이다.

위에는 진짜 null인 것이므로 헷갈리지 말자.


3. XOR 연산 ( XOR )

XOR은 같으면 0이니 주의

 

 

AND 연산과 OR 연산에서 주의할 점
- 실제로 구하고자 하는 값을 정확히 파악

ex) name이 고길동 이면서 note값이 존재하지 않거나 roomNumber가 1000 이상인 레코드 중 모든 칼럼을 선택

1. name이 고길동 이면서 note값이 존재하지 않거나

2. name이 고길동 이면서 고길동의 note 값이 존재하지 않는 것

두 가지 뜻으로 해석이 된다.

 

이 둘의 차이점이 보인다. 실행해 보자

그래서 정확한 조건을 명확히 하고 작업을 해야 한다.

아니면 원하는 값을 얻지 못하는 경우도 많다.


 

흐름 제어

1. CASE
2. IF()
3. IFNULL()
4. NULLIF()

 

CASE
CASE 연산자는 값을 서로 비교하거나, 표현식의 논리값에 따라 다른 값을 반환
참고용 사진

복잡하니 이건 나중에 해보자

 

IF()
IF() 함수는 첫 번째 인수로 전달받은 표현식의 논리값에 따라 다른 값을 반환
참고용 사진

보통 자바에서 다 하기 때문에 이해만 하고 넘어가자

 

 

IFNULL()
첫 번째 인수로 전달받은 값이 NULL인지 아닌지를 검사하여 다른 값을 반환

이건 자주 쓰이므로 한 번 해보자

 

NULLIF()
인수로 전달받은 두 값이 서로 같은지를 검사하여 다른 값을 반환
참고용 사진

잘 쓰지 않으므로 넘어가자

 

패턴 매칭(pattern matching)
LIKE
임의의 문자나 문자열을 대체하기 위해서 와일드카드(wildcard) 문자를 사용할 수도 있다.

 

LIKE
특정 패턴을 포함하는 데이터만을 검색하기 위해 사용

어제 공부하면서 썼던 것을 기억해 보자

 

참고) '%'는 0개 이상의 문자라는 의미의 와일드카드(wildcard) 문자

특정 패턴을 포함하지 않는 데이터를 검색하고 싶을 때는 NOT LIKE 연산자를 사용

 

와일드카드(wildcard)
문자열 내에서 임의의 문자나 문자열을 대체하기 위해 사용되는 기호
참고용사진

저거 언더바(_)이니 참고하자

 

%는 0개 이상 문자를 대체, _는 1개의 문자를 대체

 

2개든 3개든 가능하다.


제약 조건
데이터의 무결성을 지키기 위해, 데이터를 입력받을 때 실행되는 검사 규칙
CREATE 문으로 테이블을 생성할 때나 ALTER 문으로 필드를 추가할 때도 설정

1. NOT NULL

2. UNIQUE

3. PRIMARY KEY

4. FOREIGN KEY

5. DEFAULT

 

NOT NULL
NOT NULL 제약 조건을 설정하면, 해당 필드는 NULL 값을 저장할 수 없다
이 제약 조건이 설정된 필드는 무조건 데이터를 가지고 있어야 합니다
NOT NULL 제약 조건은 CREATE 문으로 테이블을 생성할 때나, 나중에 ALTER 문으로 추가 가능

 

UNIQUE
해당 필드는 서로 다른 값을 가져야 한다
이 제약 조건이 설정된 필드는 중복된 값을 저장할 수 없다.
CREATE 문으로 테이블을 생성할 때나, 나중에 ALTER 문으로 추가
UNIQUE 제약 조건을 설정하면, 해당 필드는 자동으로 인덱스(INDEX)로 만들어진다

 

PRIMARY KEY
해당 필드는 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가짐
PRIMARY KEY는 테이블당 오직 하나의 필드에만 설정

 

FOREIGN KEY
한 테이블을 다른 테이블과 연결해 주는 역할
외래 키가 설정된 테이블에 레코드를 입력하면, 기준이 되는 테이블의 내용을 참조해서 레코드가 입력
하나의 테이블을 다른 테이블에 의존
설정할 때 참조되는 테이블의 필드는 반드시 UNIQUE나 PRIMARY KEY 제약 조건이 설정되어야 한다

 

FOREIGN KEY 예제를 들어보자

이런 형식으로 써야 한다

 

해준 뒤에 null을 2901로 바꾸고 삽입해주자

삽입을 해준 뒤 DELETE를 쓰면 삭제가 되지 않는다

참조가 되고 있으면 삭제를 막아주고 있기 때문이다

 

일단 이것까지만 해주고 나머지는 내일 해보겠다. 아마도 내일이 SQL문이 끝일 거 같은데

어차피 나중에 웹을 공부할 때도 SQL은 써야하니 복습 잘 해놓자

'JavaWeb' 카테고리의 다른 글

자바 웹 공부 18 - MySql6  (0) 2023.01.25
자바 웹 공부 17 - MySql5  (0) 2023.01.20
자바 웹 공부 16 - MySql3  (0) 2023.01.18
자바 웹 공부 15 - MySql2  (0) 2023.01.17
자바 웹 공부14 - MySQL  (0) 2023.01.16