웅진씽크빅 스타터스 부트캠프/강의 내용 정리

22.12.26 SQL-DML 학습

할루솔이 2022. 12. 26. 20:31
반응형

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 : 자식테이블도 같이 삭제 가능

 

 

테이블 생성 시 사용할 수 있는 문장
  1. not null: null값 허용 X
  2. unique: 중복 값 허용 X
  3. check: 조건 설정 가능
  4. primary key(기본키)
  5. 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(데이터 구조 정의 언어)

  1. CREATE
  2. ALTER
  3. 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