안녕하세요.
이번에는 MySQL의 SQL문 사용법에 대하여 연습해 보겠습니다.
1. SQL문
- Structured Query Language
- 구조적 질의 언어
- 데이터베이스를 제어하고 관리할 수 있는 목적의 프로그래밍 언어
1-1. DDL (Data Definition Language)
- 데이터베이스를 정의하는 언어
- CREATE 데이터베이스, 테이블 등을 생성하는 역할을 한다.
- ALTER 테이블을 수정하는 역할을 한다.
- DROP 데이터베이스, 테이블을 삭제하는 역할을 한다.
- TRUNCATE 테이블의 내용을 초기화시키는 역할을 한다.
2. 데이터 형식
2-1. 문자형 데이터 형식
- char(n)
- varchar(n)
- tinytext(n)
- text(n)
- mediumtext(n)
- longtext(n)
2-2. 숫자형 데이터 형식
- tinyint(n)
- smallint(n)
- mediumint(n)
- int(n) bigint(n)
- float(길이, 소수)
- decimal(길이, 소수)
- double(길이, 소수)
2-3. 날짜형 데이터 형식
- date
- time
- datetime
- timestamp
- year
연습용 코드
// 데이터베이스 생성 + utf8 인코딩 설정
CREATE DATABASE test DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
// test 데이터 베이스 사용
use test;
// member 테이블 생성
create table member (
name varchar(10),
gender varchar(2),
age int,
registered timestamp
);
// member 테이블 생성
// ID, name, birthday 컬럼에 null 값 불가 설정
create table member (
ID varchar(10) not null,
name varchar(10) not null,
birthday date not null
);
// member 테이블에서 birthday 컬럼 삭제
alter table member drop column birthday;
// member 테이블에서 brithday 컬럼 date 형식으로 추가
alter table member add column birthday date;
// member 테이블에서 brithday 컬럼에 null 값 불가능 추가 수정
alter table member modify column birthday not null;
// member 테이블 삭제
drop table member;
// member 테이블 생성
// 모든 컬럼 null 값 불가
// ID 컬럼에 primary key 설정
// name 컬럼에 값 입력 없을 시 '홍길동' 기본 값 적용
create table member (
ID varchar(10) not null primary key,
name varchar(10) not null default '홍길동',
birthday date not null
);
create table member (
id varchar(20) not null primary key,
name varchar(5) not null,
age int,
gender varchar(2) not null,
email varchar(50),
promotion varchar(2) default 'x'
);
// member 테이블의 id 컬럼 수정
alter table member modify id varchar(10) not null;
// member 테이블 설정 보기
desc member;
// member 테이블에서 age 컬럼 삭제
alter table member drop age;
desc member;
// member 테이블에서 interest 컬럼 varchar(100) 형식으로 추
alter table member add interest varchar(100);
desc member;
3. DML
- Data Manipulation Language
- 데이터베이스의 내부 데이터를 관리하기 위한 언어
- SELECT - 데이터베이스에서 데이터를 검색하는 역할을 한다.
- INSERT - 테이블에 데이터를 추가하는 역할을 한다.
- UPDATE - 테이블에 데이터를 수정하는 역할을 한다.
- DELETE - 테이블에 데이터를 삭제하는 역할을 한다.
user 테이블 생성
create table user (
ID varchar(10) not null primary key,
name varchar(5) not null default '홍길동',
age int not null
);
desc user;
SELECT
- select * from 테이블이름;
- 테이블 안의 데이터를 확인할 때 사용하는 명령어
INSERT
- insert into 테이블이름 (열) values (값)
- 테이블에 데이터를 삽입하는 명령어
insert into user (ID, name, age) values ('a', '테스트', 99);
select * from user;
insert into user (ID, name, age) values ('b', '테스트', 99);
select * from user;
insert into user values('c', '테스트', 99);
select * from user;
SELECT - 2
user 테이블의 모든 필드 조회
select * from user;
user 테이블의 ID 필드만 조회
select ID from user;
user 테이블의 ID, name 필드 조회
select ID, name from user;
SELECT - WHERE (조건)
- select * from 테이블이름 where 필드명 = ‘값’;
- 비교를 위해 테이블에 값 1개를 추가
- 비교 연산자 ( = , <, >, <=, >=)
- 부정 연산자 (!=, ^, <>, NOT 컬려명 = )
insert into user (ID, name, age) values ('d', '홍길동', 99);
select * from user where name = '테스트';
name = ‘테스트’인 값만 출력이 돼서 ‘홍길동’은 검색 결과에서 안 나옵니다.
부정 연산자 (NOT 컬럼명 = )
select * from user where not name = '테스트';
SELECT - ORDER BY (정렬)
- select * from 테이블이름 order by ‘필드명’;
- 특정 필드를 기준으로 오름차순, 내림차순으로 정렬할 수 있다.
ASC - 오름차순
- ID를 기준으로 오름차순 정렬
- ASC는 기본적으로 생략이 가능합니다.
select * from user order by ID ASC;
DESC - 내림차순
- ID를 기준으로 내림차순 정렬
select * from user order by ID DESC;
SELECT - WHERE + ORDER BY
- 조건 + 정렬
- order by는 where 보다 뒤에 있어야 한다.
- 이름이 테스트인 결과를 id를 기준으로 내림차순 정렬하여 보여준다.
select * from user where name = '테스트' order by id desc;
SELECT - LIMIT
- 조회 결과에 개수 제한을 걸어서 보여준다.
- limit는 제일 뒤에 작성한다.
- 조회 결과에서 2개만 보여준다.
SELECT - BETWEEN
- a부터 b 사이의 값을 조건으로 검색한다.
- 코드 체크를 위해 insert로 값 1개 추가
- 홍길동2, 80은 between 조건에 포함이 안 돼서 조회 결과에 나오지 않는다.
insert into user (ID, name, age) values ('e', '홍길동2', 80);
select * from user where age between 81 and 99;
SELECT - IN
- IN 안의 값에 해당하는 것만 조회한다.
select * from user where name in('홍길동');
SELECT - LIKE
- 포함하는 글자에 해당하는 것만 조회한다.
select * from user where name like '%길%';
select * from user where name like '%트%';
- like 뒤에 %는 아무 글자에 해당하는 조건을 뜻합니다.
- 다음과 같이 작성되면 앞에는 무슨 글자가 와도 상관없지만, 마지막은 ‘동’으로 끝나야 합니다.
select * from user where name like '%동';
select * from user where name like '홍%';
- like 뒤에 _ 를 작성하면 1글자만 해당한다는 의미입니다.
select * from user where name like '%동_';
select * from user where name like '홍__';
SELECT - IS NULL
- 특정 필드의 값이 null 이면 조회한다.
- 현재 테이블 구조에서는 null 이 없기 문에 조회가 되지 않는다.
select * from user where name is null;
- NOT + IS NULL
- name이 null이 아닌 값들을 조회한다.
select * from user where not name is null;
논리연산자
- AND
- OR
- NOT
AND
- A and B ⇒ A와 B 조건 전부 해당하는 경우
- name이 null 값이 아니고, name이 ‘테스트’인 값만 조회한다.
select * from user where not name is null and name='테스트';
name이 null 값이 아니고, 나이가 80~90 사이인 경우 조회한다.
OR
- A or B ⇒ A 또는 B 조건 중 1개만 해당하는 경우
UPDATE
- 테이블 값을 수정할 때 사용
- UPDATE 테이블 명 set (필드명=값, 필드명2=값);
조건을 안 걸어서 user 테이블의 age가 전부다 20으로 바뀐다. [코드 실행 X]
update user set age = 20;
where 조건 걸어서 다시 실행
update user set age = 20 where name = '테스트';
MySQL 업데이트 이후에 정보를 한 번에 여러 개를 변경하려고 하면 Error 메시지가 출력됩니다.
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
- 코드를 수정해서 1개만 변경합니다.
- id가 a인 데이터의 age를 20으로 수정합니다.
update user set age = 20 where id = 'a';
select * from user;
DELETE
- 테이블 값 삭제할 때 사용
- DELETE FROM 테이블 명;
- id가 a인 데이터를 삭제한다.
delete from user where ID = 'a';
select * from user;
TRUNCATE
- 테이블 값을 초기
- truncate 테이블 명;
truncate user;
select * from user;
이상으로 MySQL의 SQL 명령어에 대하여 알아보았습니다.
원래는 더 많은 명령어가 있지만, 이 정도만 알아보도록 하겠습니다.
감사합니다.
'MySQL' 카테고리의 다른 글
[MySQL] 데이터베이스 한글 설정하기 (0) | 2023.03.21 |
---|---|
[MySQL] MySQL 사용자 추가 및 권한 설정하기 (0) | 2023.03.09 |
[MySQL] MySQL DB + Workbench 설치하기 (0) | 2023.03.07 |