비전공개미 개발노트
MySQL 1일차 - DDL(CREATE, DROP, ALTER) / DML(SELECT, INSERT, UPDATE, DELETE) 본문
MySQL 1일차 - DDL(CREATE, DROP, ALTER) / DML(SELECT, INSERT, UPDATE, DELETE)
비전공개미 2022. 9. 5. 17:44DBMS = 비트전체 
클라우드 기반 빅데이터 서비스 개발자과정 = database = employees 
 ㄴ 회원table(부서+직급+급여+출입게이트), 제품table, 주문정보, = 테이블 = table 
회원정보table( 5열필드 * 2행레코드 
    주번 jumin             number(13)숫자 primary key(pk유일한키),  
    이름name              varchar(20)문자,  
    입사년도hiredate     date날짜, 
    성별gender            bool불,  
    전화번호phone        varchar(20)문자, 
    급여pay                 number(7, 2) 
); 
열 = 컬럼 = 필드     이름열   입사연월      성별열     핸드폰열컬럼       급여컬럼 
901225-1234567   김패스   2020/01/03   True남    010-9000-9999         79 
860915-2456789   이합격   2019/05/30   False여   010-7000-7777         81 
웹서비스 기반 자바프레임워크 서비스 개발자과정 = database = kakao 
219페이지 
SQL언어구분 
ㄴDDL, DML, DCL 
DDL : Data Define Language(create, alter, drop) 
DML : Data Manipulation Language(insert, select, delete, update) 
DCL : Data Controll Language(grant, revoke) 
CREATE DATABASES naver;
SHOW DATABASES;
USE naver;
SELECT DATABASE();
SHOW TABLES;
# 주석테이블 생성
DROP TABLE guest;
CREATE TABLE guest (
    sabun INT PRIMARY KEY,
    name VARCHAR(10) NOT NULL,
    title VARCHAR(20) NOT NULL,
    wdate DATE NOT NULL,
    pay INT NOT NULL
);
COMMIT;
SHOW TABLES;
DESC guest;
#DML언어 - 신규등록 INSERT 
#INSERT INTO 테이블(필드명) VALUES (필드값);
INSERT INTO guest(sabun, name, title, wdate, pay) VALUES (7700, 'kim', 'monday', now(), 45);
INSERT INTO guest VALUES (9900, 'gugu', 'book', now(), 21);
INSERT INTO guest VALUES (1100, 'one', 'note', now(), 51);
INSERT INTO guest VALUES (2200, 'two', 'rain', now(), 91);
INSERT INTO guest VALUES (3300, 'park', 'book', now(), 31);
INSERT INTO guest VALUES (4400, 'lee', 'coffee', now(), 81);
COMMIT;
SELECT * FROM guest ORDER BY sabun;
UPDATE guest SET title='summer' WHERE sabun=3300;
SELECT * FROM guest ORDER BY sabun;
#에러발생 227페이지참고 문자데이터는 따옴표로 values()로 입력하기!!
INSERT INTO guest VALUES(2200, 'bit', 'snow', now(), 91);  
INSERT INTO guest VALUE(3355, 'bit', 'snow', now(), 91);
INSERT INTO guest VALUES(3377, "hong", "dong", now(), 91);
INSERT INTO guest VALUES(3399, 'bit', 'snow', now, 91);
#DML언어 - 데이터추출 SELECT
SELECT 필드명~~~ FROM 테이블명 ORDER BY 필드명;
SELECT sabun, name, title, wdate, pay FROM guest;
system cls;
SELECT * FROM guest;
SELECT * FROM guest ORDER BY sabun ASC;  -- asc생략해도 기본값 asc
SELECT * FROM guest ORDER BY name ASC;
SELECT * FROM guest ORDER BY sabun DESC;
SELECT * FROM guest ORDER BY pay DESC;
system cls;
SELECT sabun, name, wdate FROM guest;
SELECT * FROM guest;
#DML언어 - 데이터수정 UPDATE 페이지 224 참고
<주의>
UPDATE 테이블명 SET 필드명1=변경값, ~~; #모든데이터에 적용
rollback;
<확인>
조건절 WHERE 적용
UPDATE 테이블명 SET 필드명1=변경값, ~~ WHERE 필드명=필드값;
SELECT * FROM guest;
UPDATE guest SET pay = pay*1.2 ;  -- 전체적용
SELECT * FROM guest;
UPDATE guest SET pay = pay-100, name='aws' WHERE sabun=2200;
SELECT * FROM guest;
#guest테이블구조 + 데이터 복사본 만들기
CREATE table guestCOPY as SELECT * FROM guest;
SELECT * FROM guestCOPY;
#DML언어 - 데이터삭제 DELETE
DELETE FROM 테이블명 WHERE 필드명=필드값 ;
DELETE FROM guest WHERE pay < 40;
select * FROM guest;
DELETE * from guest; --- 문법에러
DELETE from guest; --- 모든데이터삭제 주의
#테이블구조 변경 DDL언어 - DROP, CREATE, ALTER 구조 및 타입변경
mysql> DESC guest;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| sabun | int         | NO   | PRI | NULL    |       |
| name  | varchar(10) | NO   |     | NULL    |       |
| title | varchar(20) | NO   |     | NULL    |       |
| wdate | date        | YES  |     | NULL    |       |
| pay   | int         | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
ALTER TABLE 테이블명 DROP 필드;
ALTER TABLE guest DROP title;  --  title필드를 삭제한다
DESC guest;
ALTER TABLE 테이블명 change 필드 변경할필드;
ALTER TABLE guest CHANGE pay hit INT(3);  -- pay필드명을 hit으로 바꾸고 INT(3)으로 CHANGE한다
SELECT * FROM guest;
ALTER TABLE 테이블명 ADD 필드 타입;
ALTER TABLE guest ADD gender bool DEFAULT true;  --  gender필드명을 추가한다
SELECT * FROM guest;
DESC guest;
ALTER TABLE 테이블명 MODIFY 필드 변경할필드;
ALTER TABLE guest MODIFY name VARCHAR(16);  --  name필드의 타입을 VARCHAR(16)으로 변경한다
DESC guest;
ALTER TABLE 테이블명 RENAME 변경테이블명;
ALTER TABLE guest RENAME board;  --  guest라는 테이블명을 board로 이름을 변경한다
SHOW TABLES;
DESC board;
SELECT * FROM board;
# 문제1] board테이블에 데이터 2건 입력
  INSERT INTO board VALUES (5567, 'aaa', now(), 7, false);
  INSERT INTO board VALUES (5569, 'bbb', now(), 5, 0);  --  false = 0 / true = 1
  
# 문제2] board테이블에 sabun필드 정순으로 sort
  SELECT * FROM board ORDER BY sabun ASC; -- asc생략가능
  
# 문제3] board테이블에 sabun필드의 3300 조회
  SELECT * FROM board WHERE sabun=3300;
  
# 문제4] board테이블에 gender필드 삭제
  board(sabun, name, wdate, hit) 존재
  ALTER TABLE board DROP gender;
# 문제5] 아래데이터 추가
  INSERT INTO board VALUES (3321, 'kb', now(), 12);
  INSERT INTO board VALUES (2234, 'bc', now(), 95);
  INSERT INTO board VALUES (7711, 'ck', now(), 30);
  INSERT INTO board VALUES (7722, 'cs', now(), 41);
# 문제6] board테이블에 name필드에서 ck데이터 조회
  SELECT * FROM board WHERE name='ck';
# 문제7] board테이블에 name필드에서 b글자가 하나라도 포함된 데이터 조회
  SELECT * FROM board WHERE name LIKE '%b%';
# 문제8] 테이블을 생성해보자
# create table student(필드구성 3개이상);
CREATE TABLE student (
    num INT PRIMARY KEY,
    name VARCHAR(20) NOT NULL,
    phone VARCHAR(13) NOT NULL,
    age INT NOT NULL,
    height INT NOT NULL
);
# create table person(필드구성 3개이상);
CREATE TABLE person (
    no INT PRIMARY KEY,
    name VARCHAR(20) NOT NULL,
    weight INT NOT NULL,
    height INT NOT NULL,
    age INT NOT NULL
);
'데이터베이스 > MySQL' 카테고리의 다른 글
| MySQL 4일차 - 조인(JOIN), 서브쿼리, 프로시저(Stored Procedure) (2) | 2022.09.13 | 
|---|---|
| MySQL 3일차 - 문제풀이 (0) | 2022.09.07 | 
| MySQL 3일차 - 내장함수, 내부조인, 외부조인, 셀프조인, cross조인, natural조인 (0) | 2022.09.07 | 
| MySQL 2일차 - 문제풀이 (0) | 2022.09.06 | 
| MySQL 2일차 - 테이블생성, 내부함수, WHERE / GROUP BY / HAVING / ORDER BY / LIMIT, View테이블, JOIN(조인) (0) | 2022.09.06 |