본문 바로가기

Computer Science50

[SQL] UNION, INTERSECT, EXCEPT UNION, INTERSECT, EXCEPT SQL을 실행하면서 여러 개의 결과를 합쳐 보여주기 위해 set operation을 실행하게 된다. 대표적인 set operation으로 UNION, INTERSECT, EXCEPT가 사용된다. UNION은 | (or) 연산, INTERSECT는 & (and) 연산, EXCEPT는 - (minus) 연산을 나타낸다. UNION UNION 연산을 사용하면 SQL을 실행한 결과의 합집합을 구할 수 있다. (SELECT course_id FROM section WHERE sem='Fall' AND year=2019) UNION (SELECT course_id FROM section WHERE sem='Spring' AND year=2020) 예를 들어 위 SQL은 .. 2020. 6. 15.
[SQL] SELECT, AS, LIKE, ORDER BY SELECT SELECT id, name FROM instructor SELECT 속성 FROM 테이블명 형태로 명령을 보내면 원하는 테이블 속성의 모든 값을 불러올 수 있다. SELECT name FROM instructor WHERE id=1 또한 WHERE 문을 통해 원하는 조건에 해당하는 row의 속성 값만 가져올 수도 있다. SELECT * FROM instructor 그리고 속성 이름 대신 * 을 넣어주면 모든 속성을 가져올 수 있다. AS AS 키워드는 속성이나 테이블의 이름을 새로 지정하여 사용할 때 사용한다. SELECT id, name, salary/12 AS monthly_salary FROM instructor 위와 같이 지정할 속성 이름 뒤에 AS 구문과 함께 새 이름을 적어주면 .. 2020. 6. 12.
[SQL] INSERT, UPDATE, DELETE INSERT INSERT INTO instructor (id, name, dept_name, salary) VALUES (3, 'Mark', 'Math', 85000) INSERT INTO 테이블명 (속성1, 속성2, 속성3) VALUES (값1, 값2, 값2) 데이터를 삽입 할 때는 테이블명과 데이터를 삽입할 속성들, 그리고 데이터를 순서에 맞춰 넣어주면 된다. 따라서 위 sql은 id는 3, name은 Mark, dept_name은 Math, salary는 85000인 데이터를 넣는 sql이다. UPDATE UPDATE instructor SET salary = salary * 1.05 WHERE salary < 80000 UPDATE 테이블명 SET 수정할 내용 WHERE 조건 데이터를 수정할 때는.. 2020. 6. 9.
[SQL] CREATE, ALTER, RENAME, DROP TABLE CREATE TABLE 위와 같이 id, name, dept_name, salary 속성을 갖는 instructor 라는 테이블을 만들어보자. CREATE TABLE instructor( id char(5), name varchar(20) NOT NULL, dept_namevarchar(20), salarynumeric(8,2), PRIMARY KEY(id), FOREIGN KEY(dept_name) REFERENCES department) CREATE TABLE 키워드 뒤에 테이블 이름인 instructor를 써준 뒤 괄호를 열어 attribute 이름과 자료형을 넣어준다. char(5)는 5 byte 만큼 char 변수 공간을 할당하겠다는 뜻이고, varchar(20) NOT NULL 은 최대 20 .. 2020. 6. 2.
9. Graph Graph란? 그래프는 정점(vertex)들과 정점들을 잇는 간선(edge)으로 이루어진 자료구조이다. 예를 들어 위와 같은 그래프는 5개의 정점과 6개의 간선으로 이루어진 그래프이다. 그렇다면 이렇게 정점과 간선의 정보를 어떻게 저장해야 할까. 그래프는 크게 인접 리스트(Adjacency List) 형태나 인접 행렬(Adjacency Matrix) 형태로 구현된다. Adjacency List 인접 리스트는 각각의 정점마다 리스트를 할당하고, 해당 정점과 연결된 정점을 리스트에 저장함으로써 간선 정보를 저장한다. 인접 리스트를 사용할 경우 간선의 갯수만큼만 공간을 할당하여 메모리를 절약할 수 있으나, 연결되어 있지 않은 정점 두개의 연결 여부를 확인하려면 정점의 모든 간선을 찾아봐야 한다는 단점이 있다... 2020. 5. 29.
8. Hash Table Hash Table 데이터를 저장할 때 key 값을 사용하여 저장하면 데이터를 찾을 때 맞는 key 값을 찾는 탐색 과정이 필요하다. 따라서 데이터가 많아질수록 key 값을 위한 탐색 과정이 길어져 느려지게 된다. 이 때문에 key 값을 통해 바로 데이터의 위치를 알 수 있는 방법을 사용하게 된다. key 값에 특정한 산술 연산을 하여 데이터의 주소를 얻어 데이터에 접근하게 되며, 이 과정을 Hashing 이라고 한다. Hash Table은 hashing을 통해 데이터를 저장하는 dictionary를 말한다. Hash Function hash table에서는 hash function을 통해 key 값을 일정 범위 내의 integer 값으로 변환하여 저장한다. 따라서 hash function은 어떤 형식으.. 2020. 5. 29.
7. AVL Tree AVL Tree란? BST(Binary Search Tree, 이진 탐색 트리)는 검색, 삽입, 삭제에 모두 O(h)의 시간이 소요된다. 6. Binary Search Tree Binary Search Tree란? Binary Search Tree(BST, 이진 탐색 트리)는 다음과 같은 조건을 만족하는 이진 트리를 말한다. 노드 L을 left child, 노드 R을 right child로 갖는 노드 A가 있을 때, key(L) ≤ key(A).. ju-hy.tistory.com BST의 높이는 데이터의 삽입 순서에 따라 매우 높아질 수 있고 이는 BST의 효율을 낮추는 원인이 된다. 이 때문에 BST를 사용하면서 높이를 최소화하는 방법이 고안되게 되었다. 높이를 최소화하기 위해서는 트리의 left와 r.. 2020. 5. 28.
6. Binary Search Tree Binary Search Tree란? Binary Search Tree(BST, 이진 탐색 트리)는 다음과 같은 조건을 만족하는 이진 트리를 말한다. 노드 L을 left child, 노드 R을 right child로 갖는 노드 A가 있을 때, key(L) ≤ key(A) ≤ key(R)을 만족한다. 즉, 모든 노드의 key 값은 left child의 key 값보다 크거나 같고, right child의 key 값보다 작거나 같다. 따라서 BST를 inorder traversal(전위 순회)를 통해 탐색하면 key 값이 작은 순서대로 방문하게 된다. Search BST에서 원하는 key 값을 찾으려면 다음과 같은 작업을 반복하면 된다. 찾으려는 노드를 T, 현재 방문중인 노드를 C라고 했을 때 key(T)k.. 2020. 5. 22.
5. Map & Dictionary Map이란? Map은 key-value 형태로 데이터를 저장하는 자료구조이며, key 값을 통해서 데이터를 검색, 저장, 삭제한다. 이 때, map은 중복된 key 값은 허용되지 않는다. 예를 들어, 전화번호부의 경우 같은 전화번호에 여러 이름은 저장되지 않는다. 따라서 전화번호를 key 값으로, 이름을 value로 map에 저장하면 된다. Dictionary란? Dictionary는 기본적으로 map과 같이 key-value 형태로 데이터를 저장하지만, map과 달리 중복된 key 값이 허용된다. 예를 들어 단어 사전의 경우 하나의 단어에 여러 가지 뜻이 있을 수 있다. 따라서 단어를 key 값으로, 단어의 뜻을 value로 dictionary에 저장하면 된다. 그렇다면 List를 기반으로 Map을 구.. 2020. 5. 22.