티스토리 뷰

SQL은 이미 어느정도 아는 내용이기도 하고 얼마 전에 정처기 공부하면서 리뷰하기도 했었으니 대충 슥 보고 넘어가면 될 것 같다.

 

2-7. MySQL 설치 및 세팅

- 내 컴퓨터에는 이미 WAMP 스택이 깔려있었기 때문에 그거 깔면서 같이 설치됐을 MySQL을 그대로 써먹으면 될거라 생각

- wampstack/mysql/bin 폴더를 환경변수에 추가

- MySQL 로그인: 콘솔창에서 'mysql -u root -p'

> -u는 아이디를 주는 부분이고 -p는 패스워드를 입력하겠다는 뜻. 패스워드는 WAMP 깔때 세팅했던 그거

> 아이디를 지정해주지 않고 그냥 mysql이라고만 치면 접근 거부 오류가 뜬다

 

2-8. SQL

- 사용자 계정 생성 및 권한 주기

grant all privileges on (DB명).* to (계정명)@'%' identified by (암호)'

flush privileges;

 

> %는 어떤 클라이언트에서든 접근가능하다는 의미. % 대신 localhost나 특정 IP주소를 주면 거기서만 접근가능할 것

> DB명 뒤의 .*는 모든 권한을 의미

> flush privileges 명령은 commit 같은 느낌으로 앞의 명령을 DBMS에 적용하라는 뜻

 

- 특정한 DB에 접속하기: mysql -h (호스트명) -u (계정명) -p (DB명)

- 특정한 DB에 SQL 파일 주기: mysql -u (계정명) -p (DB명) < file.sql

- 존재하는 DB 확인하기: show databases;

- 사용중인 DB 전환하기: use (DB명);

- MySQL 버전과 현재 날짜 확인하기: SELECT VERSION(), CURRENT_DATE;

> VERSION() 이나 CURRENT_DATE 같은 것들은 정해진 예약어임. 이런 것들은 대소문자를 구별하지 않는다

- 테이블 구조 확인: desc (테이블명); 또는 describe (테이블명);

 

- SELECT 문

> Alias 기능: select deptno as 부서번호 from department;

deptno라는 컬럼명 대신 '부서번호' 라는 별칭으로 화면에 띄운다. as를 생략하고 그냥 공백으로 써도 됨.

> concat 함수를 이용한 컬럼 합성

select concat(empno, '-', deptno) as '사번-부서번호' from employee;

> where절 조건에 쓰일 수 있는 키워드들: between, in, like 등

select * from employee where salary BETWEEN 1000 AND 2000;

select * from employee where deptno in (10, 30); // 사원번호가 10이나 30인 사원만 출력. 'deptno = 10 or deptno = 30' 이랑 같은 의미

select name, job from employee where name like '%A%'; // %는 여러 문자, _는 한 문자를 의미하는 와일드카드

> 함수: UPPER/LOWER, substring, LPAD/RPAD, TRIM / ABS, MOD 등 수학 관련 함수 등

select upper('NAme'), LCASE('nAmE'); // from이 없으면 테이블에서 검색하는게 아니라 그냥 준 문자열에 대한 결과를 뱉음

select LPAD('hi', 5, '*'); // 출력결과가 5자가 되도록 왼쪽에 *를 패딩으로 넣음. 결과: ***hi

select TRIM(' hello '); // 공백 삭제

 

> CAST 함수와 MySQL 타입

MySQL의 타입 종류: BINARY, CHAR, DATE, DATETIME, (SIGNED) INTEGER, (UNSIGNED) INTEGER, TIME

CAST (exp AS type)

CONVERT (exp, type)

 

> 그룹 함수: COUNT, AVG, MIN, SUM, STDDEV 등

위에서 봤던 것들은 단일 함수였음. 그룹 함수는 여러 개의 컬럼에서 값을 가져와서 하나의 결과를 출력하는 것

COUNT 함수의 경우 NULL은 무시함. 단 COUNT(*) 의 경우 레코드의 수를 가져오므로 컬럼 하나가 NULL이더라도 포함된다.

> group by의 사용

select deptno, avg(salary) from employee group by deptno; // 부서별 급여 평균을 구할 수 있다

 

- INSERT 문: INSERT INTO 테이블명 (필드리스트) VALUES (값리스트);

필드리스트를 지정해줄 경우 디폴트값이 지정되어 있는 필드는 생략할 수 있다. 디폴트값이 지정되어있지 않을 경우 기본적으로 NULL이 들어가는데, 그게 NULL이 허용되지 않는 필드인 경우 (primary key나 not null) 에러가 발생함

 

- UPDATE 문: UPDATE 테이블명 SET 필드1=값1, 필드2=값2... WHERE 조건식

WHERE절을 넣어주지 않으면 모든 레코드가 수정된다는 점 주의.

 

- DELETE 문: DELETE FROM 테이블명 WHERE 조건식

마찬가지로 WHERE절을 안 주면... 주의.

 

 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함