착해지는 중 입니다.

[SQL] SQL설치 및 Developer사용하기 본문

BackEnd/Sql

[SQL] SQL설치 및 Developer사용하기

박쓸개 2024. 5. 2. 16:09

강사님이 주신 xe파일로 먼저 설치를 하고 cmd에서 몇 가지 명령어를 통해서 sqlplus를 실행해 봤다

이제 Developer로   SQL문을 입력해 볼 차례

SELECT *
FROM dba_users; --dba_users에 있는 모든 테이블

desc dba_tables; -- describe 구조확인
    
SELECT *
FROM dba_tables
WHERE owner = 'HR'; --HR테이블이 오너인 테이블


ALTER USER  hr IDENTIFIED BY hr ACCOUNT UNLOCK; 
--hr이라는 소문자에대해서 식별해서 계정의 account의 lock을 풀어줘

 

테이블과 SELECT 문 개요

테이블

테이블관의 관계는 JOIN / 집합적 사고로 생각하면 됨. 테이블은 데이터베이스객체이며 데이터를 저장한다.

데이터의 성질은 컬럼으로 표현된다. 

테이블의 구조

오라클과 데이터베이스의 아키텍처 간의 차이..?

 

유저 - 1명의 전지전능자가 있음 /데이터 서버에  종속되어있지 않음

특정 계정소유가 되지 않음

데이터 베이스 -데이터베이스의 단위로 정보시스템을 분리함. 데이터베이스 안에 객체가 있고 그 안에 스키마..

스키마 - 테이블들이 안에 있음 관련 있는 데이터들의 묶음/ view index 등등

 

계정소유의 데이터베이스 객체

but 오라클은 오라클서버에 인스턴스 이름 ORCL /db도 ORCL

user는 데이터 서버에 종속되어 있음

 

다른 DB에서 쓰는 계정을 오라클은 계정이다

 

기본 구조와 용어 및 작성 지침

UPDATE country
SET population = population +1
WHERE name = 'USA';

대, 소문자 구별 X

한 줄 또는 여러 줄 입력가능

키워드 약어 표기 및 키워드를 여러 줄에 걸쳐 입력 X 

절은 대개 별도의 줄에 입력(가독성)

들여 쓰기(가독성)

문장이 끝날 때 반드시 세미콜론(;)

 

SQL의 반이상은 Select! 이 것만 잘 알아도 SQL반은 했다고 할 수 있다고 합니다잉

 

Select  - 단순하게는 테이블에서 문장을 조회할 때 사용하지만

재료집합으로부터(소스를 지정해주는것) 원하는 결과집합(what)을 정의/요청/기술(Desc)하는(how)  SQL문장.

쉽게말해 무엇을 어떻게 가져올것인가를 지정하는 문장 (what을 얻기위한 how)

 

기본구조 6가지 절(일종의 버튼같은것, 필수기능과 옵션으로 나눌수있는데 select 와 from은 필수기능 나머지는 옵션)

내부적으로
처리되는 순서
이름 정의 설명
5 SELECT WHAT 정의(how) *, 컬럼, 수식, SQ(스칼라 서브쿼리) 등
한문장에 같은키워드 두번이 나오면 에러나지만 서브쿼리의 경우 ()로 사용 할 수 있다.
1 FROM(반드시) 재료집합의 정의 T(테이블), V(뷰), SQ(서브쿼리에서는 인라인 뷰(이름없는 뷰),
MV(구체화된 뷰 -데이터를 가지고있는 뷰 ),
JOIN(두개이상의 재료집합에서 합쳐진 임시 재료집합을 만들기위해서)
2 WHERE Filtering Rows 조건식(Predicate) True일때만 통과
3 GROUP BY 무리짓기 값(컬럼,수식): 같은 값을 갖는 행을 묶음
4 HAVING Filtering Groups 조건식(Predicate) True일때만 통과
6 ORDER BY 결과집합 정렬(값에 의해) 값(컬럼,수식,컬럼별칭), 오름/내림차순, Null처리

 

Select문 해석하기

SELECT last_name, salary, 12* salary--what
FROM employee;--how

 

select-list

select절과 from 절 사이 원하는 것을 요구 사항에 맞게 나열

가능한 요소들 -> *또는 테이블명   *:모든컬럼, 컬럼이름, 리터럴, 수식 또는 표현식, 함수 ,스칼라 서브쿼리

SELECT departments.*, employees.last_name, salary
FROM emplyoees, departments
WHERE employees.department_id = departments.department_id;

SELECT ROWNUM, departments.*
FROM departments;

 

 

식별자

데이터베이스의 객체 이름, 컬럼 이름, 컬럼 별칭

컬럼정의는 괄호안에,이름먼저(쿼티드네임) 이후에 타입 

대소문자구별

CREATE TABLE FROM ( --""없어서 유효하지않은이름..
NO NUMBER
);

CREATE TABLE "FROM" (--생성완료
NO NUMBER
);

 

컬럼별칭은 컬럼헤딩이 너무 길 경우, 특수문자가 포함 될 경우, 계산식에서 유용

정의방식은 한칸 띄움, AS 키워드, 큰 따옴표(quoted name)방식.

 

리터럴 Literal

-모든행에 대해 같은 값이 적용됨. 컬럼은 행마다 다른 값.

문자 리터럴 - 작은 따옴표로 문자를 감싼다. 

                      SQL에서 문자열은 오직' 작은 따옴표'로 표현됨(작은따옴표를 표시하고싶을때는 연속기술)

숫자 리터럴 - 정수 , 실수

날짜 리터럴 - 작은 따옴표는 자동형변환이 됨.(세션의 날짜 포멧에 따라)

                        고정된형식으로 표현 DATE, TIMESTAMP

                       TO_DATE사용해서 원하는 형식으로 변환 해서 사용 가능 

 

DISTINCT 쿼리결과의 중복제거 시 사용

SELECT DISTINCT last_name, job_id--조합해서 유니크한것을 찾음
FROM employees;


SELECT DISTINCT Job_id-- 중복제거 목적
FROM employees;

SELECT job_id
FROM employees
GROUP BY job_id;--그룹바이 목적이라면

 

'BackEnd > Sql' 카테고리의 다른 글

[SQL] 중첩 함수 및 NULL 관련 함수  (0) 2024.05.07
[SQL] 데이터 타입 및 변환 함수  (0) 2024.05.07
[SQL]단축키  (0) 2024.05.07
[SQL] 날짜 연산과 날짜 함수  (0) 2024.05.07
[SQL] 연산자  (0) 2024.05.03