2018. 4. 13. 15:27

지식인 답변모음 3번에서 14.10.07 까지 답변했었고, 이후의 답변 추려봤습니다.



질문 제목 : 데이터베이스가 필요한 응용분야 질문입니다.

내용 : DB는 응용소프트웨어의 여러분야에서 사용되고있다는데 DB가 필요한 응용분야는 뭐가있고 왜 거기에 DB가 필요한지 몇가지만 알려주세요.


답변 : 지금 질문자가 접속한 인터넷도 db를 이용한거고 네이버 라는 웹사이트 역시 db를 이용한겁니다.

우선 인터넷 가입을 해야 인터넷 사용을 할 수 있겠죠? 그러기 위해선 인터넷에 가입된 아이디와 패스워드가 필요합니다.

여기서 이 아이디와 패스워드는 인터넷 회사의 db에 저장되어 있고 질문자는 그 db에 접근하여 유효한 사용자인지 판별받고 인터넷을 사용하게 되는겁니다. 네이버 역시 질문을 하기위해 로그인을 하는 경우. 회원정보 db를 이용한것이고, 현재 이 질문 역시 db 상에  지신인질문 이라는 테이블이에 들어가 있을테죠.

어떠한 형태로 저장하냐에 따라 db이기도 하고 db 가 아니기도 하지만 원론적으로 db는 데이터베이스의 약자로서 데이터베이스는 크게 데이터의 집합 으로 생각하면 되지만 dbms 를 말하는 듯 하여  위와 같이 설명을 드린겁니다.

오라클, mssql 을 포함한 다양한 db가 있으며 대부분 웹사이트나 학적관리시스템, 사원관리, 물품관리 등 각종 erp 시스템에서 주로 사용된다고 보면 됩니다.

필요한 이유야 수많은 데이터들을 공간의 낭비를 최소화하면서 효율적으로 활용하기 위해서며 또한 보안 적 측면에서도 필요하기 때문입니다.



질문 제목 : 데이터베이스 spl 문제입니다.

내용 : 아래의 관계 데이터베이스 스키마를 보고, 다음 질의들을 SQL로 표현하라.


EMPLOYEE(EMPNO, EMPNAME, TITLE, MANAGER, SALARY, DNO).

DEPARTMENT(DEPTNO, DNAME, LOCATION).

PROJEMP(PROJNO, PROJNAME, PMANAGER, BUDGET).


1. 직급이 대리인 모든 사원들의 이름과 사원번호, 이들이 소속된 부서의 이름과 부서번호를 검색하라.

SELECT E.EMPNAME, E.EMPNO, D.DNAME, D.DEPTNO,

FROM EMPLOYEE AS E, DEPARTMENT AS D WHERE E.DNO=D.DEPTNO AND E.TITLE=‘대리’; .


2. 직급이 대리인 모든 사원들의 이름과 사원번호, 이들이 소속된 부서의 이름과 부서번호를 검색하라.

SELECT EMPNAME, EMPNO, DNAME, DEPTNO, FROM EMPLOYEE, DEPARTMENT WHERE TITLE=‘대리’; .

두가지모두 맞는 답인가요? 아니면 틀렸는지 설명좀 부탁드려요.


답변 : 1번의 경우  from 절의 테이블 에 별칭을 줄때 as 를 빼주면 정확한 sql문이 됩니다.

2번의 경우  from 절에서 두개의 테이블을 가지고 온것은 맞습니다만  where 절에  두개의 테이블을 연결하기 위한 조인 식이 빠져 있기에 데이터가 사원테이블의 레코드수 X 부서 테이블의 레코드수 만큼 cross join 되어 어마무시한 양의 데이터가 발생되며

답이 될 수 없습니다.


SELECT EMPNAME, EMPNO, DNAME, DEPTNO                                                      .

FROM EMPLOYEE, DEPARTMENT   WHERE DNO = DEPTNOAND TITLE=‘대리’;                  .

라고 해주면 정확한 답이 됩니다. 또한가지, 위의 1번 sql 문의 경우 FROM절에 EMPLOYEE AS E 라고 되있는거에서 AS 를 빼서 FROM EMPLOYEE E, DEPARTMENT D  라고 해주는게 맞습니다. 테이블에 별칭을 줌으로서 어떤 컬럼이 어떤 테이블에서 가져왔는지 명확히 알 수 있도록 해주며, 만약 사원 테이블의 DNO 가 DEPTNO 로 되있다면  두 테이블에서 동일한 이름의 컬럼이 있게되어 시스템에서는 어떤 테이블의 컬럼을 가져올지 혼동이 되어 에러가 발생하게 될 여지가 있기에  테이블에 별칭을 주는게 좋습니다.

잘못된 이유 : AS 를 통한 별칭은 SELECT 문에서 사용하는 것이고 FROM 절에서는 에러가 발생합니다.


SELECT E.EMPNAME, E.EMPNO, D.DNAME, D.DEPTNO  FROM EMPLOYEE E, DEPARTMENT D 

WHERE E.DNO = D.DEPTNO AND E.TITLE=‘대리’;  이라고 해주는게 가장 정확한 답이 되겠습니다



질문 제목 : sql having을 where절로 바꾸려면 어떻게 해야하나요.

내용 : 공부하는 책의 예제인데 having 절을 안쓰고 where절로 바꾸려하는데요 모르겠어요 ㅠ.

select dept_name, avg(salary) from instructor group by dept_name having avg(salary)>42000;  .

이 질의를 having 절 안쓰고 where절을 써서 바꿔주세요.


답변 : select a.dept_name, a.avg_sal  from (select dept_name, avg(salary) as avg_sal  from instructor group by dept_name)where a.avg_sal > 42000 ; .

인라인뷰로 한번 감싸서 문제를 풀어주는 겁니다. 부서별 평균 급여를 구하되 평균 급여가 42000보다 많은 부서를 찾는 문제입니다. 그렇기에 부서별로 평균급여를 구한 후에 구해진 데이터들로 이루어진 가상의 테이블을 만들어주고 각 부서별 평균급여가 있으니 where 절에 평균급여가 42000보다 많다. 라는 조건을 주면 변경이 가능합니다. 이해 안되는 부분이 있다면 의견 남겨주세요.

*


질문 제목 : 오라클 고수님들 도움요청합니다. 급해요.

내용 : 학교에서 오라클수업을듣는 학생입니다. 오늘 수업시간에 기초를배우고 실습을해봤는데요.

모르는문제들이있어서 질문드립니다. 수업할때는 scott 계정으로하구요, 문제가 모르겠는데 2개가있는데 EMP 테이블에서 보너스가(comm) 급여(sal)의 10퍼센트 이상인 모든 종업원에 대하여 이름,급여,보너스를 출력하는 SELECT 문을 작성하여라입니다.

이문제는 그냥 아예 갈피를못잡겠고 또 한가지는 EMP 테이블에서 이름(ename)이 L이 두 자가 있고 부서(deptno)가 30이거나 또는 관리자(mgr)가 7782인 사원의 모든정보를 출력하는 SELECT 문을 작성하여라.

SELECT * FROM emp  WHERE ename LIKE '%L%' and (deptno = '30' or mgr = '7782') <--제가생각한 SELECT문 이렇게하니깐 L자 이름 1개인 사람도 포함이 되서 이 문제는 이름에 'L'2개가 들어가는 사람인데 배울 때는 분명히 WHERE ename LIKE '%X\_Y%' ESCAPE '\'; 이런식으로 하면 X랑Y 값이 포함된 문자열 조회가 된다고 한거 같은데 안되네요.

오라클 고수님들의 정확한답변 기다리고있겟습니다!!.


답변 : 1번.  테이블에 대한 정보가 없으니 정확한 답을 해드리기가 어렵습니다.

select 이름, 급여, 보너스 from EMP where comm >= (sal*0.1) ;

select 절에  출력할 컬럼명을 적습니다.  이름, 급여, 보너스를 출력하라고 되어있으니 세개의 컬럼을 , <- 콤마 구분자를 통해 적습니다.

EMP 테이블에서 <- 라고 되있으니 from 절에는 데이터를 가져올 emp 테이블을 적습니다.from EMP 조건이 보너스가 급여의 10퍼센트 이상이라고 되있으니  보너스가    (급여 * 0.1 을 하여 10% 값을 구한 값) 이상이라는 조건을 where 조건절에 기입합니다.

where 보너스  >=  (급여 * 0.1) ;

where 절은 조건을 기입합니다.  보너스가 급여의 10%이상. 이라는 조건이 되는겁니다. 끝입니다.


2번.  select * from emp  where 이름 like '%L%%L%'  and (부서 = 30 or 관리자 = 7782) ; 라고 하면 됩니다.


select *   <- 별표 표시는 테이블의 모든 컬럼을 출력하라는 뜻으로서 emp 테이블의 모든 정보를 출력하게 됩니다.  참고로 테이블이 한개일 때만 * 이라고 표시해야 하고 여러 테이블일 경우, 테이블에 별칭 (일종의 가짜이름) 을 줘야합니다. 

ex) from emp e, food f   라고 쓴다면 emp 테이블은 e가 되고 food 테이블은 f 가 되어서  select e.* 이라고 해줘야 emp 테이블의 모든 정보만 가져오게 되는겁니다.

from emp   <- 1번의 설명과 같음.   where 조건절에  이름 에서 like 닮은애를 찾아라.  라고 되있는데 L 이 두개 들어간 녀석을 찾아야 하니까 like '%L%'한번이 아니라 L% 를 이어서  '%L%L%' 라고 해주면 됩니다.

% 연산자는 다른애들이 중간에 껴있다. 의 의미입니다.


마지막으로  and (deptno='30' or mgr = '7782') 이 부분은 잘 하셨습니다. 한가지 걸리는점은 테이블 컬럼의 데이터형이 어떻게 설정되어 있느냐 입니다. deptno 의 경우 해석하면 부서번호가 되며 no 는 보통 number 를 의미하므로 자료형이 number 일 가능성이 높습니다.

이럴 경우  deptno = 30 과 같이 '' <- 를 빼주는게 좋습니다. 물론 결과가 나오는데 문제는 없습니다만 사용자는 모르겠지만 오라클 내부적으로  '30' 이라는 문자를 30 이라는 숫자로 변환해주는 과정이 들어가서 속도상에 문제가 발생할 수 있습니다.  초보 입장에서는 크게 중요한 문제는 아니겠습니다마는 데이터가 많을수록 성능에 악영향을 끼칠 수 있다는 점을 참고하셔야겠습니다.

*


이상으로 2014.10.16 까지의 답변이었고, 꾸준히 이어나가겠습니다.  데이터베이스와 관련해서 간단한 질문정도는 언제든지 환영하며, 제가 모르더라도 여러 루트로 알아보고, 배운뒤에 답변을 도와드리도록 하겠습니다. 혹 부족한 답변이 보인다면 언제든 조언 및 지적 환영합니다.


Posted by 타이니스타
2018. 4. 11. 12:14

지식인 답변모음 3번에서 14.09.23 까지 답변했었고, 이후의 답변 추려봤습니다.




질문 제목 : 데이터베이스 야생동물들의 key

내용 : 학교 데이터베이스 시간에 교수님께서 간단하게 키에개념에대해서 설명해주시고 말에 key가 될수있는 것(후보키를말하는것인지 슈퍼키를 말하는것인지는 잘 모르겠습니다.)에 대해서 생각해 오라고 하셨는데요. 이게 모든 말(야생의 말까지 포함)이 가지고있고 모든말이 다른것인데 전혀 감이 안오네요. 정답이 없을수도 있는거같은데 알고계시면 좀알려주세요.


답변 : 질문이 너무 모호하네요.

교수님이 말한 키가 무엇인지. 그리고 가장 강조한 키의 개념이 후보키인지, 주키인지를 알아야 답에 근접할 수 있을듯 합니다만, 그리고 말이라면 horse. 동물인 말을 말하는건가요?.

대 분류로 말. 이라는 동물이 되겠지만 정식 명칭으로 얼룩말, 조랑말 등으로 세밀하게 나뉜다면.


말 이라는 테이블을 두고,

말ID  |  말학계명 

a01     얼룩말

a02     조랑말

a03     적토마

a04     야생마

a05     경주마


와 같이 나눠서 말ID라는 값을 키로 지정해야 됩니다만 질문의 의도를 알 수가 없네요.

키의 개념에 대해 다시한번 숙지 하시고  말의 학계명칭, 학계명칭에 대한 말의학계명칭코드 를 키 정도로 생각하는게 맞다고 생각됩니다.

질문자가 글에도 남겼듯이 전혀 감이 안온다고 했는데요. 교수님이 생각해 오라고 한 바가 무엇을 의미하는지 질문자도 모르는 상황에서 나온 질문이기 때문에 다시 한번 거쳐서 보는 입장에서는 명확한 답을 드릴 수 없겠네요.

중요한건 말의 key 가 무엇인지를 아는게 아니라, key의 개념을 정확히 알고, 알고 있는지 확인하기 위해 특정 사물 (여기서는 말)을 대상으로 무엇이 키가 될 수 있는지 생각해 보라고 한 듯 합니다.

질문에 보면 생각해 오라고 한걸 보니 레포트로 작성하는 건 아니겠네요.

그렇다면 키의 개념을 명확히 알고 간 후에 발표하는 시간이 된다면 다른 사람들은 어떻게 조사해갔으며, 교수님이 하는 말에 따라서 생각해보아도 될 듯 합니다.

데이터베이스 과목이 이론을 파다보면 헷갈리는 부분이 많이 발생할 수 있는데요. 교수님이 말을 할 때 어떤 의도로 말하는지 주의깊게 듣고 중요하나 부분을 확실히 이해하기 위한 복습이 중요합니다.


* 사실 정답이 정해진 내용보다는 어떻게 생각하는지, 어떻게 받아들였는지, 특정 현상이나 대상에 대해서 아는대로 말해보라는 등의 질문은 정말 답변하기 어렵습니다. 답 자체가 어려운거보다는 질문한 사람이 어떤 의도로 무엇을 생각하며 질문을 던졌는지 파악하기가 어렵기 때문이죠. 질문자와 대화를 했거나 질문자가 특정 질문을 하기까지의 과정에서 발생된 정보가 없으면 답변을 달면서도 확신이 들지는 않게 됩니다.



질문 제목 : 데이터베이스에 대한 지식많으신분만.

내용 : 프로그래밍을 할 때 DB의 장점이 뭐죠? 저는 그냥 DB의 장점만 배웠는데 프로그래밍 할 때 DB 장점은 모르겠어여. 그냥 DB장점이랑 똑같은건가요?.


답변 : 디비의 장점이랑 같은면도 있지만 관점이 다르죠. 디비를 프로그래밍에 접목하여 관리가 용이하다는게 장점입니다.

예를 들어서 학적관리 프로그램을 만들어야된다면 여러 데이터들이 필요하겠죠. 수많은 데이터를 효율적으로 관리하기 위하여 디비를 이용해야되고 본인이 프로그램 개발에 사용할 언어를 이용해 연동하여 사용할 수 있으려면 디비를 어느정도 알아야겠죠.



질문 제목 : 데이터베이스 오라클 sql에서 as 질문입니다.

내용 : 오라클에서 as 랑 연산자중에 \ 두개는 무엇을 할때 사용하는건가요?.


답변 : as는 별칭을 부여합니다. 예를들어, sum(점수) 를 셀렉절에 표기하면 반환되는 필드의 명칭이 sum(점수) 와 같이 나오기에 이를 바꿔줘야할때 주로 사용됩니다. sum(점수) as 총점 과 같이 사용합니다. \\는 concat함수와 같은 역할을 하는것으로 두 문자를 이어줍니다. 예를 들어, 학번 컬럼과 이름 컬럼을 연결하여 한컬럼에 쓰고자할때 씁니다.

학번 이름

A01 홍길동 이라고있다면 select 학번 // 이름 as 학번이름 이라고하면.

학번이름

A01홍길동 이라고 출력됩니다.


*


질문 제목 : 쿼리문에대한 정의좀 내려주세요. 

내용 : 쿼리문에 대한 정확한 정의좀 내려주세요. 예제를 들어서 설명해주시면 더욱더 좋을꺼같습니다 !. 부탁드립니다.


답변 : 쿼리는 질의문. 즉, 사용자의 요구에 맞는 데이터를 불러오는 SQL 언어를 말합니다.

DBMS 에 저장된 테이블에 접근하여 원하는 조건에 부합하는 데이터를 효과적으로 가져올 수 있는 언어로서 SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY 절로 구성되어 있습니다.

SELECT 와 FROM 절은 필수요소이며 SELECT 는 출력하고자 하는 필드와 그 필드에 필요한 값을 얻기 위해 함수 및 스칼라서브쿼리 등을 기술할 수 있습니다.

FROM 은 원하는 데이터가 들어있는 테이블을 기술하게 됩니다.  예를들어서 사원 테이블과 급여 테이블에서A001 이라는 사번을 지닌 사원의 사원과 이름, 급여를 출력하라는 요구가 있다면.

SELECT EMPNO(사번), ENAME(사원명), SALARY(급여)

FROM 사원테이블명, 급여테이블명

WHERE 사원테이블명.EMPNO = 급여테이블명.EMPNO

   AND 사원테이블명.EMPNO = 'A001' ; .

위와 같이 작성하여 원하는 결과를 얻어올 수 있습니다. 이와같이 데이터베이스에 들어있는 테이블에서 원하는 데이터를 가져오기 위해 DBMS 에서 알아먹을 수 있는 언어로 명령을 내리게 되는데, 이를 SQL문 이라고 합니다.


* 쿼리문에 대한 설명입니다만 정의라고 하기엔 부족한 답변이었습니다.



이상으로 2014.10.07 까지의 답변이었고, 꾸준히 이어나가겠습니다.  데이터베이스와 관련해서 간단한 질문정도는 언제든지 환영하며, 제가 모르더라도 여러 루트로 알아보고, 배운뒤에 답변을 도와드리도록 하겠습니다. 혹 부족한 답변이 보인다면 언제든 조언 및 지적 환영합니다.


Posted by 타이니스타
2018. 4. 10. 09:20


지식인 답변모음 3번에서 14.08.06 까지 답변했었고, 이후의 답변 추려봤습니다.




질문 제목 : 친구관리 db를 어떻게 짜야 할지 조언좀 해주세요.

내용 : jsp 페이지에서 a라는 사람의 db가 있는데 친구추가 페이지에서 b를 친구추가하면 b가 가진 정보를 a의 정보와 함께 나타내고 싶습니다.

그리고 친구를 끊으면 당연히 b의 정보는 사라지고 a의 정보만 남게요.. 조언 부탁드립니다.


답변 : 그리드로 관리 되는 화면인지 알아야죠. 또한 폼 형식이라면 개개인의 데이터만 나올 테니 함께 나타낼 순 없습니다.

굳이 나타내자면 폼을 더 만들순 있겠지만요. (여기서 폼은 html 의 TABLE 로 보면됩니다.)

최대 몇명까지 나타낼수 있을까요. 즉, 여러 친구를 보고 싶다면 그리드로 만들어지는게 맞고, 그리드 (목록) 라면  그리드 한개 로우 마다 친구의 id 값을 가지고 있게 한 후 그리드를 선택하여  친구 끊기 버튼을 누르면 끊을껀지 물어보는 메세지를 띄워주고 "예"를 누르면 그리드의 선택된 로우의  친구ID 값을 넘겨줘서 delete 쿼리를 태우면 됩니다.

delete 테이블명 where 친구ID = 그리드에서 선택된 친구ID값.


* 친구 관리 db를 구축하면서 나온 의문점에 대한 간단한 조언 이었습니다.



질문 제목 : 조인식 질문입니다.

내용 : SELECT DISTINCT 계약상황.*,B.수금액 FROM 계약상황 LEFT OUTER JOIN(SELECT 계약번호,SUM(수금액) AS 수금액 FROM 수금상황 GROUP BY 계약번호) B ON 계약상황.계약번호=B.계약번호,참여기술자 WHERE 참여기술자.참여자='전지현' and 계약상황.계약번호=참여기술자.계약번호" 계약상황,참여기술자,수금상황 테이블이 있고 수금테이블에 해당계약건들로 sum하여 계약테이블에 조인시키고 해당 참여기술자가 참여한 계약을 찾으려 하는데 조인식이 지원되지 않습니다. 라고 에러 메세지가 뜨네요.

참여기술자 요거를 FROM절에 어떻게 넣어야 정상적으로 처리되나요? ㅠㅠ.


답변 : SELECT DISTINCT A.*, B.수금액

  FROM 계약상황 A LEFT OUTER JOIN(SELECT 계약번호, SUM(수금액) AS 수금액 FROM 수금상황 GROUP BY 계약번호) B

   ON A.계약번호 = B.계약번호 INNER JOIN 참여기술자 C ON A.계약번호 = C.계약번호 WHERE C.참여자='전지현'; .


* 간략하게도 답해놨었군요. SQL ANSI 표준에 따라 작성된 쿼리라고 볼 수 있습니다. 물론 오라클 기준의 SQL문입니다.



질문 제목 : 오라클 EXISTS 어떻게 동작 하나요??

내용 : CREATE TABLE test1 (idx int, type char(1), title varchar(10));

INSERT INTO test1 VALUES(1, 'C', '나라'); INSERT INTO test1 VALUES(2, 'D', '자동차'); INSERT INTO test1 VALUES(3, 'E', '비행기');.
CREATE TABLE test2 (idx int, type char(1), name varchar(50));
INSERT INTO test2 VALUES(1, 'C', '페라리'); INSERT INTO test2 VALUES(2, 'C', '소나타'); INSERT INTO test2 VALUES(3, 'E', 'F16'); INSERT INTO test2 VALUES(3, 'E', 'F18'); .

SELECT * FROM TEST1 A WHERE EXISTS(SELECT * FROM TEST2 B WHERE A.TYPE = B.TYPE);

도출 결과 
첨부 이미지 
테이블이 어떤 식으로 WHERE 절에서  A.TYPE = B.TYPE 어떻게 조인이 되어서.. 테이블들을 찾는지 잘 이해가 되지 않습니다. ㅠ.ㅠ 자세한 설명좀 부탁드리겠습니다. 


답변 : 타입을 서브쿼리의 조건으로 줬으니  type 과 조인을 하게 됩니다. 메인쿼리에서 a 테이블을 선언했고  where 절에서 서브쿼리를 사용했습니다.

a테이블의 한 건의 레코드와  b테이블의 모든 데이터를 비교하여 같은게 한개라도 있다면 값이 출력 됩니다. 즉,  a 테이블의 레코드수 X b테이블의 레코드 수 만큼 크로스 조인이 된다고 볼 수 있지만 엄밀히 보면 크로스조인도 아니지요.

a테이블의 type C 와 같은게 있는지 확인하기위해 b테이블의 type 컬럼을 전부 비교하게 됩니다. b테이블에 type C 가 있기에 

a테이블의 type C 가 출력되고   a테이블의 type D는 b테이블의 type 컬럼에 존재하지 않기에 넘어가고 다시 a테입르의 type E 는 b테이블에 type E 가 있기에 출력되는겁니다.


* 서브 쿼리 내에서 조인조건을 줘서 유효한 데이터를 필터링 해주는 기능인 exists 에 대한 질문이었습니다.



질문 제목 : 엑세스 기본키 뜻?! .

내용 : 엑세스에 기본키가 있잖아요! 그 기본키의 뜻이 궁금하네요~ (기본키에대한 정의).


답변 : 기본키는 테이블 내에 수많은 레코드가 존재할 경우, 각각의 레코드를 유일하게 구분할 수 있는 컬럼을

기본키(PK)라 정의하게 됩니다.


예를 들어 학생 테이블이 있을 경우

학번     이름        학과    .

001      아무개     수학과  .

002      돌팔매     영문과  .

003      김장군     수학과  .

004      홍길동     수학과  .

005      마동탁     영문과  .

006      김탁수     영문과  .

007      나이름     영문과  .


여기서 중복이 될 수 없는 값. 즉, 학번이 기본키가 되는겁니다. 기본키를 설정하는 이유는  학생 테이블과 관련된 다른 테이블과의 연결을 해주기 떄문입니다. 이를 관계라고 하며, 엑세스나 기타 데이터베이스는    서로 관계 있는 데이터들에 의해 여러테이블에 나뉘어진 데이터를 연결하여 사용할 수 있게 되는겁니다.


학생-자격증 테이블이 있다고 칩시다.


학번     자격증명            .

001      정보처리산업기사    .

001      정보기기운용사      .

006      워드1급            .

007      컴활1급            .

007      MOS                .

 

위 테이블을 보면  학번이 있으며 학생 테이블과   학생-자격증  테이블의  학번은 같은 속성 값을 지니므로 연결이 가능하며 이는 곧  학생 테이블과   학생-자격증 테이블이 서로 관계가 있음을 뜻합니다.여기서 sql 문으로 원하는 데이터를 만들어 낼 수 있습니다.


수학과 학생의 학번과 이름, 자격증을 출력하시오.


select a.학번, a.이름, b.자격증명 from 학생 a, 학생-자격증 b where a.학과 = '수학과'; .


이렇게 할 경우 

학번     이름     자격증명.

001     아무개   정보처리산업기사.

001     아무개   정보기기운용사.


와 같은 데이터가 나오게 됩니다. 즉 pk는 학생의 정보를 학생 한명당  한개만 가지고 있으며  모든 학생은 서로 다른  학번을 가지고 있기에 중복이 되지 않고.  중복이 되지 않는다는 것은  학생 한명한명을  학번으로 구분할 수 있음을 뜻하며 "테이블에서 레코드를 유일하게 구분할 수 있는 컬럼(혹은 컬럼들)이다."  라고 정의할 수 있습니다.


* PK에 대한 설명을 하고 있습니다. PK는 데이터간에 식별을 위한 키라고 보면 되겠습니다.



질문 제목 : 데이터베이스에서 사용하는 R에 대하여 자세히 알려주실분!.

내용 : 무슨 R 언어라고 하는거 같던데 여기저기 검색을 해봐도 이렇다할 정보가 없네요. 자세히 설명해주시면 감사하겠습니다!.


답변 : R 은 릴레이션. 관계를 말합니다. 현재 주류가 되고 있는 데이터베이스들은 관계형데이터베이스 모델을 기반으로 한 RDB 입니다. 보통 디비. 데이터베이스 라고 하면 이 RDB를 가르킵니다. 오라클이나 MS-SQL 등이 대표 제품에 속합니다.

이 R 은 특정 데이터를 여러 테이블로 나누는 정규화 와 밀접한 관련이 있습니다.

예를 들어  A 대학 B군 이라는 학생의 데이터가 있다고 가정하면.


학번 이름 주소 학과 수강과목.

A001  홍길동  우리집123       데이터베이스학과          물리.

A001  홍길동  우리집123       데이터베이스학과        C언어.

A001  홍길동  우리집123       데이터베이스학과       운영체제.


와 같이 나타날 수 있는데 이렇게 되면 학번, 이름, 주소, 학과 등의 데이터가 중복이 되어 불필요한 저장공간이 발생하게 됩니다.

이를 해소하기 위해서 즉, 중복을 최소화 하고자 하나의 테이블에 있는 데이터를 여러개로 나누는 정규화를 거치게 됩니다.

학생 테이블 에는 학번, 이름, 주소, 학과 번호가 들어가게 되고 학과 테이블에는  학과번호. 학과명. 학과위치 등의 정보가 들어가며 수강 테이블에는 학번 과목  으로써 데이터의 중복을 최소화 하게 됩니다. 이렇게 나누어진 테이블의 항목(컬럼) 을 보면 학생 테이블의 [학과 번호]는 학과 테이블의 [학과 번호] 와 연결이 가능합니다.

이렇게 서로 관계있는 항목을 통해 연결이 되어 있는 것이 R . 즉 관계 입니다. 수많은 데이터는 다수의 테이블에 나누어 저장이 되어있습니다.


* RDB에 대한 설명이라고 볼 수 있습니다. 주로 사용되는 데이터베이스 모델은 관계형 데이터베이스 모델이죠.



질문 제목 : 오라클 좀 알려주세요.

내용 : 한 로우에 A,B 값이 들어있습니다. SELECT 하면 A는 사과, B 는 배 로 보여주고싶습니다. 사과, 배 이런식으로요. DECODE 써도 안되고 어떻게 해야할까요.


답변 : 한개 로우 라는것은  컬럼 하나에 A,B 라고 들어가 있다는건가요. 아니면 한개 컬럼에  A 값 혹은 B 값으로만 들어가 있다는 건가요. 값이 한개 컬럼의 한개 로우에 사과,배 라고 들어갔을 때를 가정하여 처리했습니다.


select (case substr(a.col, 1,1) when 'A' THEN '사과' when 'B' THEN '배' END) || ',' || (case substr(a.col, 2,1) when 'A' THEN '사과' when 'B' THEN '배' END) AS COL  .

  from (select regexp_replace(col, '[ ,]') as col from tbl) a ;

한개 로우당 한개의 값만 가질 경우는 아래와 같이 쓰면 됩니다.

select case col when 'A' then '사과' when 'B' then '배' end as col from tbl;.



이상으로 2014.09.23 까지의 답변이었고, 꾸준히 이어나가겠습니다.  데이터베이스와 관련해서 간단한 질문정도는 언제든지 환영하며, 제가 모르더라도 여러 루트로 알아보고, 배운뒤에 답변을 도와드리도록 하겠습니다. 혹 부족한 답변이 보인다면 언제든 조언 및 지적 환영합니다.


Posted by 타이니스타
2018. 4. 10. 07:00

지식인 답변모음 3번에서 14.07.22 까지 답변했었고, 이후의 답변 추려봤습니다.


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


질문 제목 : select, from, where 절에 들어가는 추가 select 구문 선택 방법

내용 : 안녕하세요. 어제 쿼리 작성중에 몇시간 삽질을 했었는데...다른분께 여쭤보니 프럼절에 select절로 바로 해결을 하는 일이 있어서...ㅠㅠ 서브 쿼리 를 작성 할때 언제 어떻게 사용하면 좀 더 좋은 쿼리를 알수 있나...싶어서 질문 드립니다.

SQL쪽을 잘 알지는 못하고 필요할때 쿼리를 짜고 적용합니다. 기본적으로 보면 select , from, where 에 필요에따라서 서브 쿼리를 작성하게 되는데 물론 참 정의 하기 애매하기는 하지만 어떤상황일때 저 3가지에 구분을 해서 서브쿼리를 작성 할수 있나요?

익숙하신분들은 대략적으로 만들어야 할 쿼리에 대해 ... 주변 요청 사항을 생각해서 쿼리를 바로 생각하시는데.. 이때 언제 서브 쿼리를 어떻게 넣는다고 생각 하시나요?

SELECT ->

FROM ->

WHERE ->

이렇게해서 어떤 상황에서 서브 쿼리를 넣는다.. 라고 좀 정의 부탁 드리겠습니다.


답변 : select 절에 쓰이는 서브쿼리는 스칼라 쿼리라고 합니다.

주로 from 절에서 참조하는 컬럼의 한개의 레코드 값을 활용하여 다른 테이블 혹은 현재 테이블의 다른 데이터와 비교하여 원하는 값을 출력하고자 할 때 사용됩니다.

굉장히 비효율적이므로 반드시  꼭 필요하며 데이터의 양이 적을때가 아니면 사용하지 않길 권합니다.

from 절에 쓰이는 것은 인라인뷰라고 합니다.  뷰. 라는 것은 하나 이상의 테이블에서 데이터를 추출하여 테이블처럼 만들지만 실제로 저장된 데이터가 아닌 쿼리의 결과물로 보면 됩니다.

이렇게 가상으로 만들어진 데이터 테이블은  일반 테이블과 마찬가지로 from 절에 명시하여 명시한 뷰의 데이터를 테이블에서 가져오는것과 같이 가져올 수 있게됩니다.

이때, 뷰로 만들지 않고 인라인뷰에 쿼리를 작성하고 나온 결과물을 하나의 테이블로 사용하는 것이 인라인뷰입니다.

from 테이블명  이라고 사용하는게 보통이지만 인라인뷰는  from (select 컬럼1, 컬럼2 from 테이블 where 날짜컬럼 >= '2014-01-01') a   와 같이 하나의 쿼리를 내포하고 내포된 쿼리의 결과를 테이블 형식으로 사용하기 위해 사용합니다.

쿼리를 한번 더 타는것과 같기에 필요에 의해서만 사용해야 합니다. 물론 인라인뷰나 where 절의 서브쿼리는 자주 사용되며 필요시엔 사용해주는게 맞습니다.

되도록 안쓰는게 좋으나 써야될땐 써야되는 . 성능에 크게 악영향을 끼치지 않는 서브쿼리 입니다. 남발하면 저하되는건 당연하니 sql튜닝에 대해 어느정도 공부한 후에 사용하길 권합니다.


where 절에 쓰이는것이 일반적으로 알고 있는 서브쿼리입니다.

select 테이블.컬럼1, 테이블.컬럼2, 테이블.컬럼3

 from 테이블

where 테이블.학과 in (select 테입.컬럼1 from 테입 where 학과 like '컴퓨터')

과 같이 조건절에 비교할 값을 쿼리형식으로 반환하여 사용하고자 할 때 사용하는게 where절의 서브쿼리 입니다.

사용하는 경우는 기본적으로 쿼리의 돌아가는 로직을 생각하면 어렵지 않게 이해가 가능할겁니다.


* 서브쿼리에 대한 내용이었습니다. 서브쿼리는 상황에 맞춰서 적절히 사용한다면 상당히 유용합니다. 서브쿼리에 대한 기본적인 이해를 갖춘다면 SQL 작성에도 자신감이 생길겁니다.


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


질문 제목 : jsp의 내용을 사용자별로 db에 저장하려면 어떻게 해야 하나요?

내용 : jsp의 내용을 사용자별로 db에 저장하려면 어떻게 해야 하나요 A가 로그인한 상태에서 제가 만든 한 jsp에서 전송버튼을 누르면 그 A의 DB에 저장이 되고 B 가 로그인하여 사용할때엔  B 의 DB에 저장시키고 싶습니다..

페이지에서 저장하는 값이 간단하게 변수 하나라고 할때(정보가 들어있는 테이블은 따로 있고, 사용자 테이블과는 다릅니다.) 

어떻게 사용자를 찾아서 그 사용자에게 저장 시키는지.. 페이지내에서 뭐 사용자 정보라도 불러와서 사용자 아이디를 정보 테이블에 넣기라도 해야하는지.. 감이 안옵니다. 어이없는 질문이어도 친절한 답변 부탁드립니다. DB는 오라클 사용중입니다.


답변 : 로그인한 사용자의 정보를 세션에 담고 있다면 세션에서 사용자의 아이디 값을 파라미터로 넘겨주고, 없을 경우 페이지에서 해당 사용자를 선택하여 사용자의 아이디 값을 파라미터로 넘겨주는 방식으로 하면 되겠습니다.

sql 문은 update 칠지, insert 칠지에 따라 달라지겠네요. update 쿼리나 insert 쿼리는 인터넷에 검색하면 쉽게 찾아서 사용할 수 있을겁니다.

문제는 로그인한 사용자의 데이터 저장이겠죠. update 쿼리든, insert 쿼리든,   where 라는 조건절에  사용자ID = 넘겨받은 사용자아이디명  으로 걸어주면 됩니다.

예를들어, update 테이블명 set 컬럼명 = 저장할 데이터 where 사용자id = :userid;


* 웹 프로그램 관련 질문이었습니다. 로그인 기능이 있다면 세션관리는 필수입니다. 물론 흉내내는 수준이라면 굳이 사용하지 않아도 됩니다만 기본적으로 현재 로그인된 계정에 대한 처리로 세션관리는 필수요소인거죠. 로그인한 사용자의 정보가 없다면 그건 회원관리가 전혀 안되고 불가능한 단순흉내에도 못미칠겁니다.


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


질문 제목 : 컴활1급 데이터베이스 질문

내용 : 컴활 1급 데이터베이스recordsource속성에서 문제가 <거레처별상품>폼의 'txt공급업체명'에 '공급업체명'을 입력하고 '조회(cmd조회)' 버튼을 클릭하면 다음과 같은 기능이 수행되도록 구현하시오.

-<거래물품> 테이블에서 'txt공급업체명'에 입력된 공급업체의 상품정보만 조회되도록 하시오

-현재폼의 recordsource속성을 이용하여 이벤트 프로시저를 작성하시오


이게문제인데 Me.Recordsource="select * from 거래물품 where 공급업체명='" & txt공급업체명 & "'"

이렇게 쓰면 틀리고 Me.Recordsource="select 거래물품.공급업체명 from 거래물품 where 공급업체명='" & txt공급업체명 & "'"

이렇게 써야 맞다고 나오는데 select 다음에 *가 모든필드표시라는 뜻 아닌가요?

*를 쓰면 왜 틀린거고 "거래물품.공급업체명" 이라고 왜 써야하나요? 데이터베이스고수님들 답변좀부탁드려요ㅠ


답변 : 엑세스에서 컬럼을 출력할 때는 반드시 테이블명.컬럼명  으로 처리해줘야 합니다. 둘다 틀렸네요. 답은  select 거래물품.상품정보 from 거래물품 where 공급업체명='" & txt공급업체명 & "'"  가 맞습니다.

질문자의 말대로면 * 로 인해 모든 컬럼이 출력이 됩니다. 문제를 보면 상품정보만 <- 이라고 되있는데, 다른 컬럼들까지 보여주므로  결과가 틀림을 알 수 있습니다. 또한  엑세스에서 필드를 직접 끌어다 쓸 경우  테이블명.컬럼 혹은 테이블명.* 로 작성이 되는게 정상이며 select *  이라고 한 것은 표준에는 맞지만 부적합한 답으로 판단하여 정답처리가 안될 여지가 있는겁니다.

물론 틀린 답은 아니지만 문제는  하나의 컬럼만 출력하라고 명시되어 있다는거죠.


* 엑세스 질문이었군요. 저도 데이터베이스를 처음 접했던 이유는 고등학교 시절에 정보기술 이라는 전국기능대회 준비를 위해 오피스 프로그램들을 배우게 되어서였죠. 지금은 필요한 공부내용이 좀 달라졌다고 들었습니다. 전공을 살리지 않는 평범한 대학교 컴퓨터학과 하위권 졸업생보다 더 나은 실력을 갖추게 되었더군요. 엑세스에서도 SQL문이나 서브쿼리, 테이블 및 관계 등에 대한 개념들이 들어있습니다만 깊이 있는 공부는 불가능하니 가볍게 맛보기 하실분은 설치도 쉽고 접근도 쉬운 엑세스로 접해보는것도 괜찮습니다.


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


이상으로 2014.08.06 까지의 답변이었고, 꾸준히 이어나가겠습니다.  데이터베이스와 관련해서 간단한 질문정도는 언제든지 환영하며, 제가 모르더라도 여러 루트로 알아보고, 배운뒤에 답변을 도와드리도록 하겠습니다. 혹 부족한 답변이 보인다면 언제든 조언 및 지적 환영합니다.



Posted by 타이니스타
2018. 4. 9. 11:08

지식인 답변모음 3번에서 14.07월까지 답변했었고, 이후의 답변 추려봤습니다.


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


질문 제목 : ms-sql 에서 스칼라함수 가 무었인지?? 정의?랑 스칼라함수가 하는일 저장프로시저랑 무었이 다른지 좀알려주세요

내용 : 프로젝트에 넣어야 되는대 데이터 베이스 배워본적이 없어서 어중띄게 일부분 아는대 스칼라 함수에 대해서 잘 모르겠어요 찾아본 책에서는 무슨 단일 값에 적용되어 그 값의 결과를 돌려주는 함수 라는대 무언가 설명이 부족한거 같아요.. 좀더 자세히 알려주시면 감사하겠습니다 


답변 : 스칼라함수는 특정 컬럼을 가공하여 원하는 목적에 맞는 결과값을 돌려주는 역할을 합니다.

select substring('orange', 1, 3) from tableA 라는 쿼리가 있습니다. substring 함수는 인자값 3개를 받으며, 첫번째 인자는 가공하기 전의 컬럼명. 두번째 인자는 시작지점. 세번째 인자는 끝지점 을 의미하며 substring 함수의 목적은 컬럼을 시작지점에서 끝지점 까지 잘라서 그 부분만 리턴하여 보여주겠다. 라는 함수입니다.  substring 이라는 함수명으로 값을 잘라주는 코딩이 내재되어 있기에 사용자는 substring 이라는 함수를 사용할 수 있게 됩니다.

결과값은   ora 가 나오겠지요. oragne  123456    1~3 까지인 ora 가 나오게 되는겁니다.

책에서 단일 값에 적용되어 <- 이부분은 컬럼에 들어있는 값. 즉, 제가 위에서 예시로 든 테이블에서 단일값 = 'orange' 라는 값이 들어있는 컬럼이 되는겁니다. 

여러 행을 지닌 컬럼이라면 여러 값이 들었겠으나 스칼라함수의 경우 각 행별로 처리를 해주기 때문에 단일값이라고 하는겁니다.

그 값의 결과를 돌려주는 함수 <-  이부분은 위에서 명시했듯이 orange 라는 단일값을 잘라내어 ora 라는 결과 를 보내줬다는 뜻입니다.

스칼라함수에는 문자열 함수, 수치 함수, 날짜 및 시간 함수, 타입 변환 함수 등 여러가지가 있습니다.  스칼라 함수를 검색하면 더 자세한 내용을 볼 수 있으며 필요한 정보가 있다면 참고하기 바랍니다.

그리고 스칼라 함수와 저장프로시저의 차이에 대해 물어보셨는데 스칼라함수는 데이터베이스에 탑재된 내장함수를 말하며 표준이 되는 함수로서 다른 사람들도 공통적으로 사용하는 일반적인 함수들을 말합니다. 저장프로시저의 경우 for loop 문이나 if 문 등 다양한 명령어를 사용자가 입력하여 특정 결과를 만들어내는 일종의 사용자 정의 함수 라고 보면 되겠습니다. 저장프로시저의 경우 자세한 내용을 설명하자면 책 한권 이상의 분량이 나올 수 있기에 자세한 설명은 생략하겠습니다.


* 스칼라서브쿼리에 대해서만 생각하고 있었는데 예전에 이전 답변도 달았었군요. 스칼라함수에 대해서는 저 역시 다시한번 정리해봐야 할 것 같습니다. 명칭에 대한 혼동도 옵니다만 확인이 필요한 내용이었군요.


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


질문 제목 : 오라클관련 질문있습니다~~ 

내용 : 안녕하세요. 기본적인 프로그램관련수업들을 듣고, 오라클수업을 들을 예정인 직장인입니다.

전공이 컴퓨터관련이 아니라, 기본적인 컴퓨터 지식은 없는 상태에서 교육과정이 시작되었습니다. 지금까지 이수한 수업들은 c 언어, java, jsp, 네트워크기초를 들었고, linux 는 현재 1주정도 수업을 남겨두고 있습니다.

맨처음 상담받고 수업에 대해 설명들을 때는 전혀 과정에 대해 모르던 때라서, 직장인과정이라는게 뭔지 몰랐는데, 확인해보니 오라클이  WDP 교육과정과 OAEC 교육과정이 나눠져있더라구요. 근데 오라클교육기간에 대해 담당자와 통화하다가 직장인과정이라 2주정도면 교육과정이 마무리된다고 하더라구요. 제가 주중엔 직장을 다니고 있어서 주말에 수업을 듣고있는데, 오라클수업은 오전부터 저녁까지 진행이 된다고 들었지만, 2주정도면 교육과정이 이수된다는것에 깜짝놀랐습니다.

제가 궁금한건, 오라클교육이 직장인과정일 경우 수업진도정도나 수업이 진행되면서 오라클이나 DB 에 대해서 전혀모르는데 잘 따라갈 수 있을지 의문입니다....ㅠㅠ 혹시 오라클수업에 대해 알고계신 분들이 있다면 답변부탁드립니다~

그리고 제가 수업전에 먼저 공부할 부분이나, 참고가 될만한 책이 있다면 추천부탁드립니다. ^^


답변 : 교육에 대한건 다른분이 남겼으니 현재 오라클을 다루는 개발자로서 답하겠습니다.

전반적인 지식이 없다고 하였으나 컴퓨터 관련 수업들을 들으며 컴퓨터 관련 전공자에 뒤지지 않는 기본 지식은 갖췄을 것입니다. 전공이 컴퓨터라고 해도 기초중의 기초만 배울 뿐이고 좀 더 이론적으로 많이 수업을 들었을 뿐이지, 별 다를건 없습니다.

오라클을 주말에. 그것도 2주간의 시간이면 토일 토일  고작 4일입니다. 하루종일 수업을 듣는다고 하여도 오라클을 공부했다고 보기는 힘듭니다.

다만 접해봤다. 정도는 되겠군요. 수업과정을 잘 모르겠으나 기초적으로 오라클에 대한 전반 적인 설명과 db에 대한 간략한 소개 및 기초 수준의 SQL 문을 작성하며 오라클을 익히리라 예상됩니다. 미리 공부하고 참고 하겠다고 하셨는데 딱히 참고할 필요는 없을겁니다.

기초적인 부분이기에 수업을 듣고, 이해가 안가는 부분은 질문을 통해 해소해도 충분히 따라가리라 생각이 되고요. 조금 더 오랜 기간을 투자하여 공부하고자 한다면  초보자를 위한 오라클10g 가 괜찮겠습니다. 먼저 기초적인 부분을 충분히 숙지한 후에 조금 더 상위 레벨의 책을 공부하는게 도움이 되겠구요

단기간에 보고자 한다면 정보처리기사 자격증 과목 중 데이터베이스 과목이 있는데, 이 자격증 도서를 가볍게 훑어보며 데이터베이스에 대한 이해를 갖고 있다면 도움이 될것입니다.


* 지금은 어떤일을 하실지 궁금한 분이군요. 공부 방법이나 교육 방향은 여러가지가 있습니다..  참 어렵고 누군가의 답변도 좋은 방향이 되겠으나 스스로 고민하고 알아가며 나아가는것 역시 하나의 길이 되겠죠.


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


이상으로 2014.07.22 까지의 답변이었고, 꾸준히 이어나가겠습니다.  데이터베이스와 관련해서 간단한 질문정도는 언제든지 환영하며, 제가 모르더라도 여러 루트로 알아보고, 배운뒤에 답변을 도와드리도록 하겠습니다. 혹 부족한 답변이 보인다면 언제든 조언 및 지적 환영합니다.



Posted by 타이니스타
2018. 4. 9. 11:01

지식인 답변모음 3번에서 14.07.14일까지 했었고, 이후의 답변 추려봤습니다.


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


질문 제목 : 쿼리 결과값 중 50단어 이상인 내용만 조회 하려면 어떻게 해야 하나요?

내용 : 안녕하세요. 쿼리 초짜 입니당

쿼리 결과값 중 50단어 이상인 내용만 조회 하려면 어떻게 해야 하나요? 급히 써야 할데가 있어서 요청 드립니다.


답변 : where 절에 50단어인지 판별하기 위한 함수를 사용하면됩니다.

select * from tableA where length(50단어 이상인지 판별할 컬럼명) >= 50; 이런식으로 작성하면 됩니다.

오라클 기준이며 mssql에서도 같은 함수가 없을경우 문자열의 길이를 리턴해주는 함수를 찾아 대체하면 되겠습니다.


* 사용하는 dbms에서 제공하는 함수들을 미리 알아두는것도 SQL 작성에 도움이 됩니다.


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


질문 제목 : SQL문에서 partition by 질문드려요..

내용 : 

회사명구분기간판매량
테스트1해외1월32
테스트2국내3월11
테스트3국내4월44
테스트4해외5월22

회사명구분1월3월4월5월
테스트1해외32   
테스트2국내 11  
테스트3국내  44 
테스트4해외   22

첫번째는 테이블에 들어있는 값이구요... 두번째처럼 나오게 하려면 partition by를 써야 할까요..

아무리 해도 잘 안되서요...도와주세요..ㅠㅠ


답변 : select 회사명, 구분, case when 기간 = '1월' then 판매량 end as 1월, case when 기간 = '3월' then 판매량 end as 3월

, case when 기간 = '4월' then 판매량 end as 4월, case when 기간 = '5월' then 판매량 end as 5월 from 테이블명


partition by 는 그룹별로 지정해주는 함수이며 윈도우 함수와 함께 사용됩니다. ex)  select max(월급) over(partition by 부서 order by 월급) from 월급테이블 이라고 작성하면 부서별 최고 월급을 받는 데이터가 월급순으로 정렬되어 나옵니다.

decode 함수를 사용해도 위와 같은 결과가 가능하나 오라클에서만 사용되므로 case when으로 작성하였습니다.


* 윈도우 함수 역시 유용한 기능을 제공하는 함수이므로 기본적인 사용법이나 어떤 것들이 있는지 알아두는게 좋습니다.


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


질문 제목 : 오라클 db 기본키(pk) 데이터삽입질문이요! 

내용 : 데이터삽입시 201401, 201402, 201403처럼 일정하게 +1씩해서 기본키를 삽입하려는데 혹시 자동으로계산되게할수잇나요 응용법이궁금합니다.


답변 : insert into 테이블명 (기본키컬럼, 이름, 성별) values ((select max(기본키컬럼) + 1 from 테이블명), '홍길동', '남자');


* 정말 간단하게 답했네요. 최대값에 +1을 더한값으로 입력하는 방식을 취하고 있습니다. 이 방법 외에도 트리거에 대해서도 알아두면 좋습니다.


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


이상으로 2014.07월 까지의 답변이었고, 꾸준히 이어나가겠습니다.  데이터베이스와 관련해서 간단한 질문정도는 언제든지 환영하며, 제가 모르더라도 여러 루트로 알아보고, 배운뒤에 답변을 도와드리도록 하겠습니다. 혹 부족한 답변이 보인다면 언제든 조언 및 지적 환영합니다.


Posted by 타이니스타
2018. 4. 8. 07:00

안녕하세요. "타이니스타" 입니다.  이마트 과천점을 다녀온 후기 및 정보 남깁니다.

근처에 유명한 조개찜 식당이 있어서 다녀오는김에 가까운곳에 이마트가 보여서 들렀는데요. 이곳 이마트 과천점의 정보를 전달하겠습니다.  먼저, 이마트 과천점의 4월 휴점정보부터 살펴보겠습니다.


"이마트 과천점은 4/11(수), 25(수) 이틀만 휴점합니다.  매주 일요일 정상영업 합니다." 보이십니까?  둘째주, 넷째주 일요일은 무조건 모든 대형마트가 문을 닫는지 알았는데, 이곳은 엽니다.  수요일로 휴점일을 지정해뒀더라구요!  검색해도 안나오던 그 정보를 이곳에서 처음접한 제게는 놀라운 정보입니다.  둘째주 넷째주 일요일에 문여는 대형마트 라면서 검색하던 시절이여 안녕..  이 사실에 놀라워하는 제게 옆에 계셨던 이마트의 직원분께서 매장마다 다르다고 하시며 이렇게 영업하는곳도 있음을 재확인 시켜주셨더랬죠.

일요일(둘째 넷째주)에 꼭 대형마트를 들러야 한다 ->비록 거리가 좀 있으나 이마트 과천점도 대안이 되겠군요 +_+.


이마트 내에 작은 할인점인 No Brand 도 입점해 있습니다.  이마트 자체 브랜드로서 브랜드가 되어버린 노브랜드입니다. 레몬차 자몽차가 7980원입니다.  2키로그램이!!!  노브랜드 제품이 아닌, 이마트 자체에서 판매중인 레몬차나 자몽차 1키로가 이정도 가격에 판매중인걸 발견했으므로  반값에 가까운 가격임을 알 수 있었습니다.

사실 노브랜드의 품질에 대해서  저렴한만큼 하청업체를 쥐어짰다는 말이 돌고, 업체입장에서는 울며 겨자먹기로 원자재 값을 낮추어 저렴한 가격에 제품을 납품할 수 밖에 없다는 일부 의견을 접하긴 했습니다만 어디까지가 오피셜이고 뇌피셜인지 분간이 안되기에 별다른 언급은 하지 않겠습니다.  노브랜드지만 이마트 라는 대기업에서 유통한다는 사실 하나로 신뢰감을 업은 노브랜드 제품들.. 뭐, 소비자 입장에서야 괜찮은 품질의 제품을 조금이라도 저렴하게 구입할 수 있으니 긍정적으로 받아들여지긴 합니다만 지켜볼 일입니다.


이마트의 층별 안내판입니다.

지하 2층부터 5층까지는 주차장이 운영중입니다.  지하 1층은 신선식품, 가공식품 세제/제지 등을 판매하고 있으며,  지상 1층은 일상용품, 화장품, 고객만족센터, 유아휴게실이 위치해 있고 2층에는 가정용품, 주방용품, 문구/완구 를 진열해뒀으며 3층에는 패션, 잡화, 유/아동용품, 스포츠 용품을,   4층에는 가전, 패션 제품을 판매중이라고 써있군요.

지도로 검색해서 찾아갈때는 부지가 작아보여서 매장도 작을줄 알았는데 생각보다 넓고 정리도 잘해놓은 양호한 매장이었습니다.


이마트 과천점의 주차정보입니다.  구매 금액에 따라 무료주차 시간이 다른데요.  1만원 이상 구매시 1시간이고 그 이후로 1시간마다 3만원, 5만원, 10만원, 20만원 이상 구매로 무료 주차시간을 제공하고 있습니다.

주차장은 이마트 소유가 아닌 건물에서 관리한다고 되있기에 무료주차시간에 상당한 제약이 있나봅니다.

이상으로 이마트 과천점의 주요 정보를 적어보았습니다.  무엇보다 일요일에 연다는게 가장 큰 특징으로 기억되는 매장입니다.




Posted by 타이니스타
2018. 4. 7. 11:00

안녕하세요~ "타이니스타" 입니다. 가끔 오는 천호역에서 가볍게 맥주한잔하기 좋은 집을 발견했어요.

그곳은 바로 "짝태 앤 노가리 (짝태 & 노가리) 천호점" 입니다!

저렴하지도, 비싸지도 않은 대체로 무난한 가격대를 보이는 메뉴판입니다. 메뉴로는 역시 가게이름에서도 알 수 있듯이 짝태와 노가리 종류가 대부분을 차지하고 있군요.  여기서 잠깐!!  짝태? 먹태?  무슨 차이인지 궁금하시죠?

짝태는 명태의 배를 갈라 내장을 제거하고 소금에 절여 말린걸 말합니다!  먹태는 황태랑 비슷하게 말린종류의 명태지만 조금 거무스름하게 말린걸 말한다고 해요!  아무래도 거무스름하게 말린걸 먹으로 비유하여 먹태라는 이름을 갖게 된것이 아닌가 싶군요ㅎㅎ 



메뉴판을 포스팅하며 지금보니.. 시켜보고 싶은게 급격히 많아지네요. 짝태 먹태 한치 황태바삭이 노가리 종류는 어느정도 아는 맛이라지만.. 학꽁치나 아귀포, 보리멸, 가오리날개 등은 꼭 한번 먹어보고 싶네요..  먹기 위해서라도 한번 더 들러야 할 곳입니다..!  으으 가볍게 맥주 한잔이 갑자기 땡기네요. 메뉴의 다양성.. 인정합니다.



일부 메뉴는 이렇게 사진으로 프린팅 되어있기도 하네요. 바삭이는 최근에 이수역 행복맥주집에서 먹어본 그맛일테고.. 쫀드기나 꿀맛나 같은거야 어린시절 많이 먹었던 그맛일테구요~  빼빼어포는 안먹어봤으나 느낌이 오네요. 

문어발은 글쎄요.. 접하기야 많이 접했으나 딱히 먹어본적은 없는거같군요.  아무렴 어떻습니까 ㅎㅎ.


생맥주 세개 시키려다가 큰놈으로 하나 시켰습니다.  기본안주로 흔한 뻥튀기(?) 가 제공되는군요.

처음 따른 맥주인데 맥주와 거품의 비율이 좋습니다.  거품이 더 적어야 이상적이지만 첫잔이니 이해해봅니다.  테이블도 넓직하니 마음에 들어요.

주문한 메뉴가 나왔군요.  사실 술에취한 상태라 짝태인지, 먹태인지 구분은 안돼요. ㅎㅎ 그치만 분명 맛있었다는 점!    특히 저 마요네즈 소스와 함께라면 짝태든 먹태든 노가리든  정말 맛있게 먹을 수 있다는 점이죠.

마른 안주인지라 부담도 적고, 맥주에도 잘어울려서 사랑받는 짝태 노가리!  하루를 마치는 마침표로 어떠신가요?



다음 지도에서는 예전 주소가 나오는거같아서 직접 핀을 찍어서 추가해뒀습니다. 어디서 먹을까 하고 로데오거리를 크게 한바퀴 돌다가 들어갔던 집이었는데 만족하며 나왔었네요.  오늘도 행복한 하루 보내세요~!


Posted by 타이니스타
2018. 4. 6. 12:00

안녕하세요 "타이니스타" 입니다.  

미세먼지가 심하다 싶을때면 찾게되는 삼겹살이 오늘의 메뉴입니다.  어떤 기사에서 봤는데, 삼겹살이 미세먼지가 심할때 먹으면 좋다는건 허황된 말이라고 하더군요..  뭐 핑계삼아 먹는것 아니겠습니까?ㅎㅎ

회사에서 멀지 않은곳에 위치한 천호역의 로데오거리 방면에 위치한 고기집이에요.  근처에 여러 고기집들이 있더군요.

무한리필집들도 심심찮게 보였는데 그중에 논현점으로 몇번 방문했던 무한장소도 있더군요.

뭐, 제가 개인적으로 간게 아니다보니 강하게 어필할 수 없었고.. ㅋㅋ  애초의 목적대로 삼겹살집으로 향했습니다.


3.4.5 참숯구이 삼겹살전문점 이었는데요, 입구에서 느껴지는 포스에 발길이 향한곳이에요.



메뉴판의 표지입니다. 국내산 생삼겹살 이라고 써있는데요, 아무래도 냉동보다는 생삼겹에서 느껴지는 풍미가 더 좋다보니 식비 생각 안한다면 생삼겹을 찾게 되더군요. 어찌보면 참 투박하기 짝이없는 표지입니다만, 그래서인지 더욱 음식맛이 궁금해지는건 왜일까요?ㅎㅎ.

몇가지 삼겹살 메뉴와 갈비 등도 있었으나 가장 기본이 되는 생삼겹으로 주문했지요.  고기는 항상 옳다지만 이곳의 삼겹살도 옳은지.. 어디한번 먹어보겠습니다.


요즘은 이렇게 통삼겹 상태로 먼저 1차적으로 구우면서 육즙의 손실을 최소화 하더군요.  대체로 이렇게 하는집의 고기가 더 맛있었다고 생각합니다.  콘샐러드도 다른집에 비해 양이 많고 맛도 좋았어요.  콘샐러드만 있어도 소주한병 그냥 마실정도네요.ㅎㅎ  상차림을 잘 보면 오른쪽에 초록색의 무언가가 보이죠?  와사비 입니다.

와사비가 생각보다 삼겹살과 궁합이 잘 맞더군요. 깻잎 절임에 고기, 와사비, 쌈장 해서 싸먹으면 정~말 맛있습니다.  이건 강력히 추천하니까 꼭 먹어보세요.


1차 초벌 후, 2차적으로 자른 고기를 굽고 나면 이런 비주얼이 나옵니다..  정말 맛있습니다. +_+  또 먹고 싶어지는군요.  고기를 좋아하는지라 이집 저집 정말 많이도 다녔고, 또 많이 먹어봤는데 이정도 고기맛이면 능히 맛있는 집이라고 얘기할법 합니다.  개인적으로 돼지고기에서 풍미가 가장 좋은 부위가 삼겹살 이라고 생각하는데 말이죠.


또 한가지 재미난 식사방법은.. 이 집에서는 나오는 와사비와 공기밥, 삼겹살로 삼겹살 초밥을 만들어 먹을 수 있단거에요.

물론 양념이 되어있는 실제 초밥의 밥과는 맛이 다르지만 초밥 느낌은 낼 수 있단거죠.  밥 위에 와사비를 얹고, 그 위에 삼겹살을 올리면 끝!  삼겹살 초밥 만들기 참 쉽죠? ㅎㅎ.  고기랑 탄수화물은 참 위험해요.. 정신줄 놓을듯이 맛있거든요 +_+ 다이어트 계획중인분들은 반드시 피해야할 조합입니다.



삼겹살을 한껏 먹다가 추가한 갈비살이에요~ 삼겹살과 쌈장으로 시작해서인지 갈비살 특유의 고소함이 상대적으로 덜 느껴졌지만 이것도 맛이 좋았습니다.  반쯤 빙~ 둘러진 마늘도 맛있게 먹었죠. 

대체로 맛있고, 만족스러운 식사였습니다. 금액대는 평범한 생삼겹집들과 비슷한 수준이었어요. 천호역 종종 오는곳인데, 새롭게 맛집하나 저장했습니다.



지도상에서 표시되는 가게 이름은 손문345 군요 ㅎㅎ.  3겹살 4먹으로 5것제~  라서 345 인가 봅니다.  미세먼지 핑계대며 삼겹살 한점 공략하러 오기 좋습니다 !   

우울할땐? 돌격! 고기앞으로~  오늘 저녁은 삼겹살 어떠신가요? :)



Posted by 타이니스타
2018. 4. 5. 20:50

안녕하세요! "타이니스타" 입니다.  이번에 소개할 맛집은 짬뽕 맛집입니다.

동네 중국집에서 먹는 짬뽕과 달리 요새 뜨는 맛있는 짬뽕집들은 보통 불맛을 입혀서 짬뽕을 파는듯 한데요. 

지금 소개할 곳도 불향을 머금은 완전 맛있는! 짬뽕집 입니다.  이수역 부근에 2년 넘게 살았던 저인지라 왠만한 이수 맛집들은 줄줄 꿰고 있는데요.  이수역에는 중국집이 생각보다 많아요. 시장 부근에 한개, 이수역 번화가쪽에 3개, 이수역 서초구 방면에 한개, 그리고 지금 소개할 곳 한개. 다 가봤고, 이중에 세곳은 정말 맛있습니다. 그리고 이 세곳중에 가장 맛있는 집이 바로 여기, 짬봉타임 이에요.

 

돼지고기가 안들어가는 메뉴가 없네요.  쌀과 돼지고기는 확실한 국내산이군요. 

대~맛있는 짬뽕과 짜장면, 쫄깃한게 일품인 찹쌀탕수육 등 기본적인 메뉴만으로 승부를 보는 곳입니다.  연태고량주는 뭘까요? 중국집에서 술종류 뭐있나~ 하고 둘러보면 연태고량주가 곳곳에 있더라구요.  궁금하지만 언젠가 맛볼날이 오겠죠.ㅎㅎ  군만두를 따로 4천원에 메뉴로 판매하는것도 좀 특이했습니다. 군만두는 서비스 라는 인식이 뇌리에 강하게 새겨졌나보다~ 싶다가도 이곳의 음식을 먹다보면 분명히 맛있으니 저렇게 파는거겠지? 라는 생각이 듭니다.


짬봉에 들어가는 야채는 김치가 아닙니다.  100% 국내상 야채 입니다.  라는 문구가 인상적이네요.  짬뽕에 야채가 풍성하게 들어가는데, 이 야채들도 놓칠 수 없을만큼 맛있습니다.  매운맛도 되나보군요.  주문시에 말해달라는 안내문구도 있습니다. ㅎㅎ   이곳에는 음식에 대한 자부심이 강한지 이곳저곳에 안내문구들이 많은데요. 

양 맛 서비스 만족하지 못하면 연락달라는 문구도 있었습니다.  음.. 글쎄요. 서비스가 약간~ 부족했어요.  맛집인만큼 사람들이 끊이지 않았고, 그런만큼 힘들테지만 조금만 더 친절하게 응대를 해주면 더욱 입소문이 만발할 맛집입니다.


짠~ 나와준 짬뽕!! 곱빼기에요 ㅋㅋㅋ.  신선한 홍합과 야채, 돼지고기가 보이네요.  국물 한입만 떠먹어도 짬뽕홀릭이 되실거에요.  단언컨데, 서울에서 (안먹어본 호텔급, 고급중식집 제외) 몇손가락 안에 들어간다고 생각합니다.  중국집을 다 다녀본건 아니지만 서울생활 5년차에 접어든만큼 여기저기 많이 다니고 많이도 먹었습니다만 제가 먹어본곳중엔 이곳이 첫손에 꼽힙니다.  궁금하쥬? 맛있어유.  (이혜정 선생님버전)얼~마나 맛있게요.  으.. 또 먹고 싶어지네요.


짬뽕을 신나게 먹고 있는데, 탕수육이 나왔습니다.  소짜를 시켰어요. 짬뽕 곱빼기고 탕수육 소짜를 시켰는데, 양이 상당합니다. 건장한 남자 두명이어도 이렇게만 먹으면 충분합니다.  배터지게 먹겠다면 보통 짬뽕으로  두그릇에 탕수육 소짜 하나 추가하셔도 충분해요.

탕수육도 맛있는 탕수육이었는데요, 찹쌀탕수육입니다. 요새 탕수육이 맛있다 싶으면 쫀득한 튀김옷을 입은 찹쌀탕수육이죠?  탕수육도 참말로 맛있습니다만 짬뽕이 정말 맛있어서  탕수육이 오히려 뒷전이 되었어요. ㅋㅋㅋ

짬뽕먹으러 이수역을 간다.  짬뽕 하나만을 위해 가기엔 그정도의 음식은 아니겠지만 여긴 어느정도 가치가 있습니다. 짬뽕을 주 목적으로, 주변 구경을 부목적으로 갈만할 정도로 맛있는곳이에요.

다음에 맛난 짬봉이 먹고싶다 = 이곳을 다시 가야지~ 하고 벼르고 있는 참입니다.  저 진한 탕수육 소스도 그때 그 맛이 절로 머릿속에 그려집니다.

맛좋은 이수역 맛집 - 짬뽕타임 강력추천 합니다 !!  두번 머겅 세번 머겅 계속 머겅 +_+/.



사당역에서도 가깝고 이수역에서는 코앞입니다. 접근성도 좋으니 들러보세요~.


Posted by 타이니스타