착해지는 중 입니다.
[SQL] SQL설치 및 Developer사용하기 본문
강사님이 주신 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 |