로컬
파일
원격
데이터베이스
ERP란 전사적자원관리(Enterprise Resource Planning)의 약자로
기업의 모든 업무를 통합 관리할 수 있는 시스템을 의미
데이터의 집합인 데이터베이스를 관리 / 운영하기 위한 시스템 또는 소프트웨어
데이터의 집합
여러명의 사용자, 응용 프로그램이 공유
동시 접근 가능해야 함
데이터베이스에 명령을 주는 구문
DBMS - 서버(항상 오픈)
연결부분 - 네트워크
사용자, 응용프로그램 - 클라이언트
DB2 - IBM
Oracle - Oracle
MySQL - Oracle
Mariadb(MySQL의 무료버전) - MariaDB
SQLServer - MS
Access - MS
SQLite - SQLite : android
설치
외부 접근 보안
모니터링 - 튜닝
백업, 복원(restore)
내부 접근 보안
자격중 + Oracle(OCP, OCM)
데이터베이스와 프로그램 연동 => SQL
selec(가장중요)
insert
update
delete
create
alter
drop
rename
truncate
grant
revoke
commit
rollback
savepoint
데이터베이스 - 디렉토리
디렉토리 안에 테이블 (실제 데이터가 저장되는 저장소)
테이블은 행과 열로 이루어져있음(Excel의 확장판)
데이터베이스 목록보기
-p비밀번호 형식으로 쓸 경우 보안에 큰 문제가생겨 절대 사용 금지 (비밀번호 다 보임)
describe 를 desc로 줄여서 가능
select는 데이터베이스 내의 테이블에서 원하는 정보를 추출할때 사용
대소문자 구분 안함
selec 컬럼절
form 테이블명;
select * from dept; : dept 테이블의 전 컬럼을 다 보여줘
seltct*
from dept; 해도 됨
컬럼 : 컬럼(column, 열)이란 관계형 데이터베이스 테이블에서 특정한 단순 자료형의 일련의 데이터값과 테이블에서의 각 열을 말한다
select deptno, dname, loc부서 테이블에서 부서 번호, 부서 이름, 지역 이름을 볼거야
from dept;
줄여서 as
deptno를 no로, dname을 name으로, loc를 location으로 바꿈
공백치면 에러, 공백 원하면 '부서 위치' 처럼 ' ' 안에 넣음
' '로 공백 넣어주기, as 생략 알아서 ' ' 안의 값을 읽음
+ - * / %
집합개념으로 전체적용 / 계산된 컬럼을 보여주는 것도 가능하다.(sal * 12)
바꾸고싶은 이름 옆에 바꿀 이름 입력 as가 있어야하지만 생략돼있음
연봉 + 보너스 값 출력, 보너스가 null인데 null을 연산하면 null로 된다.
null 과 0 은 다르다
null은 연산시 null 출력 0은 값 출력
true는 1, false는 0
!= 는 <>로도 씀
true = 1, false = 0
select 컬럼이름 ...
from 테이블명
where절(행 제한조건)
컬럼명 비교, 논리연산 값
select *
from dept
where deptno = 10;
대 / 소문자 구분이 없어서 아스키값은 대/소문자 통일이다.
첫번째는 'king'보다 아스키값이 높은 문자열들만 출력
두번째는 'b'보다 아스키값이 낮은 문자열들 출력
특정 입사일자보다 숫자가 큰 입사일자들 출력
and로 범위 지정 하여 급여가 1000보다 크고 2000보다 작은 목록 뽑기
바로 2011을 넣는다고 출력 안됨.
and로 2011년도 첫날부터 끝날까지 지정해줘야함
or 연산자 || 사용
between으로 사용가능
between A and B 로 사용
Ex ) job in ('clerk', 'salesman'); job이 clerk이거나 salesman
null말고 is null / is not null로 전체 조회가 가능
'~%'; - ~ 로 시작하는것
'%~'; - ~ 로 끝나는 것
'%~%'; - ~ 이 있는것
언더바 한 개당 한 자를 의미, 언더바 갯수 후에 적힌 글자 위치에 맞는 목록 출력
ex)
where hiredate like '_k%'; 두번째 글자가 k인 (언더바가 한개이고 k가 2번째에 있어서 k가 두 번째에 있는 문자열, 목록 출력)
distinct로 deptno의 중복된 값을 배제하고 출력
첫번째는 중복 제거 안한 값 출력
두번째는 distinct로 중복 배제한 값 출력
deotbi와 job을 한 쌍으로봤을때 쌍의 값이 중복되게 출력되지않게 함.
limit A, B - A번째 줄 위치부터 B개 출력한다는 의미
0이 첫번째를 의미(배열 인덱스번호같이)
limit 0,3;과 limit 3; 은 똑같이 출력 / 앞에 숫자가 없으면 0번째 위치부터 라는 의미
order by 후 오름차순이나 내림차순 안써주면 오름차순으로 적용됨 (defualt)
select
from
where
order by 컬럼명(옵션으로 오름차순(asc), 내림차순(desc) 줄 수 있음)
첫번째출력 emp전체 테이블 출력 -> order by deptno asc로 deptno의 값을 오름차순으로 변경
두번째 출력 emp전체 테이블 출력 -> order by deptno asc로 deptno의 값을 내림차순으로 변경
hiredate 오름차순으로 정렬
첫번째 출력 기본
두번째 출력 deptno 오름차순
세번째 출력 deptno 묶음의 job 오름차순
1은 deptno가 정렬 / 2는 job 정렬 / 3은 empno 정렬 / ...
https://mariadb.com/kb/en/documentation/
select version() - 버전확인
select database() - 현재 데이터베이스 정보
status - 접속된 상태값
abs()
ceil(값) : 무조건 올림
floor(값) : 무조건 내림
-2는 뒤에서 부터 잘라서 잘린곳은 0으로 됨
2는 .부터 2개
0은 소수점 없이 출력
소수점 개수보다 많으면 0으로 더 채워져서 출력됨.
pow(2.2) : 2의 2승
pow(2,3) : 2의 3승
mod()
greatest(값, 값, 값, ..) : 값 중에 최대값
least(값, 값, 값, ...) : 값 중에 최소값
least(sal, 2000)하면 sal값과 2000중 작은 값 출력이 된다.
2000보다 작은 값들이 출력이 된거라면 sal값이 2000보다 작다는 것.
2000이 출력이 됐다면, sal이 2000보다 큰 값이라는 것.
ascii('문자') : 아스키값으로 나온다.
length('문자열') : 문자열의 길이를 알려준다.
공백도 문자열로 한다.
',' 조심해야함
몇번째 부터 시작인지 알려줌 / 없으면 0
20번 부서의 사원 이름중 mi가 들어간 이름중에 몇번째부터 들어가있는지 알려줌
left 왼쪽부분부터 입력값만큼
right 오른쪽부분부터 입력값만큼
mid ~번째부터 ~까지 (substring 써도 된다)
like 사용
instr 사용
left 사용
'mariadb database study' 에서 'study'를 '스터디'로 치환
9번째에서부터 8자 빼고 '데이터베이스' 집어넣음
값을 크게 주면 뒤에 글자를 덮어서 출력된다
lcase('대문자'), lower('대문자') : 대문자를 소문자로 변환
ucase('소문자'), upper('소문자') : 소문자를 대문자로 변환
ltrim() : 왼쪽 공백 제거
rtrim() : 오른쪽 공백 제거
trim() : 전체 공백 제거
4개의 공간에 왼쪽 빈공간에 '?' 채움
4개의 공간에 오른쪽 빈공간에 '?' 채움
now(), sysdate(), current_timestamp()
현재 년도,날짜,시간을 나타내준다.
curdate() : 현재 년, 월, 일 나타낸다
curtime() : 현재 시간을 나타낸다
interval : ~ 후
now() +1 / now() -1 하면 1초가 더해지거나 빼지는 것.
date_add(now(), interval 2 day) : 현재 날짜에서 2일 더함
date_add(now(), interval 2 month) : 현재 날짜에서 2개월 더함
date_sub ~ 일 전
date_sub(now(), interval 2 day) : 현재 날짜에서 2일을 뺌
특정 날짜의 ~ 일 전
date_sub('2023-03-24', interval 2 day) : 정한 날에서 2일 뺌
현재 날짜와 입력 날짜의 차이
-4 일전
TIMESTAMPDIFF(단위, 날짜1, 날짜2);
단위 기준으로 날짜2 - 날짜1 의 값이 나온다.
month는 달의 차
extract로 출력
단위(now())로 출력
요일
if( 조건, '참 결과', '거짓 결과')
만약에 comm에 null이있으면 0으로 출력해
ex01.sql이라는 텍스파일 새로 만들고 -> 메모장으로 켜서 실행시킬 구문 적고 -> Ansi, utf-8로 인코딩 바꾸고 -> 저장 -> sql에서 source 경로 적어주면 출력 됨