2019-07-08
Subsets of SQL
1. DML : Data Manipulation Language, 데이터 조작문
2. TCL : Transaction Control Language, 트랜잭션 관리문
실습(1) : 새 사용자를 만들어 1,2 에 대해 실습해보자
먼저 시스템 계정으로 접속해, 다른 사용자 탭을 우클릭해서 사용자 생성
새로 생성한 사용자에 시스템 계정의 권한으로 몇 가지 권한을 부여해주도록 합니다. 그 옵션들은 다음과 같습니다. 여기서 권한 선택을 제대로 하지 못하면 테이블 생성 등의 작업이 잘 되지 않을 수 있습니다.
- CREATE SESSION
- CREATE TABLE
- UNLIMITED TABLESPACE
- SELECT ANY TABLE
- UPDATE ANY TABLE
- INSERT ANY TABLE
- DROP ANY TABLE
권한 부여가 다 되었다면 테이블을 생성하자. 고급 옵션을 체크하고 작업하도록 하자.
3개의 테이블(CUSTOMER, COMMODITY, ORDERS)을 생성할 것이고, 처음에 했을 때와는 다르게 UI상에서 테이블 생성 메뉴를 선택해 생성하도록 합시다. 이게 더 편합니다.
1) CUSTOMER TABLE
CUSTOMER TABLE 을 생성하고 데이터 유형과 크기는 위와 같이 한다. 그리고 제약조건에서 기본키로 CUSTOMER_ID를 지정한다. 기본키 설명은 이 다다음 사진 참고
해당 SQL문 :
CREATE TABLE customers(
customer_id VARCHAR2(4),
customer_name VARCHAR2(20),
address VARCHAR2(60),
contact VARCHAR2(20),
CONSTRAINT cust_id_pk PRIMARY KEY(customer_id));
2) COMMODITIES TABLE
해당 SQL문 :
CREATE TABLE commodities(
commodity_id VARCHAR2(4),
commodity_name VARCHAR2(20),
unit_price NUMBER(8,2) NOT NULL,
CONSTRAINT comm_id_pk PRIMARY KEY(commodity_id));
3) ORDERS
해당 SQL문 :
CREATE TABLE orders(
order_id VARCHAR2(4),
customer_id VARCHAR2(4),
commodity_id VARCHAR2(4),
units NUMBER(8,2) NOT NULL,
total_cost NUMBER(8,2) NOT NULL,
CONSTRAINT ordr_id_pk PRIMARY KEY(order_id),
CONSTRAINT ordr_cust_fk FOREIGN KEY (customer_id)REFERENCES customers(customer_id),
CONSTRAINT ordr_comm_fk FOREIGN KEY (commodity_id)REFERENCES commodities(commodity_id),
CONSTRAINT check_unit CHECK(units > 0),
CONSTRAINT check_totl CHECK(total_cost > 0));
테이블을 생성하고 기본키 하나와 외래키 2개를 설정합니다. 그리고 검사 조건까지 설정합니다
테이블 생성이 완료 되었다면, 데이터를 삽입해보자.
INSERT INTO customers VALUES ('C001', 'BDAVIS', 'Boston', '650.551.4876');
INSERT INTO customers VALUES ('C002', 'SSTEPHEN', 'ST.Louis', '650.501.9321');
INSERT INTO customers VALUES ('C003', 'DCARTER', 'California', '650.507.6632');
INSERT INTO commodities VALUES ('M001', 'DVD Player', 109);
INSERT INTO commodities VALUES ('M002', 'Cereal', 03);
INSERT INTO commodities VALUES ('M003', 'Scrabble', 29);
INSERT INTO orders VALUES ('R001', 'C003', 'M002', 50, 150);
INSERT INTO orders VALUES ('R002', 'C001', 'M003', 30, 87);
INSERT INTO orders VALUES ('R003', 'C003', 'M001', 6, 654);
의 데이터를 developer를 이용해 다음과 같이 넣으면 된다.
UPDATE COMMODITIES SET UNIT_PRICE = 129
WHERE COMMODITY_NAME = 'DVD Player';
DELETE FROM ORDERS WHERE ORDER_ID = 'R001';
ROLLBACK;
DELETE FROM ORDERS WHERE ORDER_ID = 'R001';
CREATE TABLE A_ORDER AS SELECT * FROM ORDERS;
ROLLBACK;
DROP TABLE COMMODITIES CASCADE CONSTRAINTS;
REVOKE CREATE SESSION FROM online_shoppe;
/* DML */
create table a_enrol as
select * from enrol where stu_no < 20150000;
--108, 20151062, 92 입력
--109, 20152088, 85 입력
--110, 20152088 입력
--111, 20153075, null 입력
insert into a_enrol values (108, 20151062, 92);
insert into a_enrol values (109, 20152088, 85);
insert into a_enrol (sub_no, stu_no) values (110, 20152088);
insert into a_enrol values (111, 20153075, null);
--복수행 삽입 Example
--Enrol table에서 stu_no 2015로 시작되는 학생을 선택하여 a_enrol에 삽입하시요
insert into a_enrol (select * from enrol where stu_no like '2015%');
--Update Example
--점수를 5점 높이시요
update a_enrol set enr_grade = enr_grade + 5;
--Sub_no가 101인 학생들의 점수를 5점 높이시요
update a_enrol set enr_grade = enr_grade + 10 where sub_no = 101;
--sub_name이 시스템분석설계인 학생들의 점수를 10점 올리시요
update a_enrol set enr_grade = enr_grade + 10
where sub_no = (select sub_no from subject where sub_name = '시스템분석설계');
'SQL' 카테고리의 다른 글
Intro to Database (10) : View, Top, Index, Sequence (0) | 2019.07.10 |
---|---|
Intro to Database (9) : Subset of SQL(SQL 하위 범주) (0) | 2019.07.09 |
Intro to Database (7) : Oracle SQL developer 5 - 집합 연산 (0) | 2019.07.08 |
Intro to Database (6) : Oracle SQL developer 4 - 함수(2) (2) | 2019.07.05 |
Intro to Database (5) : Oracle SQL developer 3 - 함수 (0) | 2019.07.03 |
댓글