목록3학년 1학기/데이터베이스(DB) (30)
오래 못 할 짓 하지 않기
Stored procedure : 사용자가 정의한 프로시저 구체적인 하나의 task를 수행한다. 예제1) 두 정수의 곱셈 결과를 가져오는 프로시저 작성하기 ▶ delimiter $$ ▶ Create procedure product(In a int, In b int, OUT result int) // Input parameter랑 Output parameter 를 명시해야한다. (In은 생략 가능) ▶ Begin ▶ Set result = a*b; ▶ END ▶ $$ ▶ delimiter ; (사용법) ▶ call product( 5 , 7 , @result); ▶ select @result; 예제2) 두 정수의 맞바꾸는 프로시저 작성하기 ▶ delimiter $$ ▶ Create procedure cha..
stored function : 사용자가 정의한 함수 예제) 직원의 ID를 10자리 정수로 랜덤하게 발급하려고 한다. ID의 맨 앞자리는 1로 고정한다. → 1xxxxxxxxx ▶ delimiter $$ ▶ Create function id_generator() //parameter 없음 ▶ Returns int ▶ No SQL // 중요한 거 아님 ▶ Begin // 이제부터 함수 Body 시작 , 아래부터 동작할 부분임 ▶ RETURN ( 1000000000 + floor(rand()*1000000000)); ▶ END // 함수 Body 끝 ▶ $$ // delimiter로 설정한 세미콜론 ▶ delimiter ; // 다시 delimiter로 세미콜론 설정을 바꾼다. 이렇게 만들어진 함수를 사용해..
Order by - 조회 결과를 특정 Attribute(들) 기준으로 정렬 - 오름차순 ACS (Defualt) - 내림차순 DESC 예) 연봉 기준으로 모든 직원들을 정렬하려면? 오름차순 : Select * From employee ORDER BY salary; 내림차순 : Select * From employee ORDER BY salary DESC; 예2 ) 직원들을 부서별로 오름차순 정렬하고, 같은 부서 내에서는 연봉 기준으로 내림차순으로 정렬한다면? Select * From employee ORDER BY dept_id ASC, salary DESC; ▶ 여러 Attribute 가 올 때 우선순위는 앞에 명시된 Attribute 차례로 정렬된다. Aggregate function : 여러 Tup..
Join : 두 개 이상의 table에 있는 데이터를 한 번에 조회하는 것 ● 종류 1) Implicit Join : From 절에서는 사용될 Table만 나열 Where 절에서는 Join condition 명시 [ From 절에서 ] Employee table이 Department table과 Join을 하는데 dept_id와 id가 같은 것들만 Join을 한다. 특징) from 절에서 On 뒤에 Join condition이 명시된다. 단점) 1. Where 절에서 Selection condition 과 Join condition 이 같이 있어서 가독성이 떨어진다. 2. 조금만 복잡한 Join 쿼리를 작성하다보면 꼬일 가능성이 크다. 2) Explicit Join : From 절에 Join 키워드와 함..
NULL 1) Unknown : True 일 수도 있고, False일 수도 있다. 알 수 없음 2) Unavailable or withheld : 사용 불가 3) not applicable : 애초에 해당사항 X ex) 휴대폰 번호 칸이 NULL임 , 알고보니 폰이 없음 Attribute value가 NULL일 경우 14와 15의 생일이 둘 다 NULL ! = 14와 15의 생일은 같다. Value 가 NULL인 데이터를 찾기 Select id from employee Where birth_date = null; 이러면 아무것도 안 나옴 Select id from employee Where birth_date is null; 이래야 birth date가 NULL인 값들을 볼 수 있다. Three-Valu..
Subquery : 윙의윙 느낌임 예시를 하나 하고 설명해주겠음 (저번에 만든 table에 이어서 만든다) ===============문제 1) ============= id=14인 직원의 생일보다 빠른 직원들의 [ id,이름,생일 ] 을 알고자 한다. [ 1번 접근법 ] ● 우선 id=14인 직원의 생일을 구한다. → select birth_date from employee where id=14; (결과) 1992-08-04임. → select id,name,birth_date from employee where birth_date < '1992-08-04'; 이 두 개의 쿼리를 하나의 쿼리로 바꿀 방법이 있다 [ 2번 접근법 ] 위에서 첫 번째 쿼리의 값이 '1992-08-04' 이므로, 그 값을 w..
Insert - 데이터 추가 INSERT INTO (데이터를 추가할 table name) -> VALUES (1,'Kim','2001-03-01' , 'M' ); Data를 Table에 넣을 때 사용한다. ※ 주의할 점 1) Primary Key를 입력해야한다면, 겹치지 않게 넣어주어야 한다. 2) Attribute를 생성한 순서대로 데이터 값도 순서대로 추가해주어야 한다. 3) Constraints 를 지켰는지 확인한다. -> 문제가 생겼을 때, SHOW CREATE TABLE (문제가 생기고 있는 table 이름); 하면 어떤 조건을 만족시키지 못했는지 알 수 있다. 위와 같이 Table 다음에 attribute 이름을 나열한 뒤에 VALUES를 추가한다면 1) 원하는 순서대로 값을 넣을 수 있고. ..
SQL 용어 : Relational 에서 쓰이던 용어들과는 다르게 사용된다. 알아두자 특징 중복된 Tuple 가능! // * relational data model 과 다른 점임 예제) SQL을 통하여 DB 만들어보기 CREATE DATABASE company; 이거 하면 DB생김 하지만 만들기만 했지 쓴다고는 안 했기에 이걸 쓸 거라고 정해줘야 한다. Use company; 앞으로 헷갈릴 수도 있는데 주로 Database에서 Schema가 정의되고 , Schema에서 table이 정이된다. Database → Schema → Table Company table에 넣을 것 이 Schema를 구체적으로 만들어 놓아야 한다. attribute data type (아는 것들은 그냥 넘겼음) ● 문자열 1) 고..
Relation을 알기 위해 알아야 하는 개념 ● Set : 서로 다른 elements를 가지는 집합 순서는 중요X Relation의 형태는 이와 같다. 위와 같은 List를 [ Tuple = n개의 element로 이루어진 list ] 이라고 부를 수 있다. Relational data model 여기에서는 Set = Domain ex) 학생 정보로 relation을 만들어보자 ● student_ids : 학번 집합 ● student_names : 학생 이름 집합 ● university_grades : 학년 집합 ● major_name : 전공 집합 ● phone_nums : 핸트폰 번호 집합 이렇게 만들었다. 근데 이 학생의 비상연락망도 추가하려고 하니 동일한 Domain이 같은 Relation 안에..
DB란? "관련있는" 데이터들의 "조직화된" 집합 관련있는 데이터들을 조직화해서 정리해야한다. → 도서관에 책에 정리가 되어있지 않으면 불편함을 넘어서, 제 역할을 할 수 없을 수도 있다. - 조직화를 통한 장점 1. 원하는 데이터를 빨리 찾을 수 있다. 2. 중복을 피할 수 있다. 3. 데이터의 불일치도 막을 수 있다. ( 도서관에 책을 정리를 해놓았을 때 장점과 같다. ) DBMS Database management systems : 사용자가 DB를 정의하고 만들고 관리하는 기능을 더 편하게 사용할 수 있게 하는 시스템 → DB를 정의하다보면 부가적인 데이터가 발생한다 ( = metadata ) Metadata = data about data 주로 데이터의 유형, 구조 , 조건 , 저장 , 인덱스 이..