Skip to main content

[SQL] 기본 문법 정리

Related image



Oracle XE와 Oracle SQL Developer를 사용하여 공부했으며

(오라클 홈페이지에서 다운 받을 수 있다),

Oracle Standard Edition에 기본적으로 존재하는 샘플 데이터 베이스인 

SCOTT 계정을 사용하였다.


1. Oracle XE 설치와 기본 셋팅

  - SQL*PLUS 실행 방법

  처음에는 보안 상의 이유로 system 등을 제외한 계정은 막혀있을 수 있다.

  따라서 system 계정으로 로그인 한다(암호는 설치 시 설정한 암호). 


  - cmd에서 

  > sqlplus / sysdba


  - 사용자 목록 확인

  > SELECT username, default_tablespace, account_status FROM DBA_USERS; 

  Expired & Locked로 표시되는 사용자는 계정을 풀기 전에는 로그인이 되지 않는다.


  - 계정 Unlock

  > create user scott identified by tiger;


  - 계정 권한 부여

  > grant connect, resource to scott;


  - scott 계정으로 로그인

   > conn scott


  - 테이블 구조 확인

  > desc emp

  > desc dept

  > desc bonus

  > desc salgrade


-------------------------------------------------------------------------------------------------------------------------


2. 기본 문법

⨳ DATA는 대소문자를 구별하지만 SYNTAX는 구별하지 않는다.

2.1. SELECT 

SELECT [열 리스트]
[FROM 테이블 리스트 ]
[WHERE 조건]
[GROUP BY 열 리스트 [HAVING 조건]]
[ORDER BY 열 리스트 [ASC | DESC]];


2.1.1 기본 SELECT : 특정 column만 선택(projection)

> SELECT ename FROM emp;

> SELECT ename, job, comm FROM emp;


2.1.2. AS(ALIAS): column 이름 변경

> SELECT ename 이름 FROM emp;


2.1.3 DISTNCT: 중복 제거

> > SELECT DISTINCT ename FROM emp;


2.1.4 산술 연산 가능

> SELECT ename, (sal + 500) * 12 FROM emp;


2.1.5 NVL(expr 1, expr 2): expr1이 NULL이면 expr2를 출력 (⨳ 데이터 타입에 주의)

> SELECT sal, comm, (sal+NVL(comm,0))*12 FROM emp;


NVL2(e1, e2, e3): e1이 NULL이면 e2, NOT NULL이면 e3

NULLIF(e1, e2): e1과 e2가 같으면 NULL, 아니면 e1

COALESCE(e1, e2, ... en): 첫 NOT NULL인 식 출력, 없으면 en


2.1.6 Literal

SELECT ename || ' is a ' || empno;



2.2 WHERE


2.2.1. 연산자 정리

=, !=, >, <, <=, >=
IN
BETWEEN a AND b
LIKE
IS NULL, IS NOT NULL
AND, OR
NOT
ANY, ALL
EXIST


2.2.1.1 =, !=, >, <, <=, >=

> SELECT ename FROM emp WHERE ename = 'SMITH';


2.2.1.2 LIKE
%: 임의 길이의 문자열(공백 가능)
_: 한 글자

> SELECT ename FROM emp WHERE ename like 'SM%';

> SELECT ename FROM emp WHERE ename like 'SMIT_';


2.2.2. ORDER BY
ASC: 오름차순(기본값)
DESC: 내림차순

> SELECT * FROM emp ORDER BY deptno, sal DESC

Comments

Popular posts from this blog

ftp, sftp, ssh 차이점

telnet ==> ssh  ftp ==> sftp  p2p방식이라 보안에 취약한것이 아니라 telnet과 ftp 인 경우는 패킷을 캡쳐해서 보면, 평문이기 때문에 보여져서는 안될부분(패스워드, 계정 등)이 쉽게 노출된다. 이는 아주 큰 문제를 발생시킬 수 있다. 이런 취약점을 보안하기 위해서 telnet은 ssh로  f tp는 sftp로 암호화된 프로토콜 SSL을 사용하는게 좋다. 이렇게 하면 모든 패킷을 암호화 해서 주고 받으므로  패킷을 잡아내더라도 해독하는데 슈퍼컴퓨터로 1달 이상 걸리게 된다.  cf)  telnet 과 ftp의 차이 telnet: 쉘권한을 취득(ex. bash)하여 마치 로컬 컴퓨터를 다루는 것처럼  실행되는 접속 방법  ftp: 파일을 전송하기 위한 프로토콜.  telnet으로 파일 전송을 못하며(zmodem프로토콜을 사용하면 되지만, 엄청 느림) ftp로 시스템을 관리하거나 데몬을 띄우는 것은 불가능.  Reference https://wpengine.com/resources/how-to-access-wordpress-files-using-sftp/ https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=linuxserver&wr_id=19987

우분투 18.04 react-native run-android 실행 시 javax.net.ssl.SSLException 에러

리엑트 네이티브를 시작했다. ( 참고 ) 기본 튜토리얼 에서  create-react-native-app 를 사용하는 예제는 쉽게 실행됐는데 바로 요놈! react-native-cli 를 써서  react- native init [프로젝트 이름]  로 실행하는 예제는 뭐가 문제인지 실행한번 하는데 엄청나게 애를 먹였다. 우선 리액트 공식 홈페이지에서 하라는데로 다 했다는 전제하에 참고하시면 된다. 나름 다 잘 따라했다고 생각했는데 문제는 자바(jdk)였다. JAVA_HOME 환경변수 설정이 안되어 있었다. 일단 초기에 echo $JAVA_HOME 이라고 쳤는데 아무 것도 안뜨면 환경변수 설정이 아예 안돼있는 것이다. 순서 대로 체크리스트를 만들어보자면, 1. jdk버전을 확인하자 Java Development Kit React Native requires a recent version of the Java SE Development Kit (JDK).  Download and install JDK 8 or newer  if needed. cd /usr/lib/jvm/ 를 하면 현재 설치된 jdk들을 확인 할 수 있다. jdk8 이상의 버전이 없다면 아래 명령어로 다운 받자 sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer 2. JAVA_HOME 환경 변수를 등록하기 위해 cd ~ 를 하여 홈으로 이동하고 숨김 파일인 .bashrc를 수정하자. 튜토리얼에는  $HOME/.bash_profile 이라고 되어 있지만 18.04에서는 저 파일이 없어서 알아보니 bashrc를 수정하면 된다. 나는 vim을 쓰므로 vim .bashrc 라고 입력했다. nano나 다른 편집기를 사용해도 좋다. 그리고 아래 명령어를 .bas

Anaconda tensorflow-gpu 설치 에러 [WinError 126] 지정된 모듈을 찾을 수 없습니다, importError: Could not find 'cudnn64_6.dll'

anaconda를 이용하여 tensorflow cpu 버전을 사용하다가 training이 끝나지를 않아서  gpu 버전을 써보기로 했다. cpu 버전은 나름 쉽게 설치했었는데 gpu는 조금 더 까다로웠다. 블로그들을 참고해보니 막 무슨 파일을 다운 받고 어디에 붙여넣고 하라는데  처음에는 이해가 잘 안됐다. 내가 이해한대로 해보자면, 우선 다른 블로그를 참고해서 아나콘다와 tensorflow cpu 버전 설치 직전까지 진행해주시고, 필요한 파일은  CUDA 8.0 CuDNN 6.0 두 파일을 순서대로 설치. 대충 내용을 보니 CUDA 8.0은 그냥 설치하는 파일이고 CuDNN는 설치한 cuda 폴더 안에 추가하는 라이브러리, 기타등등 파일인데 다른 블로그에서는 CuDNN 폴더를 다 붙여 넣으라고도 했지만 딱 봐도 확연히 안에 들어있는 파일이 달라서 CuDNN 폴더에 있는 파일을 기존 cuda 폴더 안에 붙여 넣어주었다. 아무튼 여기서 주의해야 될 점은 CuDNN이 6.0이라는 것이다. 다른 블로그에서는 5.1을 받으라고 되어있는데 이상하게 내 anaconda에서는 계속 cudnn64_6.dll 파일을 찾을 수 없다고 에러가 떴다. 바로 이 에러이다. 알아보니 5.1은 bin 폴더안에 cudnn64_5.dll를 가지고 있고 6.0이 cudnn64_6.dll을 갖고 있었다. cudnn64_6.dll을 기본 설치 폴더 기준 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin 안에 붙여넣으니 성공적으로 tensorflow-gpu를 이용할 수 있게 되었다.