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나 다른 편집...

install pytorch with anaconda in windows 10 (윈도우에서 아나콘다 가상환경에 파이토치 설치) - 1(아나콘다 소개 및 설치)

Image tracking 할 일이 있어서 깃헙에서 이것 저것 찾다보니 pytorch가 필요해서 깔아보려고 했는데 윈도우에서는 pytorch가 안깔린다... 망할 윈도우... 그렇게 또 삽질이 시작됐다. 우선 아나콘다가 무엇인지 부터 알아보기로 했다.  공식 홈페이지에 가니 ANACONDA란 한마디로 최고로 인기 많은 데이터 과학 플랫폼이란다. 250개 이상의 잘나가는 데이터 과학 패키지들을 포함하고 있는 Anaconda Distribution이라는 배포판이 있고 그 중에 Python이랑 R 패키지는 아나콘다의 안전한 환경에서 엄선 되고 컴파일되어 여러분의 시스템에서 온전히 '일'만 잘할 수 있게 도와준다고 한다. 음 대충 보니까 그럼 아나콘다는 패키지 모음 같은건가 보네 하고 본격적으로 Anaconda distribution을 알아보기로 했다. Anaconda navigator는 데스크탑용 GUI 툴이고, Libraries는 jupyter 등을 포함한 IDE와 Numpy, Pandas 같은 통계 분석 계산 패키지, 시각화도구, Tensorflow같은 머신 러닝 도구 등을 기본적으로 가지고 있거나 다운 받을 수 있다는 얘기이다. Conda는 Anaconda의 패키지 매니저로 자동적으로 모든 패키지를 관리해주고 linux, mac, window 모든 플랫폼에서 작업할 수 있게 해준다. 또 가상 환경을 만들 수도 있다. Anaconda에서 제공하는 패키지들 외에 유저나 커뮤니티에서 올려주는 패키지도 받을 수 있나보다.  정리하자면 아나콘다는 다양한 운영체제에서 파이썬이나 R을 기반으로 여러가지 패키지를 쉽게 설치하고 작업할 수 있게 도와주는 도구라는 소리다! 재미 없는 홍보글 대충 읽어 봤으니 이제 본격적으로 다운을 받아서 직접 실행해보자. 뭐든 직접 뚝딱뚝딱 해보는게 훨씬 이해가 잘된다! 필자가 받은 Anaconda distribution 버전은 ...