https://mariadb.com/kb/en/getting-data-from-mariadb/
오늘은 Getting Data From MariaDB 를 진행해 보겠습니다.
우선 테스를 위해 데이터 삽입을 해야 할거 같습니다. 아래와 같이 몇개 더 넣어보죠~
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('0553213695', 'Sample Title 1', 1, NULL, '2000', 'Description for Sample Title 1.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('1553213695', 'Sample Title 2', 2, NULL, '2001', 'Description for Sample Title 2.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('2553213695', 'Sample Title 3', 1, NULL, '2002', 'Description for Sample Title 3.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('3553213695', 'Sample Title 4', 2, NULL, '2003', 'Description for Sample Title 4.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('4553213695', 'Sample Title 5', 1, NULL, '2004', 'Description for Sample Title 5.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('5553213695', 'Sample Title 6', 2, NULL, '2005', 'Description for Sample Title 6.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('6553213695', 'Sample Title 7', 1, NULL, '2006', 'Description for Sample Title 7.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('7553213695', 'Sample Title 8', 2, NULL, '2007', 'Description for Sample Title 8.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('8553213695', 'Sample Title 9', 1, NULL, '2008', 'Description for Sample Title 9.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('9553213695', 'Sample Title 10', 2, NULL, '2009', 'Description for Sample Title 10.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('0553213696', 'Sample Title 11', 1, NULL, '2010', 'Description for Sample Title 11.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('1553213696', 'Sample Title 12', 2, NULL, '2011', 'Description for Sample Title 12.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('2553213696', 'Sample Title 13', 1, NULL, '2012', 'Description for Sample Title 13.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('3553213696', 'Sample Title 14', 2, NULL, '2013', 'Description for Sample Title 14.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('4553213696', 'Sample Title 15', 1, NULL, '2014', 'Description for Sample Title 15.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('5553213696', 'Sample Title 16', 2, NULL, '2015', 'Description for Sample Title 16.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('6553213696', 'Sample Title 17', 1, NULL, '2016', 'Description for Sample Title 17.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('7553213696', 'Sample Title 18', 2, NULL, '2017', 'Description for Sample Title 18.');
INSERT INTO books (isbn, title, author_id, publisher_id, year_pub, description) VALUES ('8553213696', 'Sample Title 19', 1, NULL, '2018', 'Description for Sample Title 19.');
이제 준비가 되었다면 다음과같이 보일 겁니다. 가장 기본적인 select를 진행합니다.
select * from books;
22개의 라인의 데이터가 보이네요.
이제 예제에서와 같이 다음과 같이 실행해 보겠습니다.
select isbn, title, author_id from books LIMIT 5;
이제는 설명하지 않아도 아시겠죠?
다음은 우리가 처음 해보는 쿼리문 입니다.
SELECT isbn, title, author_id FROM books LIMIT 5, 10;
위 쿼리는 처음 5개의 결과문을 건너뛰고 10개를 출력하라는 쿼리문 입니다. 실행하면 다음과 같이 박스 부분이 날라간 것이죠.
예제와 조금 다르지만, 다음과 같이 where 을 사용해서 author_id가 1인 것 중 앞에서 5개만 출력해 보려 합니다.
SELECT isbn, title FROM books WHERE author_id = 1 LIMIT 5;
그리고 아래와 같이 실행해 볼께요. 그럼 author_id 이 1인 것들 전부 출력 됩니다.
select isbn, title from books where author_id = 1;
이제 부터 한단계 더 복잡한 쿼리를 진행해 보겠습니다.
SELECT isbn, title FROM books WHERE author_id = 1 ORDER BY title ASC LIMIT 5;
위 쿼리는 author_id가 1인 것중 title의 값을 오름차순으로 정렬 하는 것 입니다.
그럼 반대로 정렬도 해봐야겠죠
SELECT isbn, title FROM books WHERE author_id = 1 ORDER BY title DESC LIMIT 5;
이제 더 복잡한 쿼리를 생성해 보죠 우리는 2갠의 테이블이 있습니다.
하나는, books이고 다른 하나는 authors 테이블 입니다. 이 두개의 테이블을 조인 하여 새로운 필드를 만들고 거기에 조건에 부합하는 것을 만드려 합니다.
우리가 이번에 하려는 것은 books의 author_id와 authors테이블의 author_id의 값이 같은 것을 찾아서 books의 year_pub 필드가 1995와 같은 것을 찾아 title을 정렬 하려 합니다. 2가지의 조건이 붙는 것이죠
A와 B의 필드 값이 1인 것과, 필드 중 다시 year_pub가 1995인 것을 찾는 것 입니다.
SELECT isbn, title, CONCAT(name_first, ' ', "ted") AS author from books JOIN authors USING (author_id) WHERE year_pub = '1995' ORDER BY title LIMIT 5;
여기서 LIKE절에 대해서 배워봅시다.LIKE는 보통 문자열 검사를 위해 사용합니다. 하지만 대량으로 할 경우 성능 저하 이슈가 있습니다.그러니 주의해서 사용할 필요가 있습니다.
SELECT isbn, title, CONCAT(name_first, ' ', name_last) AS author FROM books JOIN authors USING (author_id) WHERE name_last LIKE 'kafka%' ORDER BY title ASC LIMIT 5;
가장 큰 장장이자 단점이 바로 저 네모 박스입니다. 대 소문자를 구별하지 않는....
하지만 앞에서 검색의 범위를 줄여서 LIKE를 사용한다면 상당히 유용합니다. 이번에는 SQL_CALC_FOUND_ROWS에 대해서 알아 보려 합니다.
사용 방법은 아래와 같습니다.
SELECT SQL_CALC_FOUND_ROWS isbn, title FROM books JOIN authors USING (author_id) WHERE name_last = 'Kafka' LIMIT 4;
위와 같이 4개의 데이터만 보입니다. 하지만 아래와 같이 다음과 같이 실행하면
SELECT FOUND_ROWS();
위 쿼리에 대한 전체 행의 개수를 구할 수 있습니다. SQL_CALC_FOUND_ROWS 에 의하여 출력된 값의 전체 개수를 구할 수 있게 될 수 있습니다. 이역시 유용하게 사용할 수 있습니다. 2번 쿼리하여 가져오지 않아도 되니까요
'서버인프라 > 데이터베이스' 카테고리의 다른 글
PostgreSQL 튜너 (68) | 2024.01.25 |
---|---|
데이터 변경 그리고 삭제 (61) | 2023.10.31 |
MariaDB Basic (2) | 2023.10.25 |
update를 해보자 (69) | 2023.10.22 |
데이터를 확인하고 변경해보자~ (73) | 2023.10.22 |
댓글