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

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를 이용할 수 있게 되었다.

Solution: react-native-maps showsUserLocation 동작 안함 해결 방법

react-navive-maps를 이용해서 지도를 구현하고 있는데 내 위치로 가기 버튼이 보이질 않았다. First of all, a reminder: for the button to be visible, some criteria are needed (OK in the OP): showsUserLocation  must be set  true  because the default is  false showsMyLocationButton  must stay  true , as is the default The issue is in a race condition between two asynchronous events: onMapReady and onLayout (noted Ready and Layout, for short, below). The decision to draw the button or not is done at the time of the Layout, and the setting of UserLocation can't be done before the Ready of the map (a handle to it is needed). Unfortunately, usually, at launch, the Layout arrives  before  the Ready. 위 글을 참조해보면 showUserLocation과 showsMyLocationButton이 모두 true로 설정되어 있어야 하고,  문제는 onMapReady과 onLayout의 동기화 문제라고한다. 버튼을 그릴지 말지가 Layout이 다 마무리 되는 시점에 결정되고  유저의 위치는 맵이 다 준비 되어야만 작동을 하는데 일반적으로 맵이 다 준비되기 전에 Layout이 먼저 그려져 버려서 버튼이 안보이는 거라고 한다. 밑에 댓글들을 쭉...

DOM XML Parsing, dBuilder.parse(), normalize()

DOM을 이용하여 XML instance의 일부 데이터 목록을 parsing 해 보았다. 1 2 3 4 5 6 7 8 9 10 public   class  Ex_xml_parsing {      public   static   void  main( String [] args) {          try  {             File xmlFile  =   new  File( "D:/Workspace/_JAVA/Ex_xml_parsing/src/test.xml" );                         DocumentBuilderFactory dbFactory  =  DocumentBuilderFactory.newInstance();  // instance 생성                         DocumentBuilder dBuilder  =  dbFactory.newDocumentBuilder();  // buil...