Datebase 의 기본적인 CRUD (Create, Read, Up-date, Delete)
이름 | SQL | 기능 |
Create | CREATE | 생성 |
Read | SELECT | 읽기 |
Up-date | UPDATE | 갱신 |
Delete | DELETE | 삭제 |
INSERT 문
테이블에 데이터를 삽입하는 명령어
INSERT INTO usertbl VALUES (...);
INSERT usertbl VALUES (...); --INTO는 생략 가능
INSERT [INTO] 테이블명 [(열1, 열2, ...)] VALUES (값1, 값2 ... )
* BNF 표기법에 따라 []은 생략이 가능하다.
▷ 테이블 생성 및 데이터 입력
drop table buytbl;
DROP TABLE usertbl;
CREATE TABLE usertbl -- 회원 테이블
( userID CHAR(20) NOT NULL PRIMARY KEY, -- 사용자 아이디(PK)
name VARCHAR(20) 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 -- 회원 가입일
);
CREATE TABLE buytbl -- 회원 구매 테이블(Buy Table의 약자)
( num INT AUTO_INCREMENT NOT NULL PRIMARY KEY, -- 순번(PK)
userID CHAR(20) NOT NULL, -- 아이디(FK)
prodName VARCHAR(20) NOT NULL, -- 물품명
groupName CHAR(4) , -- 분류
price INT NOT NULL, -- 단가
amount SMALLINT NOT NULL, -- 수량
FOREIGN KEY (userID) REFERENCES usertbl(userID)
);
INSERT INTO usertbl VALUES('LSG', '이승기', 1987, '서울', '011', '1111111', 182, '2008-8-8');
INSERT INTO usertbl VALUES('KBS', '김범수', 1979, '경남', '011', '2222222', 173, '2012-4-4');
INSERT INTO usertbl VALUES('KKH', '김경호', 1971, '전남', '019', '3333333', 177, '2007-7-7');
INSERT INTO usertbl VALUES('JYP', '조용필', 1950, '경기', '011', '4444444', 166, '2009-4-4');
INSERT INTO usertbl VALUES('SSK', '성시경', 1979, '서울', NULL , NULL , 186, '2013-12-12');
INSERT INTO usertbl VALUES('LJB', '임재범', 1963, '서울', '016', '6666666', 182, '2009-9-9');
INSERT INTO usertbl VALUES('YJS', '윤종신', 1969, '경남', NULL , NULL , 170, '2005-5-5');
INSERT INTO usertbl VALUES('EJW', '은지원', 1972, '경북', '011', '8888888', 174, '2014-3-3');
INSERT INTO usertbl VALUES('JKW', '조관우', 1965, '경기', '018', '9999999', 172, '2010-10-10');
INSERT INTO usertbl VALUES('BBK', '바비킴', 1973, '서울', '010', '0000000', 176, '2013-5-5');
INSERT INTO usertbl (userID, name, birthyear, addr, mobile1, mobile2, height, mDate) VALUES ('JSR', '정상록', '1998', '서울', '010', '9898989', '180', '2021-03-29');
INSERT INTO buytbl VALUES(NULL, 'KBS', '운동화', NULL , 30, 2);
INSERT INTO buytbl VALUES(NULL, 'KBS', '노트북', '전자', 1000, 1);
INSERT INTO buytbl VALUES(NULL, 'JYP', '모니터', '전자', 200, 1);
INSERT INTO buytbl VALUES(NULL, 'BBK', '모니터', '전자', 200, 5);
INSERT INTO buytbl VALUES(NULL, 'KBS', '청바지', '의류', 50, 3);
INSERT INTO buytbl VALUES(NULL, 'BBK', '메모리', '전자', 80, 10);
INSERT INTO buytbl VALUES(NULL, 'SSK', '책' , '서적', 15, 5);
INSERT INTO buytbl VALUES(NULL, 'EJW', '책' , '서적', 15, 2);
INSERT INTO buytbl VALUES(NULL, 'EJW', '청바지', '의류', 50, 1);
INSERT INTO buytbl VALUES(NULL, 'BBK', '운동화', NULL , 30, 2);
INSERT INTO buytbl VALUES(NULL, 'EJW', '책' , '서적', 15, 1);
INSERT INTO buytbl VALUES(NULL, 'BBK', '운동화', NULL , 30, 2);
INSERT buytbl VALUES(NULL, 'JSR', 'I MAC', '전자', '500000', '1');
SELECT * FROM usertbl;
SELECT * FROM buytbl;
[window]
Ctrl + Shift + Enter : 여러줄실행
Ctrl + Enter : 한줄 실행
Ctrl + W : sql창 종료
[mac]
Command + R : 선택 라인 실행
▶ Auto Increment
컬럼이 AUTO INCREMENT로 설정되어 있는 경우 해당열의 값이 없다고 여기고 INSERT문을 작성한다.
* AUTO INCREMENT의 시작값을 0으로 설정한다.
ALTER TABLE topiktbl AUTO_INCREMENT = 0;
INSERT member VALUES (NULL, '정성훈,' '서울 동대문구');
AUTO INCREMENT 설정시 주의사항
- PRIMARY KEY 또는 UNIQUE로 설정해야한다.
- DataType은 숫자로만 가능하다.
- Data 입력시 NULL로 지정해야한다.
* Error Code : 1075가 생기는 이유는 Primary key가 두개 이상 설정되거나 생성 순서에 문제 있을시 발생한다.
Num에 Unique Key를 적용시켜 단독의 Primary key를 형성 시켜주면 해결된다.
CREATE TABLE studenttbl
(
schoolNum VARCHAR(8) NOT NULL PRIMARY KEY,
name VARCHAR(20) NOT NULL,
major VARCHAR(20) NOT NULL,
num INT AUTO_INCREMENT NOT NULL UNIQUE,
addr VARCHAR(100),
email VARCHAR(30)
);
INSERT INTO studenttbl VALUE ('22032901', '정상록', '컴퓨터공학', NULL, '서울특별시', 'fff@naver.com');
INSERT studenttbl VALUE ('22032902', '정수기', '컴퓨터공학', NULL, '부산광역시', 'sss@naver.com');
INSERT studenttbl VALUE ('22032903', '정산기', '컴퓨터공학', NULL, '광주광역시', 'ggg@naver.com');
SELECT * FROM studenttbl;
UPDATE 문
데이터를 수정하기 위한 명령어
UPDATE 테이블명 SET 열=값 WHERE 조건;
'name'이 정산기인 'addr'을 수정한다.
UPDATE studenttbl SET addr="울산 광역시" WHERE name = "정산기";
'num'가 3인 'email'을 수정한다.
UPDATE studenttbl SET email="zse@naver.com" WHERE num = "3";
DELTE 문
데이터를 삭제하기 위한 명령어
num 3인 컬럼을 지운다.
DELETE FROM studenttlb WHERE num = "3";
데이터를 조회한다는것은 데이터를 보는 관점이 달라진다는 것이고
그것의 끝은 가격비교 사이트다. (다나와)
데이터의 조회
SELECT 문
- 원하는 데이터를 조회하는 명령어
- 가장 많이 이용하며 복잡한 구조를 가지고 있다.
SELET 열이름 FROM 테이블이름 WHERE 조건
SELECT userID FROM usertbl WHERE userID="JYP";
TIME : 명령을 실행한 시간
Action : 실행된 명령
Message : SELECT 문이 조회된 행의 개수
Duration : SQL문이 실행되는 시간
Fetch : 데이터를 가져오는데 걸린 시간
※ Duration이 오래걸리는 경우는 query가 복잡하게 설계된 경우다.
[WHERE where_condition]
[GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
[HAVING where_condition]
[WINDOW window_name AS (window_spec)
[, window_name AS (window_spec)] ...]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
USE 문
Database를 지정하는 명령어
USE 데이터베이스 이름;
USE testdb;
Column의 선택
userID, name Column 조회한다.
SELECT userID, name FROM usertbl;
user 테이블에 id, name을 가지고 새로운 결과 테이블을 만든다.
SELECT id, name AS user_name FROM usertbl;
Where 절
SELECT등의 명령어에 대한 조건을 정의한 식.
원본 Table의 row를 사용하는것.
원본 테이블만 참조가 가능하다.
▶ 예제
userID가 'KBS'인 Column의 모든 정보를 가져와라.
SELECT * FROM usertbl WHERE userID="KBS";
birthYear가 '1972'인 Column의 userID, name의 정보를 가져와라.
SELECT userID, name FROM usertbl WHERE birthYear='1972';
1970년 이후에 출생하고 height이 182 이상인 Column의 모든 정보를 가져와라.
SELECT * FROM usertbl WHERE birthYear >= '1972' AND height >= '182';
height이 180이상 190보다 이하인 Column의 모든 정보를 가져와라.
SELECT * FROM usertbl WHERE height BETWEEN '180' AND '190';
addr이 경기, 경남, 경북인 Column의 모든 정보를 가져와라.
SELECT * FROM usertbl WHERE addr IN ('경기', '경남', '경북');
mobile1이 011인 Column 의 userID를 가져와라.
SELECT userID, name FROM usertbl WHERE mobile1='011';
1970년 이후태어나거나 height이 182인 Column의 userID를 가져와라.
SELECT userID, name FROM usertbl WHERE birthYear >= '1970' OR height = '182';
addr이 서울이고 moblie1이 010, 011인 Column의 모든 정보를 가져와라.
SELECT * FROM usertbl WHERE addr IN ('서울') AND mobile1 IN ('010', '011');
price가 100보다 작은 Column의 prodname을 가져와라.
SELECT prodName FROM buytbl WHERE price < '100';
LIKE 검색 (문자열 검색)
특정 문자 또는 문자열을 포함하고 있는 값을 검색하고 싶을 때 사용한다.
문자 | 의미 |
% | 0개 이상의 문자열과 대치 |
_ | 임의의 한 개의 문자와 대치 |
▷ userID가 _B로 시작하는 Column의 정보를 가져와라.
SELECT * FROM usertbl WHERE userID LIKE ('_B%');
▷ userID가 B로 시작하는 Column의 정보를 가져와라.
SELECT * FROM usertbl WHERE userID LIKE ('B%');
▷ userID가 B로 끝나는 Column의 정보를 가져와라.
SELECT * FROM usertbl WHERE userID LIKE ('%B');
▷ userID에서 문자 J가 들어가는 Column의 정보를 가져와라.
SELECT * FROM usertbl WHERE userID LIKE ('%J%');
※ Column : 핼열의 열
'SQL' 카테고리의 다른 글
[MySQL] JOIN (0) | 2022.04.01 |
---|---|
[MySQL] SubQuery(서브쿼리), ORDER BY, DISTINCT, GROUP BY, HAVING, VIEW (0) | 2022.03.30 |
[MySQL] 설치 (MAC) (0) | 2022.03.28 |
[MySQL] 설치 (Window) (0) | 2022.03.28 |
[MySQL] Datatype (데이터타입), Constraint(제약조건) (0) | 2022.03.28 |