create user scott IDENTIFIED by tiger;
-- scott/tiger 계정의 생성
alter user scott IDENTIFIED by tiger;
-- scott 계정의 사용자 패스워드를 tiger로 설정(변경)
grant connect, resource to scott;
-- 관리자 scott에게 접속, 데이터베이스 사용권한 부여
-- 계정이 없는 경우 create, 계정이 있는 경우 alter
-- 계정의 잠금을 해제하고 동시에 비밀번호 변경하는 SQL문
alter user 계정이름 IDENTIFIED BY 계정비밀번호 account unlock;
grant connect, resource to shop;
인덱스(index)는 테이블에 저장된 데이터의 검색 속도를 향상시키기 위하여 사용된다.
일반적으로 도서에서는 색인표를 사용하여 특정 검색어에 해당하는 페이지를 빠르게 찾을 수 있듯이 DB에는 인덱스를 사용하여 검색 속도를 향상시킨다.
DESC 테이블명
DESCRIBE 테이블명
테이블의 컬렴명, 데이터형, 데이터 길이와 NULL 허용 여부 등과 같은 정보를 알려주는 명령어이다.
문법
SELECT [DISTINCT] {*, 컬럼명 [Alias], }
FROM 테이블명;
예시
SELECT * FROM emp;
SELECT ename FROM emp;
SELECT empno, ename FROM emp;
SELECT empno, ename
FROM emp
WHERE ROWNUM < 10;
관계형 데이터베이스는 동일한 컬럼으로 다른 테이블과 연결 가능함
SQL문은 대문자, 테이블명과 컬럼명은 소문자 권장
SELECT * FROM TAB;
- 현재 갖고있는 모든 테이블 조회
DESC dept;
- DEPT테이블의 컬럼정보 조회
쉼표로 여러 컬럼 select 하면 쓴 순서대로 나옴
숫자, 날짜형에 사칙연산 쓰면 가상의 컬럼으로 결과 보여짐
SELECT ENAME AS 성명, EMPNO AS 사번, SAL AS 급여 FROM EMP;
-- select할때 컬럼에 별칭 사용 가능
-- 원본 컬럼명이 바뀌진 않음
프로그래밍 언어에서는 나머지 연산자를 %를 사용한다.
하지만 SQL문에서는 MOD()함수를 사용하여 나머지를 구하고 %는 LIKE 연산자에서 사용하는 패턴 매칭 연산자로 사용되기 때문에 나머지 연산자로 사용할 수 없다.
null 값을 가진 컬럼 연산하려면 NVL이나 NVL2 써야함
SELECT 10*10 FROM dual; ->100
SELECT sysdate FROM dual; ->21/01/05
--별칭에서 AS는 생략 가능함
SELECT ename AS 이름 FROM emp;
SELECT ename 이름 FROM emp; (동일결과)
--별칭에 공백문자 등 특수문자를 사용하려면 쌍따옴표로 묶어줘야 함
SELECT ename AS "사원 이름" FROM emp;
SQL에선 반드시
SELECT empno 번호, ename 이름, sal 월급, sal*12+NVL(comm, 0) 연봉 FROM emp;
|| 이건 여러개의 문자열을 연결해서 하나의 문자열로 생성함
SELECT ename || sal AS "이름+월급" FROM emp; (컬럼+컬럼)
SELECT ename || '사원' "이름 직업" FROM emp; (컬럼+문자열)
SELECT ename || '의 직급은 ' || job || '이다.' AS "사원별 직급" FROM emp;
-- 이건 SQL에서의 주석
SELECT DISTINCT job FROM emp;
SELECT empno, ename, job, deptno
FROM emp
WHERE deptno = 30;
SQL에서는 '같다'라는 표현식을 = 하나만 씀 (== 아님)
SELECT empno, ename, sal, sal*12 연봉
FROM emp
WHERE ename = 'BLAKE';
= 연산자로 검색할 때 문자열이 대소문자까지 정확히 일치해야함
SELECT empno, ename, job, deptno
FROM emp
WHERE hiredate = '81/11/17';