728x90

SQL 13

[MariaDB] 스토어드 프로시저 사용법

오늘은 스토어드 프로시저(stored procedure)에 대해서 알아보도록 하겠습니다. 스토어드 프로시저는 일련의 SQL문들을 하나로 묶어서 한 번에 수행할 수 있도록 도와주는 기능입니다. 스토어드 프로시저는 다음과 같이 만듭니다. DELIMITER // CREATE PROCEDURE 프로시저명() BEGIN SQL문 ... SQL문 END // DELIMITER ; 호출할 때 사용할 이름을 만들어 주고, BEGIN과 END // 사이에 SQL 문들을 넣어주면 됩니다. 그리고 생성한 프로시저를 호출할 때는 다음과 같이 명령을 주면 됩니다. CALL 프로시저명(); 한 번 예시를 보여드리겠습니다. test 데이터베이스에 student라는 테이블이 있는 상황이라고 가정하겠습니다. 위와 같이 프로시저를 만들..

[sqlite3] JOIN으로 서로 다른 테이블의 컬럼들 붙이기(내부 조인, 외부 조인)

우리는 SELECT 문을 이용할 때 보통 하나의 테이블에서 어떤 데이터를 조회합니다. 그런데 어떤 경우에는 두 개의 테이블을 결합시켜서 읽는 것이 좀 더 정보성(informative)이 있습니다. 왜냐하면 하나의 테이블만으로는 충분한 정보를 얻기 힘들 때가 많기 때문입니다. 다음과 같은 두 개의 테이블이 있다고 가정하겠습니다. 첫번째 테이블에는 선수의 아이디와 이름, 그리고 소속된 팀의 아이디가 담겨 있습니다. 그리고 두번째 테이블에는 팀의 아이디와 이름이 담겨 있습니다. 참고로 첫번째 테이블과 두번째 테이블은 각각 다음과 같은 쿼리로 생성했습니다. sqlite> CREATE TABLE player (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, team_id I..

[MariaDB] LIKE를 사용하여 특정 문자열 검색하기

대부분의 웹사이트의 경우 검색기능을 제공하고 있습니다. 왜냐하면 수많은 데이터에서 내가 필요한 정보를 검색없이 찾아가는 것은 거의 불가능하기 때문입니다. 오늘은 테이블에서 특정 문자열이 포함된 행을 읽어서 보여주는 것에 대해 알아보도록 하겠습니다. 우선 다음과 같은 행들이 담겨져 있는 article이라는 이름의 테이블이 있다고 가정하겠습니다. 이 테이블에서 title 컬럼에 "코로나"라는 문자열이 담긴 행들을 읽으려면 다음과 같이 쿼리문을 작성해주면 됩니다. SELECT * FROM article WHERE title LIKE '%코로나%'; 이번에는 contents 컬럼에 "햄버거"라는 문자열이 포함된 행들을 읽어보겠습니다. 만약 title 컬럼 또는 contents 컬럼에 "코로나"가 포함된 행들을 ..

[MariaDB] 테이블에 열 추가 및 제거하기

오늘은 MariaDB에서 기존에 생성했던 테이블에 새로운 열을 추가하고 제거하는 방법에 대해서 다루도록 하겠습니다. 참고로 MariaDB와 MySQL은 거의 문법이 같습니다. 우선 다음과 같은 내용을 담고 있는 user라는 테이블이 있다고 가정하고 시작하겠습니다. 어떤 내용이 담겨져 있는지 한번 봅시다. MariaDB [test]> SELECT * FROM user; id와 name이라는 컬럼들을 가지고 있는 테이블입니다. 각 열의 속성을 알고 싶으면 다음과 같이 쿼리문을 작성하면 됩니다. MariaDB [test]> SHOW COLUMNS FROM user; 열 추가하기 저는 이 테이블에 age라는 새로운 열을 하나 추가해보겠습니다. 데이터 타입은 int로 해주고, Null 값을 허용하도록 하겠습니다...

[sqlite3] 행 갯수 카운트하기

오늘은 테이블 내 행이 몇 개가 존재하는지 그 갯수를 읽는 것에 대해 다루도록 하겠습니다. 예시를 위해 저는 먼저 다음과 같은 테이블을 준비했습니다. 지금 보시면, student라는 테이블 안에 행이 총 7개가 존재합니다. 몇 개의 행이 존재하는지 읽어내는 쿼리문은 다음과 같습니다. sqlite> SELECT COUNT(*) FROM student; 7개의 행이 존재한다는 것을 잘 알려주죠? 경우에 따라서는 전체 행의 갯수가 아니라 열별 행 갯수를 알고 싶을 때가 있습니다. 지금 테이블에서 score 열에서 값이 있는 행은 5개 입니다. 이 숫자를 카운트하기 위해서는 다음과 같이 쿼리문을 작성하면 됩니다. sqlite> SELECT COUNT(score) FROM student; score 열에서 값이 ..

[sqlite3] 테이블 내용 rowid 열과 함께 보기

sqlite에서는 테이블을 생성할 때 rowid라는 열(column)을 자동으로 생성해줍니다. rowid는 1부터 시작해서 행(row)이 추가되면 하나씩 그 값이 증가하게 되어 있습니다. 말 그대로 행의 아이디를 나타내줍니다. rowid는 sqlite에서 꽤 유용하게 쓸 수 있기 때문에, 오늘은 테이블의 내용을 rowid와 함께 보는 방법에 대해서 다루도록 하겠습니다. rowid 컬럼 활용하기 다음과 같은 테이블이 있습니다. 지금은 rowid가 보이지 않는 상태입니다. name, score, id 열들이 있는 것을 확인하실 수 있습니다. 이 열들은 제가 직접 만들어준 열들입니다. 이 테이블의 내용을 rowid와 함께 보려면 다음과 같이 명령해줘야합니다. sqlite> SELECT rowid, * FROM..

[MariaDB] 컬럼 타입 변경하기

우선 컬럼의 타입 변경이 필요한 상황을 만들어보겠습니다. 저는 아직 어떤 테이블도 존재하지 않는 test라는 이름의 데이터베이스를 사용하도록 하겠습니다. MariaDB [(none)]> use test; test 데이터베이스 안에 user라는 이름의 테이블을 생성하겠습니다. id와 name 두 개의 컬럼으로 구성된 테이블을 만들어주겠습니다. MariaDB [test]> CREATE TABLE user (id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(10) NOT NULL, PRIMARY KEY(id)); user 테이블의 컬럼들의 특성을 살펴보겠습니다. MariaDB [test]> SHOW COLUMNS FROM user; 여기서 name 열의 타입을 주목해주세요..

[sqlite3] 데이터 오름차순 및 내림차순으로 정렬하기

다음과 같은 행들을 담고 있는 테이블이 있다고 가정하고 시작하겠습니다. 테이블명은 student입니다. 저는 name 열의 값을 가나다 순으로 정렬하고 싶습니다. 이때 필요한 쿼리는 다음과 같습니다. sqlite> SELECT * FROM student ORDER BY name; 가나다순으로 잘 정렬된 것을 확인하실 수 있습니다. 그러면 이번에는 역순으로 정렬해보겠습니다. DESC만 추가해주면 됩니다. sqlite> SELECT * FROM student ORDER BY name DESC; 가나다 역순으로 잘 정렬되었습니다. 이번에는 score 열의 값을 기준으로 정렬을 해보겠습니다. 낮은 점수부터 시작해서 높은 점수로 정렬이 됩니다. sqlite> SELECT * FROM student ORDER BY..

[sqlite3] 기존 테이블에 컬럼(열) 추가하기

테이블을 이미 만들었는데, 나중에 새롭게 열(column)을 추가해야할 일이 생겼다면 어떻게 해야할까요? 우선 아래와 같은 데이터를 담고 있는 테이블이 있다고 가정하고 시작하겠습니다. name을 나타내는 열과, score를 나타내는 열이 있는 student라는 이름의 테이블입니다. 저는 이 테이블에 id라는 열을 추가하고 싶습니다. 그러기 전에 우선 .schema student로 이 테이블이 어떤 구조를 갖고 있는지 확인해볼까요? 확인해보니 name 열은 TEXT 타입으로 자료를 입력 받고 꼭 입력 받아야하는 상황이고, score 열은 INT, 즉 정수 자료를 입력 받는 상황입니다. 저는 이 테이블에 id 열을 추가하면서 데이터 타입은 TEXT로 하겠습니다. 이때 필요한 SQL 쿼리는 다음과 같습니다. ..

[sqlite3] 테이블에서 마지막 행 또는 첫 행 읽기

다음과 같은 데이터를 담고 있는 테이블이 있습니다. 이 테이블의 이름은 student인 상황입니다. 여기서 마지막 행만을 읽으려면 다음과 같이 명령해주면 됩니다. sqlite> SELECT * FROM student ORDER BY ROWID DESC LIMIT 1; 그러면 마지막 행을 읽어들입니다. 마지막 행을 잘 읽어들였죠? 만약 가장 위에 있는 첫 행을 읽으려면 DESC를 지워주면 됩니다. sqlite> SELECT * FROM student ORDER BY ROWID LIMIT 1; 첫 행을 잘 읽어냈습니다. b스카이비전의 추천글 ☞ [sqlite3] 테이블에서 한 행을 랜덤으로 읽기 ☞ [sqlite3] 기본 명령어 및 create, read, update, delete 하는 법 정리