20.03 ~ 20.08 국비교육/DB (MySQL, Oracle)

기초 SQL

찹키리 2020. 4. 6. 17:53

SQL: Structure Query Language(구조 질의 문) 

SQL ---> db에서 컴파일(인간이 사용하는 명령문을 db가 알아들 을 수 있게 변환) ---> 실행 ---> 결과 출력

 

 

DBMS(Data Base Management System, db서버 + 클라이언트 툴) ex. MySQL, 오라클 등

: db들 - 테이블s - 레코드s(한 줄이 하나의 레코드) - 컬럼s - 도메인s(데이터)

 


클라이언트 툴: 자바 유저를 통해 접속하는 것과 같은 도구

 

 

 

메모장에 MySQL 경로와 유저 이름, 패스워드를 작성해 bat파일로 저장한다.(root 접속 파일도 별도로 만들었다)

 

 

 

 

mysqld.exe. 파일을 실행한 상태에서 bat파일을 실행해 패스워드를 입력하면, javauser계정에 정상적으로 접속된다.

 

 

 

 


1. 테이블 생성

create table 테이블명 (
 컬럼명 데이터형 [제약조건들: 있을 수도, 없을 수도, 여러 개일 수도, ... 요 자리를 아주 정교하게 세팅하면 전문가] ,
 컬럼명2 데이터형 [제약조건들] ,
 컬럼명3 데이터형 [제약조건들](맨 마지막은
쉼표 생략)
) engine=innodb default charset=euckr(mysql에서만 필요한 구문) ;

 

(삭제명령: drop table 테이블명 ;)

 

 

확인하기: desc extable ;(생성된 테이블 구조보기)

 

 

 

 

 

 


*not null: null을 불허(반드시 데이터가 입력되어야 한다)
*null: null을 허용


*auto_increment: 값이 자동으로 증가한다(mysql에서만, 오라클에서는 사용x)
->값을 자동으로 입력해주기 때문에 처음에 null값을 입력


*primary key: 기본키, 행을 구별하는 식별자 컬럼(유일성 + not null)


*varchar(20): 가변cd 문자열(입력되는 데이터의 크기가 가변) 20바이트 이내
*char(15): 고정 문자열(입력 데이터의 길이가 일정한 경우)

-> 실무적으로는 한두 문자 정도의 차이는 그냥 고정 문자열 사용(문자열 크기의 변화가 적을 때 사용)

*text: 장문 데이터


*tinyint: 1바이트 짜리 정수(잘 사용하지 않음)
*int: 정수(4바이트)


*datetime: 년월일(date) + 시분초(time)

-> 날짜입력 데이터

 

 

 

 


2. 데이터 입력문

 

insert into 테이블명 (컬럼1, 컬럼2, ...) values (값1, 값2, ...) ;

: insert문. 문자열은 반드시 '(홑따옴표)'로 감싼다.

 


1)모든 컬럼에 입력

: 값의 나열 순서는 테이블 구조 순서와 같다.

 

insert into 테이블 values (값1,값2,...)

 

 

 

 

insert를 세 번 실행해 레코드가 세 개 삽입되었다.

*now(): 현재시간

 



2)컬럼을 지정해서 입력

: 컬럼의 순서와 삽입되는 값의 순서가 일치


insert into 테이블 (컬럼1,컬럼2,...) values (값1,값2,...)

 

 

 

 

주의★ 컬럼 지정시 not null속성을 가진 컬럼은 생략이 불가하다(idx, name, phone -> 반드시 지정)

 

*지정하지 않은 컬럼은 null값이 입력된다.

 

 

 



3. 데이터 선택문

 

select 컬럼,컬럼,... from 테이블 where 조건절 ; 

: select문(select 컬럼, from 테이블, where 행)

 

 

1)모든 컬럼 모든 행 선택하기(주로 데이터 확인 시)

select * from 테이블 ;

 



2)컬럼 선택, 모든 행(잘 사용하지 않음)

select 컬럼,컬럼,... from 테이블 ;

 



<예제> extable에서 이름 나이 전화번호를 출력하세요.

 

 

 

3)컬럼 선택, 행 선택(가장 많이 사용)

select 컬럼,컬럼,... from 테이블 where 조건절 ;

 

 

 

<예제> extable에서 이름이 홍길순인 사람의 나이와 생일을 출력하세요.

 




<예제> extable에서 식별자가 3번에서 4번인 사람의 전화번호와 식별번호를 출력하세요.

 

이 경우 3가지 방법으로 select문을 작성할 수 있다.

> select phone,idx from extable where idx between 3 and 4 ;

> select phone,idx from extable where idx>=3 and idx<=4 ; #연속, 교집합

> select phone,idx from extable where idx=3 or idx=4 ; #엄밀히 따지면 의미는 다르다, 불연속, 합집합

 



4. 데이터 수정문

 

update 테이블명 set 컬럼=새값,컬럼=새값,... where 행조건절 ; 

: update문. where절이 없으면 모든 행이 바뀌므로 반드시 조건절은 두 번이상 확인한다★

 

 


<예제> extable에서 나이가 null 행은 18로 수정하세요.

 


*주의* null은 유효하지 않은 데이터를 의미하므로, 연산이 불가하다. 즉, null값에는 연산자 기호를 사용할 수 없기 때문에 상태를 나타내는 is연산자를 사용한다.
update extable set age = 18 where age == null ; --->X

update extable set age = 18 where age is null ; --->O

 

 

 

<예제> extable에서 소개가 null 행은 '무궁화 꽃이 피었습니다'로 수정하세요.

 

 

 



5. 데이터 삭제문

 

delete from 테이블명 where 조건절 ; 

: delete문. where절이 없으면 모든 행이 삭제되므로 반드시 조건절은 두 번이상 확인한다★

 

 

 

<예제> 3번 데이터를 삭제하세요.

 

 

 

 

<예제> 이름이 홍길순인 데이터를 삭제하세요.