- 공유 링크 만들기
- X
- 이메일
- 기타 앱
DBMS (DataBase Management System) : 여러사람에 의해 공유될 목적으로 저장된 데이터의 집합
-동시성 ( 동시에 접속이 가능하다 )
-메모장에서 글을 열면 글자가 안보인다. 이런문제를 해결하기 위함
-동일한 방법으로 조회할 수 있는것.
- 여러종류의 기계에서 동일하게 보일 수 있다. (보편성)
동시성 / 보편성
트랜젝션 : 여러 단계의 과정을 하나의 작업 행위로 묶는 행위이다.
그러니까 쉽게 내계좌-> 출금 -> ATM -> 입금 -> 상대방 계좌
이렇게 했을때 입금이 취소됬을때 출금이 벌써 된 돈이 들어간 것이 취소가 되어야 하는 과정이 있다.
원자성 : 트랜젝션 내의 작업 전체가 실행이 완료되거나 / 한군데라도 취소가 되면 안되거나 해야함.
일관성 : 트랜젝션이 수행된 이후 -> 데이터 베이스에 일관성있게 보존 되어야 한다.
독립성( 독립성 ) : 여러 트랜잭션이 동시에 실행이 되도 각각 트랜젝션은 서로 영향이 없다.
지속성 : 트랜젝션이 커밋된 이후 해당 트랜젝션으로 변경된 모든 사항이 보존되어야 한다.
SQL은 DBMS와 통신하기 위한 유일한 수단이 되기 때문에 배워야 한다.
정형/ 비정형 데이터 (목적에 따라 선택하면 된다. )
- RDBMS
안정성, 무결성
제조업, 금융 , 회계등의 데이터 일치가 중요한 시스템에
-NOSQL
유연한 데이터 구조
빅데이터같은
SQL 기초 공부
| : or
{ } : 여러개가 반복된다.
[] : 옵션 으로 있을 수도 있고 없을 수도 있다.
SELECT * | { colon | expression [allias] }
FROM 테이블 이름 ;
ex) 실습
SELECT *
FROM lprod;
.별표는 전체를 지칭하는 것이다.
SELECT buyer_id, buyer_name
FROM buyer;
. 카트의이름을 가진 테이블의 모든열들을 볼 수 있는것.
SELECT *
FROM cart ;
SELECT mem_id, mem_pass, mem_name
FROM member;
SQL 실행방법
1. 실행하려고 하는 sql을 선택후 ctrl + enter
2. 실행하려는 sql 구문에 커서를 위치시키고 ctrl + enter;
.SQL의 경우 KEY워드의 대소문자를 구분하지 않는다. ( 자바랑 다른부분이다. )
그래서 SQL은 정상적으로 실행된다.
.Coding rule이 회사마다 있다.
SELECT 쿼리는 테이블의 데이터에 영향을 주지 않는다.
SELECT 쿼리를 잘못 작성 했다고 해서 데이터가 망가지지 않는다.
SELECT ename, sal, sal + 100 (여기서 보면 쿼리를 ,쉼표로 연결하고 있지 그리고 아무것도 붙이고 있지 않아 따옴표를 )
FROM emp;
DESC 테이블구조를 확인
연산
숫자 + 숫자 = 숫자값
문자 + 문자 연결은 | | ( Java ) -> 자바에서 하는 + 이 역할과 같은것
날짜 + 숫자는?
수학적으로 정의된 개념이 아니다.
오라클에서 정의한 개념이다.
날짜에다가 숫자를 일수로 생각하여 더하고 뺀 일자가 결과로 된다.
날짜 + 숫자 = 날짜
EX )
SELECT ename, hiredate after_1year, hiredate + 365, hiredate - 365 before_1year
ename 과 hiredate after_1year 두개는 column
hiredate + 365 는 hiredate라는 column에 365를 붙인것이고 hiredate - 365 before_1year 는 hiredate column에서 365를 뺀것을 before_1year라는 별칭을 붙인 것이다. 두개는 expression 이다.
별칭이란 : column 에 새로운 이름을 부여하는 것이다.
column | expression 뒈에 [AS] [column 명 ]
as는 생략이 가능하다.
별칭을 부여할 때 주의할 점
1. 공백이나, 특수문자가 있는 경우 " 얘로 감싸줘야 한다.
2. 별칭명은 기본적으로 대문자로 취급되지만 소문자로 지정하고 싶으면 " 얘를 적용한다.
' ' 는 문자열 이고 " " 이거는 별칭의 특수문자 띄어쓰기 소문자 지정
, 이거는 colone을 구분하는 것.
SELECT ename(공백이 문제) emp name -> "emp name"
FROM emp;
SELECT ename "emp name", ( ename 을 emp name이라는 별칭으로 바꿔준것 ), empno emp_no, empno "emp_no2"
FROM emp;
? _ 애가 있는데 왜 emp_no 는 큰 따옴표 " 로 묶어 주질 않았지?
자바에서 문자열 : " Hello World" 이지만
SQL에서의 문자열은 : ' Hello World '
매우중요
NULL : 아직 모르는 값
숫자타입 : 0이랑 NULL은 다르다.
문자타입 : ' ' 공백문자랑 NULL은 다르다.
주의점 : NULL을 포함한 연산의 결과는 항상 NULL이다.
5 * NULL = NULL
800 + NULL = NULL
800 + 0 = 800
emp 테이블 테이블 column 정리
1. empno : 사원번호
2. ename : 사원 이름
3. job (담당 ) 업무
4. mgr : 매니저 사번번호
5. hiredate : 입사일자
6. sal : 급여
7. comm : 커미션
8. deptno : 부서번호
EMP 테이블에서 NULL값 확인
SELECT *
FROM emp;
ex) SELECT prod_id "id", prod_name "name"
FROM prod;
-> prod_id 를 별칭인 id로 해서 출력
prod_name 을 별칭인 name으로 해서 출력 as는 생략해도 되고
literal
literal : 값 자체
literal 표기법 : 값을 표현하는 방법
숫자 10이라는 숫자 값을
자바에서는 : int a = 10; 이렇게 표현
SQL에서는 SELECT empno, 10
FROM emp;
문자
java : String str = "Hello, world";
column 별칭 , expression 별칭 , 가능 " " 얘는 별칭을 가리키는 말
SQL 은 SELECT empno e, '
*column 인지 expression 인지 잘 구분해 줘야 한다.
SELECT 뒤에 * | { column | expression [alias] }
SQL에서의 날짜 값 표현
자바에서는 primitive type 8개 : int, byte, short, long , float, double,
문자열 => String, class
날짜 => date class
SQL에서는 리터럴 값 자체
문자열 연산
자바에서는 + 는 결합 연산
"Hello" + "world" => Hello world
"Hello" - "world" : 연산자가 정의되어 있지 않다.
"Hello" * "world" : 연산자가 정의되어 있지 않다.
즉 자바에서는 + 는 문자열을 연결하는거지만 - 와 * 는 사용되지 않는다.
SQL에서는 어떻게 문자열을 연산할까? ||
||, concat 함수 -> 결합연산
emp 테이블의 ename, job column 이 문자열
ename ' ' || job
SELECT ename || ' ' || job
FROM emp;
CONCAT (문자열1, 문자열 2 ) : 문자열1과 문자열2를 합쳐서 만들어진 새로운 문자열을 반환해준다.
1) SELECT ename || ' ' || job, -> 이게 무슨 의미냐면 연산자야. 즉 ename이라는 column의 데이터 내용에다가 더하기 ' ' 즉 공백 더하기 job이라는 데이터를 더해준거다 라는 뜻
그래서 ename의 데이터 공백 job의 데이터 이렇게 프린트가 된다.
2) CONCAT ( CONT(ename, ' '), job )
FROM emp;
3)SELECT ename || ' ' || job
CONCAT ( CONT(ename, ' '), job )
FROM emp;
그러니까 3) 은 1)과 2)번 인 ename job 이랑 ename job 이고 두개는 동일하게 나오지만 column 은 다르게 나온다.
USER_TABLES : 오라클에서 관리하는 테이블 (뷰 )
접속한 사용자가 보유하고 있는 테이블 정보를 관리
SELECT 'select * FROM ' || table_name || ';' AS "QUERRY"
FROM user_tables;
? 굳이 특별한게 있어??
댓글
댓글 쓰기