2022-04-06 Database_3
2022. 4. 7. 00:17ㆍBE/DB
HAVING
HAVING 절은 ...
- 반드시 GROUP BY 절과 같이 작성되어야 한다.
- WHERE 절보다 뒤에 위치한다.
- HAVING <검색조건>의 검색조건에는 집계함수가 와야 한다.
SELECT custid, COUNT(*) AS 도서수량
FROM orderTable
WHERE saleprice >= 8000
GROUP BY custid
HAVING COUNT(*) >= 2;
CREATE
릴레이션 생성하는 SQL 명령어.
CREATE 기본
CREATE TABLE NewBook(
bookid INT,
bookname VARCHAR(20),
publisher VARCHAR(20),
price INT);
기본키 지정법 2가지
CREATE TABLE NewCustomer(
custid INT PRIMARY KEY,
name VARCHAR(40),
address VARCHAR(40),
phone VARCHAR(30)
);
//or
CREATE TABLE NewCustomer(
custid INT ,
name VARCHAR(40),
address VARCHAR(40),
phone VARCHAR(30),
PRIMARY KEY (custid)
);
제약사항 추가
CREATE TABLE NewBook(
bookname VARCHAR(20) NOT NULL,
publisher VARCHAR(20) UNIQUE,
price INT DEFAULT 10000 CHECK(price > 1000),
PRIMARY KEY (bookname, publisher)
);
bookname은 NULL 값을 가질 수 없고, publisher는 같은 값이 있으면 안 된다.
price에 값이 입력되지 않을 경우 기본 값 10000을 저장한다.
또 가격은 최소 1000원 이상으로 한다.
ALTER
ALTER 문은 생성된 릴레이션의 속성(attribute)과 속성에 관한 제약을 변경, 기본키나 외래키를 변경함.
1. NewBook 테이블에 VARCHAR(13)의 자료형을 가진 isbn 속성을 추가.
ALTER TABLE NewBook ADD isbn VARCHAR(13);
2. NewBook 테이블의 isbn 속성의 데이터 타입을 INT타입으로 변경.
ALTER TABLE NewBook MODIFY isbn INT;
//키워드 'TABLE' 근처의 구문이 잘못되었습니다
ALTER TABLE NewBook ALTER COLUMN isbn INT;
//명령이 완료되었습니다.
강의 시간에 사용하는 MSSQL 기준으로 MODIFY 명령어는 작동하지 않는다.
3. NewBook 테이블의 bookid 속성을 기본키를 변경.
ALTER TABLE NewBook ADD PRIMARY KEY(bookid);
//테이블 'NewBook'의 Null 허용 열에 PRIMARY KEY 제약 조건을 정의할 수 없습니다.
//NOT NULL인 열에서 실행한다.
4. NewBook 테이블의 isbn 속성의 NOT NULL 제약조건을 적용.
ALTER TABLE NewBook MODIFY isbn INT NOT NULL;
//'MODIFY' 근처의 구문이 잘못되었습니다.
ALTER TABLE NewBook ALTER COLUMN isbn INT NOT NULL;
// 명령이 완료되었습니다.
DROP
테이블을 삭제하는 명령.
DROP TABLE NewBook, NewCustomer;
INSERT
릴레이션에 새로운 투플을 삽입하는 명령
INSERT INTO bookTable(bookid, bookname, publisher, price)
VALUES (12,'스포츠 의학1', '한솔의학서적', 9000);
INSERT INTO share(shareid, custid, name, period)
VALUES (1, 3, 'kim', 12)
,(2, 1, 'tom', 24)
,(3, 4, 'uzi', 6);
여러 투플들을 동시에 삽입하는 방법
UPDATE
특정 속성 값을 수정하는 명령.
UPDATE customerTable
SET address = '대한민국 부산'
WHERE custid = 5;
UPDATE customerTable
SET address = (SELECT adress FROM customerTable WHERE name ='김연아')
WHERE name = '박세리';
DELETE
릴레이션에 있는 기존 투플을 삭제.
DELETE FROM customerTable
WHERE custid=5;
customerTable에서 고객번호 5인 고객을 삭제
DELETE FROM customerTable;
customerTable에서 모든 투플 삭제.
'BE > DB' 카테고리의 다른 글
[MySQL] Sever, Monitor, Workbench (0) | 2022.04.30 |
---|---|
[DB] DML (0) | 2022.04.07 |
[MySQL] 스키마 & 테이블 (0) | 2022.04.05 |
2022-03-31 DataBase_2 (0) | 2022.03.31 |
[MySQL] 설치 및 접속 (0) | 2022.03.26 |