1. mySQL 주석처리
-- 한줄주석
#한줄주석처리
/* 여러줄주석
*/
2. mySQL 기본명령어
show databases; -- 생성된 데이터베이스 확인
use 테이터베이스명; -- 데이터베이스 선택
desc 테이블명; -- 테이블 속성 확인
create table 테이블명 (칼럼명 데이터타입 null/null key설정); -- 테이블생성
- char : 고정형 문자값 저장 타입
- varchar : 가변형 문자값 저장 타입
3. 기본적인 DB 특징
데이터정의어(DDL)
CREATE - 스키마(database), table
DROP(삭제)- table, index, view, 스키마(database)
ALTER(수정) - table
데이어조작어(DML)
INSERT - 삽입
SELECT - 검색
UPDATE - 수정
DELETE - 삭제
데이터제어어(DCL)
GRANT - 권한부여
REVOKE -권한회수
데이터타입
. 정수 - TINYINT : -128 ~ 127
- SMALLINT : -32768~32767
- MEDIUMINT
- INT : -2147483648 ~ 2147483647
- BIGINT
. 고정소수형 - DECIMAL : 십진수표현 (DECIMAL(5,2)) -> 99999.99
. 부동소수형 =FLOAT, DOUBLE
. 문자 - CHAR(N) 길이 N인 고정된 문자열
- VARCHAR(N) : 최대 N개로 구성괸 가변길이 문자열
- TEXT : 길이가 긴 가변갈이 문자열
- ENUM : 유한개의 문아자열 집합중 하나의값 예)enum('사원', 대리, 과장)
. 날짜/시간
- DATE : 'YYYY-MM-DD'
- YEAR : 'YYYY'
- TIME : '00:00:00'
- TIMESTAMP : 'YYYY-MM-DD 00:00:00'
. 바이너리(이진수) - TINYBLOB, BLOB(64kb), MEDIUMBLOB(16MB), LONBLOB(4GB)
제약조건
.primary key 절
- 하나 이상의 칼럼을 기본키로 설정할 수 있다.
- NULL이 될수 없다.
- 이미 존재하는 키를 갖는 레코드를 신규 생성하면 거부된다(키중복불가).
. NOT NULL절
- 입력되지않는 레코드가 생성되면 거부된다.
. UNIQUE 절
- 레코드속의 unique라고 지정한 컬럼의 값은 유일해야한다.
. AUTO INCREMENT 절
- 지정된 컬럼에 값을 입력하지 않아도 자동으로 1씩 증가되어 자동 입력된다.
. FOREIGN KEY절
. CHECK - check(잔액>0) 특정조건을 준수하지 않으면 거절
테이블 생성 구조
create table 테이블 이름 (
컬럼명 데이터타입 [not null | null] [default 기본값],
.......,
[primary key(컬럼명)],
[unique(컬럼명)],
[foreign key(외래키) references 참조할테이블명(참조할칼럼)]
);
.alter - 데이터베이스와 테이블의 내용을 수정할 수 있다.
ALTER TABLE 테이블 이름
ADD COLUMN 컬럼명 데이터타입 [NOT NULL | NULL] [DEFAULT 기본값],
DROP COLUMN 컬럼명,
CHANGE COLUMN 수정전 컬럼 수정후 컬럼 데이터타입 [NOT NULL | NULL] [DEFAULT 기본값]
실습(alter문)
강의테이블에서 이수학점칼럼의 이름을 학점으로 변경해보세요.
alter table 강의 change column 이수학점 학점 char(4);
강의테이블에서 수정했던 학점 칼럼을 삭제하시오
alter table 강의 drop column 학점;
학생테이블에서 전화번호를 연락처로 변경하시오
alter table 학생 change column 전화번호 연락처 varchar(20);
학생테이블에서 취득자격증 칼럼을 20글자크기의 가변데이터 타입으로 추가해보시오
alter table 학생 add column 취득자격증 varchar(20) null default 3;
학생테이블에서 학생이름 칼럼이 강의테이블의 강의번호를 참조하도록 설정하시오
alter table 학생 add foreign key(학생이름) references 강의(강의번호);
실습(create문) - 테이블 생성
- 강의1 테이블 생성
- 모든 컬럼에 기본적으로 null 허용하지않습니다.
- 컬럼은 강의번호,강의이름, 강의시간, 인원제한, 교수번호로 구성
- 강의번호 기본키이고 자동으로 1씩 증가 됩니다.
- 강의이름은 반드시 있어야하고 고유한 이름이어야합니다.
- 인원제한은 50이라는 기본값을 갖고 정수입니다.
- 교수번호는 myschool데이터베이스에 있는 교수 테이블의 교수번호를 참조하고 길이가 3인 고정 문자열입니다.
- 강의이름과 강의시간은 최대 20크기의 문자열로 구성됩니다.
create table 강의1(
강의번호 int(5) auto_increment primary key, -- 강의번호가 기본키이고, 자동으로 번호가 1씩증가
강의이름 varchar(20) not null unique,
강의시간 varchar(20) not null,
인원제한 int(10) default 50,
교수번호 char(5) not null
);
desc 강의1; -- 테이블 속성 확인
인덱스(Index)
- 데이터의 응답시간을 단축하기 위해 인덱스를 제공한다.
- 생성1 - 자동지점
. primary key, foreign key, unique일 경우 내부적으로 자동생성되어있다.3 - 생성2 - 명시적지점 3
. create index 인덱스이름 on 테이블 (컬럼명, 컬럼명,,) - 삭제 : drop index 인덱스이름 on 테이블;
인덱스(Index) 실습
- 강의1 테이블에서 강의시간, 인원제한 칼럼을 볼수있는 '강의시간조회' 이름의 인덱스 생성
create index 강의시간조회 on 강의1(강의시간,인원제한);
- 강의1 인덱스 조회
show index from 강의1;
- 강의시간조회 인덱스 삭제
drop index 강의시간조회 on 강의1;
insert문(입력)
INSERT INTO 테이블명(칼럼명, 칼럼명) values(값,값,값,,,"값,값) //칼럼명과 값이 대칭.
update문(수정)
UPDATE 테이블 SET 컬럼명 = 데이터, 컬럼명 = 데이터,,,,WHERE 조건
update문 실습
학생번호 201434207 학생의 주소를 영등포구로 변경.
update 학생 set 주소 = '영등포구' where 학생번호 = '201434027';
통계학과 정의영을 남자에서 여자로 변경.
update 학생 set 성별 = '여자' where 학생이름 = '정의영';
컴퓨터학과 강원상 부교수의 전화번호를 학생 최성우님의 연락처로 변경
update 교수 set 전화번호 = (select 전화번호 from 학생 where 학생이름='최성우') where 교수이름 = '김원상';
delete문(삭제)
- 구조
DELETE FROM 테이블 where조건
- *where절을 사용하지않으면 모든 레코드가 삭제된다, 다만 이러더라도 테이블의 구조는 그대로 보존된다.
delete문 실습
수강신청 테이블에서 2014년 2월 28일 이후 레코드를 삭제하시오
delete from 수강신청 where 신청시각 > '2024-03-10 00:00:00';
수강신청 테이블에서 MN09인 강의번호를 삭제하시오
delete from 수강신청 where 강의번호='MN09';
testdb로 가서 myschool의 강의 테이블에서 강의번호가 MN09인 레코드를 삭제하시오
delete from myschool.수강신청 where myschool.강의번호='MN09';
'DBMS > mysql' 카테고리의 다른 글
mysql - 기본 문법 정리(SELECT, 내부함수) (1) | 2023.05.07 |
---|---|
mysql 기본문법 정리 - 트리거 (0) | 2023.05.05 |
mysql 기본문법정리 - 저장프로그램(procedure, 함수) (0) | 2023.05.03 |
mysql 기본 문법정리 - view (0) | 2023.05.03 |
댓글