[SQL] DAY02
1. 테이블 이름 변경 : RENAME
: rename table 테이블명(전) to 테이블명(후);
□ ALTER는 테이블 내부를 바꾸는 것이기 때문에, 테이블명 변경에는 사용 불가
□ RENAME으로 테이블명은 바꿀 수 있지만, DB명은 바꿀 수 없다.
2. 조건자 IN
: update test2 set age = 20 where id IN (4,5);
□ 검색 조건이 여러 개일 때 사용
□ 데이터가 작을 때는 or로, 데이터가 많을 때는 in을 사용하는 것이 효율적
□ or에 조건이 많이 붙을수록, or 연산자를 사용하는 것보다 in 연산자가 실행속도가 빠르다.
□ in 연산자 안에 서브쿼리 가능
3. 별칭 설정(alias) : AS
: select name as '이름', age as '나이' from test2 as a;
□ 칼럼, 테이블, 서브쿼리 등에 사용 가능
□ 해당 구문 안에서만 이름, 나이로 쓰이는 것. 이름이 바뀐 것이 아니다.
□ 보통 칼럼보다는 테이블 이름에 as를 사용한다. (조인, 서브쿼리 했을 때)
□ a.name으로 부를 수 있음
4. 검색 조건 : Like %
select * from student where address like 's%';
- address가 s로 시작하는 데이터 검색
□ 검색 시 사용. like (문자) % -> (문자)로 시작하는 필드들을 가져온다.
5. 중복 제거 : Distinct
select distinct address from student;
- 주소 중복없이 출력
□ 목록화 할 때 사용
□ 칼럼 앞에 distinct를 붙인다.
6. 산술연산자 ( + - * / )
□ 자바와 다르게 나머지 연산자가 없음
□ 값이 null일 경우는 연산이 아예 불가능하다.
null + 1 = null
□ 처음부터 값을 가질 수 없는 수의 default는 0으로 두기 (ex. 시험을 보기 전에 점수가 존재할 수 없음. null로 설정 시 자바 연동했을 때 nullPointerException이 발생할 수 있으므로 디폴트 값을 0으로 설정)
□ 비교연산자 (>, <. <=. >=. =. <>)
* <> : 같지 않다.
□ +=. -=. ++ 사용 불가 (얘네는 자바 문법)
□ 논리연산자(and, or, not)
□ 우선순위 ( )로 묶기
□ DB는 구문을 작성하는 것 자체가 '저장'에 해당한다.
□ cmd창에서는 ;를 작성하지 않으며, mysql > 이라고 mysql 창이 뜨면 그때 세미콜론으로 문장을 완성한다.
□ DB는 들어가는 데이터 값도 소문자/대문자 구분 안한다. 한글, 영어만 구분
□ 사실 delete는 db상에서 거의 쓰지 않는다. 회원 탈퇴를 할 경우, 바로 drop 해버리는 것이 아니라, 다른 회원탈퇴 테이블(=지워질 테이블)로 따로 옮겨놓는 것. 정해진 기간 동안 해당 테이블에 저장해두었다가 기간이 끝나면 같이 삭제
□ 고유번호로 붙이는 pk는 절대 재사용되지 않는다! auto_increment로 pk를 붙이면 절대 같은 번호가 다시 사용될 수 없다.
(PK는 절대 건드리면 안되는 값)
□ " "를 써도, ' '를 써도 상관은 없다.
□ sql에서는 자바에서처럼 복합대입연산자를 사용할 수 없다.
SQL :
update test2 set age = age + 1;
JAVA :
age += 1;