[MY SQL]
I. 개념정의
- 관계형 데이터 베이스 (Relational Database)
= 서로간에 관계가 있는 데이터 테이블들을 모아둔 데이터 저장공간
- SQL이란? (Structure Query Language)
= 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어
- SQL 구성
데이터 정의 언어 (Data Definition Language)
: Create, Alter, Drop 등
데이터 조작 언어 (Data Manipulation Language)
: Insert, Update, Delete, Select 등
데이터 제어 언어 (Data Control Language)
: Grant, Revoke, Commit, Rollback 등
-
기본 DDL
show databases ;
= 존재하는 DB 확인
create database testdb;
= testdb라는 데이터 베이스 생성하기
use database testdb;
= 데이터베이스 사용하기
drop database testdb;
= 데이터베이스 삭제하기
-
mysql
1) user 정보
- 사용자 정보는 mysql에서 관리하고 있음
- User 정보 조회
use database_name;
select host, user from user;
= mysql 데이터베이스 사용한다.
= host와 user 정보를 user에서 가져온다.
- User 생성
create user 'username'@'localhost' identified by 'password';
= 현재 PC에서 접속가능한 사용자 생성
CREATE USER 'username'@'%' identified by 'password';
= 외부에서 접속가능한 사용자 생성
- 호스트 정보가 다른 user는 이름이 같아도 사용 가능하다.
- User 삭제
DROP USER 'username'@'%'
= %환경의 username사용자 삭제
2) 실습환경 제작
- Database 생성 (testdb)
CREATE DATABASE testdb;
create user 'noma'@'localhost' identified by '1234';
- 유저 권한 확인하기
SHOW GRANTS FOR 'username'@'localhost';
- 유저 권한 부여하기
GRANT ALL ON dbname.* to 'username'@'localhost';
- 유저 권한 삭제
REVOKE ALL ON dbname.* from 'username'@'localhost';
- 새로고침
flush privileges
- Table
create database zerobase default character set utf8mb4;
기본 실습용 데이터베이스 zerobase 제작
Utf8mb4 : 다국어 지원, 이모지 문자 지원
- Table 생성
CREATE TABLE tablename
(
columnname datatype,
columnname datatype,
)
테이블 생성 기본형
CREATE TABLE mytable(id int, name varchar(16));
= mytable이라는 테이블을 생성한다
id column은 int(숫자) / name column은 varchar(가벼운 문자열)
- Table 정보 확인
DESC mytable;
- Table 이름 변경
ALTER TABLE tablename1 RENAME tablename2
= tablename1의 이름을 tablename2의 이름으로 변경
- Table column 추가
ALTER TABLE tablename ADD COLUMN column datatype;
= person 테이블에 agee(double 형)의 컬럼 추가
- Table column 데이터 타입 변경
ALTER TABLE tablename MODIFY COLUMN column datatype;
ID int not null auto_increment primary key
= ID값은 숫자, null은 허용되지 않음, 자동증가(auto_increment), key값
NAME varchar(32) not null default ''
= name값은 varchar값, null은 허용되지 않음, 기본값은 공백
- Table column 이름, 데이터 타입 변경
ALTER TABLE tablename
CHANGE COLUMN old_column new_column new_datatype;
- Table column 삭제
ALTER TABLE table DROP COLUMN column_name;
- Table 삭제
DROP TABLE tablename;
- Table 내용 확인
select * from person;
= person 테이블에 있는 전체 데이터 불러오기
- DML
1) Insert
※ 입력한 컬럼의 이름의 순서와 값의 순서는 일치할 것
※ 모든 컬럼값을 추가하는 경우에 컬럼 이름을 지정하지 않아도 됨
INSERT INTO tablename (column1, column2 …)
VALUES (value1, value2, …);
2) SELECT
- 테이블 내의 특정 칼럼에 대한 데이터를 조회할 때 사용
- SELECT FROM : 기본형
select column1, column2 from tablename;
- 전체 데이터 조회
select * from tablename;
3) WHERE
- SQL문에 조건을 추가하며 select 뿐만 아니라 update나 delete 에도 사용
select * from person where sex='F';
4) UPDATE
update tablename
set column1 = value1, column2 = value2 …
where condition;
5) DELETE
delete from tablename
where condtion;
6) ORDER BY
select column1, column2, …
from tablename
order by column1, column2, … asc; (desc)
- 연산자
- 비교 연산자
연산자 의미
A = B A와 B가 같은
A > B A가 B보다 큰 (초과)
A < B A가 B보다 작은 (미만)
A >= B A가 B보다 크거나 같은 (이상)
A <= B A가 B보다 작거나 같은 (이하)
A <> B A가 B보다 크거나 작은 (같지 않은)
A != B A와 B가 같지 않은
- 논리 연산자
연산자 의미
AND 조건을 모두 만족하는 경우 True
OR 하나의 조건이라도 만족하는 경우 True
NOT 조건을 만족하지 않는 경우 True
BETWEEN 조건값이 범위 사이에 있으면 True
IN 조건값이 목록에 있으면 True
LIKE 조건값이 패턴에 맞으면 True
- and 구문 활용
select * from celeb
where sex=’M’ and agency = ‘YG엔터테이먼트’
order by
agency asc;
- or구문 활용
select from celeb
where (age <= 29 and sex='F') or (age >= 30 and sex='M')
order by age, sex;
= 나이 29살 이하, 여성 + 나이 30 이상, 남성 // 나이, 성별로 정렬
select from celeb where (id%2) = 1 and sex='M';
= id가 홀수고 남자
- not 구문 활용
select * from celeb
where (agency='YG엔터테이먼트' and not sex='M')
or (not agency='YG엔터테이먼트' and sex='F');
= 소속사가 YG, 남자가 아닌 사람 + 소속사가 YG가 아니고 여자
- between 구문 활용
select * from celeb where age between 20 and 40;