개발자 끄적끄적
테이블 관련 본문
<테이블 생성>
- CREATE TABLE 테이블명(컬럼명1 타입(크기) 제약조건, ...)
ex) 학번(mid), 성명(irum), 연락처(phone)을 갖는 student테이블 생성
CREATE TABLE student(
mid varchar(10),-> 최대 문자수 : 10
irum varchar(50), -> 최대 문자수: 20
phone varchar(20) -> 최대 문자수 : 20
);
ex) data가 없을 때 테이블 생성
create table student(
id varchar(10),
mName varchar(20),
pwd varchar(10),
address varchar(50),
phone varchar(20)
);
<테이블 제거>
- DROP TABLE 테이블명;
<테이블 복사>
- CREATE TABLE 테이블명 AS SELECT ... ;
<테이블명 변경>
- RENAME TABLE 원본 TO 변경
<테이블 구조 변경>
1. 컬럼 추가
ALTER TABLE 테이블명 ADD[COLUMN] 컬럼명 컬럼유형[제약조건];
2. 컬럼 삭제
ALTER TABLE 테이블명 DROP[COLUMN] 필드명(컬럼명);
3. 컬럼유형 변경
ALTER TABLE 테이블명 MODIFY[COLUMN] 필드명 새데이터형;
4. 필드명 수정
ALTER TABLE 테이블명 CHANGE[COLUMN] 이전 필드명 수정필드명 데이터 유형[제약조건];
ex)classicmodels의 customers에서 state가 CA이고
creditlimit가 50000이상인 고객의 고객번호, 고객명,
creditlimit를 cus테이블에 저장
CREATE TABLE cus AS
SELECT customerNumber, customerName, creditLimit
FROM classicmodels.customers
WHERE state = 'CA' AND WHERE creditLimit >= 50000;
SELECT * FROM cus;
ex)student 테이블에 학년(grade int)를 추가
ALTER TABLE student ADD grade int;
DESC student;
ex)student 테이블에 성적(score int)를 추가
ALTER TABLE student ADD score int;
DESC student;
ex)학생들의 성적을 저장하는 테이블 생성(score)
컬럼:serial int, id varchar(10),
subject varchar(20), point int
CREATE TABLE score(
serial int,
id varchar(10),
subject varchar(20),
point int
);
DESC score;
DESC student;
ex)studetn 테이블에서 score 컬럼을 제거
ALTER TABLE student DROP COLUMN score;
insert(C)
insert into 테이블명( [컬럼명1, 컬럼명2, ... ] )
values(값1, 값2, ... )
-> 컬럼명의 순서와 갯수가 반드시 values안에 있는 값들과 일치해야 한다
즉, 컬럼명1의 값은 값1이고 컬럼명2의 값은 값2이다
ex)student 테이블에 아이디와 이름, 학년을 입력
insert into student(id, mName, grade)
values('a003', 'lee', '1');
select * from student;
ex)student 테이블에 아이와 이름을 입력
insert into student(id, mName) values('a002', 'kim');
select * from student;
ex)student 테이블에 임의의 학생 정보 중 id만을 입력
insert into student(id) values('a001');
select * from student;
-> 만약, 컬럼명들을 생략한 경우에는 values안에 있는 값들의 순서와
갯수가 테이블 구조와 일치해야 한다
ex)student 테이블에 컬럼명을 명시하지 않고 모든 데이터를 입력
INSERT INTO student VALUES('a004', 'park', '1111', '대한민국', '010-1234-1234', '1');
SELECT * FROM student;
ex)score 테이블에 임의의 자료를 5건 입력하시오
DESC score;
INSERT INTO score(serial, id, subject, point) values(1, 'a001', '국어', 90);
INSERT INTO score(serial, id, subject, point) values(2, 'a001', '수학', 100);
INSERT INTO score(serial, id, subject, point) values(3, 'a001', '영어', 100);
INSERT INTO score(serial, id, subject, point) values(4, 'a001', '국사', 100);
INSERT INTO score(serial, id, subject, point) values(5, 'a001', '국어', 100);
SELECT * FROM score;
SELECT * FROM student;
update(U)
update 테이블명
set 컬럼명 = 수정데이터, 컬럼명2 = 수정데이터2, ...
[where 조건]
*where절은 생략할 수 있지만, 생략되면 모든 데이터가
set절에 기술된 내용을 수정된다
ex)a001 학생의 이름을 'hong'으로 수정 하시오
UPDATE student
set mName = 'hong'
WHERE id='a001';
SELECT * FROM student;
ex)모든 학생의 암호와 학년을 1로 수정하시오
UPDATE student set grade=1, pwd='1';
SELECT * FROM student;
ex)1학년 kim의 주소를 '봉천역'으로 수정하시오
UPDATE student set address-'봉천역'
WHERE grade='1' AND mName='kim';
SELECT * FROM student;
ex)학번이 a003인 학생의 연락처를 '010-1111-1111로 수정
update student set phone='010-1111-1111' where id='a003';
select * from student;
ex)serial번호가 1인 자료의 point를 90으로 수정
update score set point=90 where serial=1;
select * from score;
delet(D)
delete from 테이블명
[where 조건]
*where절을 생략하면 모든 데이터를 삭제하고, 테이블 구조와 저장 공간은
그대로 유지된다
*truncate table 테이블명 : 테이블 내에 저장되었던 모든 데이터와
저장공간도 삭제된다(테이블의 구조만 남는다)
*drop table 테이블명 : 테이블의 데이터, 저장공간, 테이블 구조 모두가 삭제
ex)주소지가 '봉천역'인 학생의 정보를 삭제 하시오.
DELETE FROM student WHERE address='봉천역';
SELECT * FROM student;
ex)
DELETE FROM emp; ->자료만 삭제
truncate TABLE emp; ->자료+공간 삭제
DROP TABLE emp; ->자료+공간+구조 삭제
ex)1학년 학생 정보 모두를 삭제
DELETE FROM student WHERE grade='1';
SELECT * FROM student;
ex)score 테이블의 모든 데이터 삭제
DELETE FROM score;
SELECT * FROM score;
'MySQL' 카테고리의 다른 글
무결성 제약 조건 (0) | 2023.03.08 |
---|---|
function (0) | 2023.03.08 |
sub query, index, view, 내장함수 (0) | 2023.03.08 |