22년 마지막 월요일~~!
DML
Data Manipulation language(데이터 조작 언어)
데이터 추가 / 수정 / 삭제를 담당한다.
- INSERT
- UPDATE
- DELETE
INSERT)
INSERT INTO 테이블명(컬럼명) VALUES(추가 값);
INSERT INTO emp_copy(employee_id, first_name, last_name, salary, hire_date, department_id)
VALUES(1,'사원','이',15000,'2022-12-26',10);
-여러 개의 내용 INSERT
INSERT INTO emp_copy VALUES
(5, "길동", "홍", 7000, '2012-11-26',NULL),
(6, "길동", "홍", NULL, '2012-10-26',NULL),
(7, "길동", "홍", NULL, '2012-09-26',50);
-DATE값 오류. IGNORE사용해주기!
-- 오류
INSERT INTO emp_copy VALUES
(5, "길동", "홍", 7000, '2012',NULL)
년도4자리-월2자리-일2자리 0시:0분:0초 => mariadb 날짜 기본 형식
INSERT ignore INTO emp_copy VALUES
(8, "길동", "홍", 7000, '2012',NULL);
desc emp_copy;
UPDATE)
UPDATE 테이블명 SET 컬럼명=수정내용 [WHERE]
UPDATE menu
SET m_code= m_code-1
WHERE p_name='샌드위치';
=> p_name이 샌드위치인 컬럼을 찾아서 m_code - 1 해라!
DELETE)
DELETE FROM 테이블명 [WHERE 조건]
DELETE FROM EMPLOYEE
WHERE ID = 101;
=> ID가 101인 사람의 데이터를 삭제!!
(*delete는 실행 시 즉각 결과 반영됨. 즉, 실수여도 복구 불가하니 확인 후 신중하게 실행하기!)
ON DELETE CASCADE : 자식테이블도 같이 삭제 가능
테이블 생성 시 사용할 수 있는 문장
- not null: null값 허용 X
- unique: 중복 값 허용 X
- check: 조건 설정 가능
- primary key(기본키)
- foreign key(외래키)
CREATE TABLE orders(
order_code INT(5) PRIMARY KEY,
user_code CHAR(30) UNIQUE,
product_code INT(5) NOT NULL,
buy INT(3) CHECK(buy <=100),
FOREIGN KEY(user_code) REFERENCES customer(user_id)
);
=> FOREIGN KEY(user_code) REFERENCES customer(user_id)
orders user_code는 user_id에 들어있는 값만 가능해~
DDL
Data Definition language(데이터 구조 정의 언어)
- CREATE
- ALTER
- DROP
ALTER) 테이블 수정할 수 있다.
ALTER TABLE 테이블명 ADD a INT; -- 없던 컬럼 추가
ALTER TABLE 테이블명 MODIFY a CHAR(10); -- 있던 컬럼 타입이나 길이 수정
ALTER TABLE 테이블명 DROP a; -- 있던 컬럼 삭제
ALTER TABLE 테이블명 ADD CONSTRAINT; -- 존재하는 컬럼에 제약조건 추가
ALTER TABLE 테이블명 MODIFY CONSTRAINT a CHAR(10); -- 있던 컬럼 제약조건 수정
ALTER TABLE 테이블명 DROP CONSTRAINT; -- 제약조건 삭제
*ALTER와 UPDATE의 차이!
ALTER는 테이블 내용 수정
UPDATE는 데이터 내용 수정
서브쿼리
예시)
SELECT department_id, salary, first_name FROM employees
WHERE department_id=(SELECT department_id FROM employees WHERE first_name LIKE 'kelly');
서브쿼리는 () 괄호 안에 내용을 작성한다.
SELECT절, FROM절, WHERE절에서 사용 가능하다.
SELECT user_code AS '고객아이디',
(SELECT user_name FROM customer WHERE user_id=user_code) AS '고객이름',
(SELECT p_name FROM menu WHERE p_code=product_code) AS '제품이름',
buy AS '구입수량',
(SELECT price FROM menu WHERE p_code=product_code)*buy AS '결제액',
(SELECT money FROM customer WHERE user_id = user_code) AS '잔액'
FROM orders;
customer 테이블의 user_id와 orders 테이블의 user_code는 동일 값이니까
서브쿼리 조건에 넣어서 customer테이블의 이름을 가져왔다.
결제액은 위와 동일하게 menu테이블에서 값을 가져오고 orders테이블의 buy(수량)을 *해준다.
'웅진씽크빅 스타터스 부트캠프 > 강의 내용 정리' 카테고리의 다른 글
23.01.10 JSP(el, jstl, foreach,....) (0) | 2023.01.10 |
---|---|
23.01.09 JSP(액션태그) (0) | 2023.01.09 |
23.01.06 JSP (0) | 2023.01.06 |
23.01.05 Servlet, Cookie, Session (1) | 2023.01.05 |
23.01.04 Servlet (0) | 2023.01.04 |