USE sqldb;
SELECT * FROM usertbl;
SELECT * FROM usertbl WHERE name = '김경호';
해당 테이블을 USE로 선택하여 usertbl의 name타이틀을 이용해 필터링하는 예시.
* WHERE 조건문, AND
두가지가 모두 만족할 때
USE sqldb;
SELECT * FROM usertbl;
SELECT userID, Name FROM usertbl WHERE birthYear >= 1970 AND height >= 182;
생일조건, 키 조건이 모두 만족할 때를 필터링하는 예제
*WHERE 조건문, OR
둘중에 하나라도 만족 만족할 때
USE sqldb;
SELECT * FROM usertbl;
SELECT userID, Name FROM usertbl WHERE birthYear >= 1970 OR height >= 182;
-- SELECT userID, Name FROM usertbl WHERE birthYear >= 1970 AND height >= 182;
생일조건, 키 조건이 둘중 하나라도 만족하면 포함하는 예제
*WHERE 조건문, BETWEENA ANDB
두 값 사이에 있는 항목만 골라냄
USE sqldb;
SELECT * FROM usertbl;
SELECT name, height FROM usertbl WHERE height BETWEEN 180 AND 183;
height의 사잇값(180~183 사이)을 필터링 한다.
*WHERE 조건문,IN ('A','B' ... 'C')
IN 내부에 포함되는 모든 항목을 골라냄
USE sqldb;
SELECT * FROM usertbl;
SELECT name, addr FROM usertbl WHERE addr IN ('경남','전남','경북');
addr 내의 IN 내부에 포함되는 모든 항목을 포함
*WHERE 조건문, LIKE '조건'
아래 조건은 '김'으로 시작하는 모든 항목을 골라낸다. 뒤에 %를 붙여준다.
USE sqldb;
SELECT * FROM usertbl;
SELECT name, height FROM usertbl WHERE name LIKE '김%';
아래 조건은 앞에는 무엇으로 시작하는지 모르고, 뒤에는 '종신'으로 끝나는 항목을 필터하는 것.
USE sqldb;
SELECT * FROM usertbl;
SELECT name, height FROM usertbl WHERE name LIKE '_종신';
-- SELECT name, height FROM usertbl WHERE name LIKE '김%';
구매테이블은, 회원테이블을 Foreign Key(FK)로 아이디를 연결하며, 순번이 Primary Key(PK)로 쓴다.
구매테이블의 FK는 구매 항목이므로 해당 아이디가 여러번 나올 수 있다.
반응형
1. 새로운 db 생성.
이름은 sqldb로 했다.
CREATE DATABASE sqldb;
2. 첫번째 테이블 생성
위에서 생성한 db 내에 사용하기 때문에 USE문으로 db명을 선택해야 한다.
user에 관한 정보 "usertbl" 생성. 상단의 Title 부분만 생성하는 것이다.
USE sqldb;
CREATE TABLE usertbl -- 회원 테이블
( userID CHAR(8) NOT NULL PRIMARY KEY, -- 사용자 아이디(PK)
name VARCHAR(10) NOT NULL, -- 이름
birthYear INT NOT NULL, -- 출생년도
addr CHAR(2) NOT NULL, -- 지역(경기,서울,경남 식으로 2글자만입력)
mobile1 CHAR(3), -- 휴대폰의 국번(011, 016, 017, 018, 019, 010 등)
mobile2 CHAR(8), -- 휴대폰의 나머지 전화번호(하이픈제외)
height SMALLINT, -- 키
mDate DATE -- 회원 가입일
);
3. 두번째 테이블 생성
구매목록 관련 테이블 생성, PK으로는 구매의 순번. AUTO_INCREMENT는 자동으로 새롭게 생긴 열에 숫자를 매긴다.
생성한 또는 불러온 db가 왼쪽 리스트에 있는데, USE문을 사용하고 번개로 실행하면, 해당 db가 찐하게 하이라이트되며, 이제 그 DB에 SQL문을 사용하는 것이 된다.
SELECT문 기본 형태 (옵션을 사용할 시 아래 옵션이 나열되는 순서는 변경되면 안된다.)
SELECT select_list
[ FROM table_source ]
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
이를 더 간단히, 자주쓰이는 형태
SELECT [열이름]
FROM [테이블이름]
WHERE [조건]
제일 자주 사용하는 SELECT문 (특정 db의 테이블의 전체 내용을 볼 때)
SELECT * FROM [db이름/테이블이름]
특정 db를 USE로 잡고, 해당 db의 테이블의 모든 내용을 보여주는 결과
특정 db 내의 특정 table명을 불러와서 보여주는 방법 (2가지)
- USE문을 사용안했을 때
SELECT * FROM db이름.테이블이름;
- USE문을 사용했을 때
SELECT*FROM테이블이름;
(USE로 database선택을 안했을 때)
SELECT * FROM employees.titles;
(동일 명령)
USE employees;
SELECT * FROM titles;
특정 Title명으로 골라서 뽑아낼 수 있다.
USE employees;
SELECT first_name, last_name, gender FROM employees;
<주석 처리하기, 한줄 주석, 여러줄 주석>
한줄 주석 : --
여러줄 주석 : /* */
USE employees; -- 여기는 한줄 주석
SELECT first_name, last_name, gender FROM employees;
/*
여기는 여러줄의 주석
입니다.
*/
Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.
그래서 위 메세지가 시킨대로 다시 아래와 같이 명령을 썼더니 결국 Fail 이고, 아래와 같은 메세지가 나타났다.
[admin@localhost lib]$ sudo systemctl status mariadb.service
● mariadb.service - MariaDB database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled) Active: failed (Result: exit-code) since Fri 2022-03-04 15:28:08 KST; 10s ago Process: 4606 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=1/FAILURE)
Mar 04 15:28:08 localhost.localdomain mariadb-prepare-db-dir[4606]: Please check all of the above before submitting a bug report Mar 04 15:28:08 localhost.localdomain mariadb-prepare-db-dir[4606]: at http://mariadb.org/jira Mar 04 15:28:08 localhost.localdomain mariadb-prepare-db-dir[4606]: Initialization of MariaDB database failed. Mar 04 15:28:08 localhost.localdomain mariadb-prepare-db-dir[4606]: Perhaps @sysconfdir@/my.cnf is misconfigured or there is some problem with permissions of /var/lib/mysql. Mar 04 15:28:08 localhost.localdomain mariadb-prepare-db-dir[4606]: Initialization of MariaDB database was not finished successfully. Mar 04 15:28:08 localhost.localdomain mariadb-prepare-db-dir[4606]: Files created so far will be removed. Mar 04 15:28:08 localhost.localdomain systemd[1]: mariadb.service: control process exited, code=exited status=1 Mar 04 15:28:08 localhost.localdomain systemd[1]: Failed to start MariaDB database server. Mar 04 15:28:08 localhost.localdomain systemd[1]: Unit mariadb.service entered failed state. Mar 04 15:28:08 localhost.localdomain systemd[1]: mariadb.service failed.