MYSQL_001_기초

이새롬·2023년 3월 7일
0

SQL

목록 보기
1/1
post-thumbnail

https://dev.mysql.com/downloads/mysql/

관계형 데이터베이스란? Realational Database
서로 간에 관계가 있는 데이터 테이블들을 모아둔 데이터 저장공간

SQL이란? Structured Query Language
데이터베이스에서 데이터를 정의, 조작 제어하기 위해 사용하는 언어

데이터 정의 언어 (DDL : Data Definition Language)
→ CREATE, ALTER, DROP 등의 명령어

데이터 조작 언어 (DML : Data Manipulation Language) ★
→ INSERT, UPDATE, DELETE, SELECT 등의 명령어

데이터 제어 언어 (DCL: Data Control Language)
→ GRANT, REVOKE, COMMIT, ROLLBACK 등의 명렁어


MYSQL 접속

터미널 실행 mysql

현재 데이터 목록 확인

데이터베이스 생성
create database dbname;
create하고 show 하면 만든거 확인 가능

데이터 베이스들 보여줘
show database;

해당 데이터 베이스로 이동(사용)
use dbname;

삭제 명령어
drop database dbname;


User 관리

use mysql;

유저 조회
SELECT host, user FROM user;

현재 PC에서만 접속 가능한 사용자를 비밀번호와 함께 생성
CREATE USER 'username'@'localhost' identified BY 'password';

ex) 현재 PC에서 접속가능한 사용자 (noma,1234)생성
create user 'noma'@'localhost' identified by '1234';

ex) 외부에서 접속 가능한 사용자 (noma,5678)생성
create user 'noma'@'%' indentified by '5678';

유저 삭제
DROP USER 'username'@'localhost'
DROP USER 'username'@'%'


user 권한 관리

권한 관리 실습을 위해 database 생성
CREATE DATABASE testdb;

SHOW DATABASES;

유저만들기
use mysql; 이동 후★
CREATE USER 'noma'@'localhost' IDENTIFIED BY '1234';

사용자에게 특정 데이터베이스의 모든 권한을 부여
GRANTS ALL ON dbname.* to 'username'@'localhost';

현재 pc에서 접근 가능한 noma에게 testdb의 모든 권한을 부여
grants all on testdb.* to 'noma'@'localhost';

그 다음 사용자에게 부여된 모든 권한 목록을 확인

SHOW GRANTS FOR 'username'@'localhost';

ex) 노마 권한 확인
show grants for 'noma'@'localhost';

💡 내용이 적용 안될때 FLUSH PRIVILEGES;

사용자에게 특정 데이터베이스의 모든 권한을 삭제

REVOKE ALL ON dbname.* FROM 'username'@'localhost';


table 사용

데이터베이스 먼저 생성
create database zerobase DEFAULT CHARACTER SET uft8mb4;
이 데이터베이스에서 기본으로 사용할 설정은 utf8mb4 다국어, 이모지 사용할 것이다.

show databases;

테이블 생성

CREATE TABLE tablename
(
columname datatype,
columname datatype,
...
);

테이블 생성 예제
id(int)와 name(varchar(16)) 칼럼을 가지는 mytable이라는 이름의 테이블 생성
create table mytable
(
id int,
name varchar(16)
);

테이블 목록보기
show tables;

테이블 구조까지 확인하기
DESC tablename;

colunm 설정

테이블 이름 변경
ALTER TABLE tablename RENAME new_tablename

컬럼추가
ALTER TABLE tablename ADD COLUMN columnname datatype;

ex) person 테이블에 agee(double)컬럼 추가
alter table person add column agee double;

desc tablename;
으로 컬럼추가 확인

컬럼 데이터타입 변경
AlTER TABLE tablename MODIFY COLUMN columnname datatype;

컬럼명 바꾸기 (데이터 타입도 같이 변경가능함)
ALTER TABLE tablename CHANGE COLUMN old_columnname new_columnname new_datatype;

컬럼삭제
ALTER table tablename DROP COLUMN columname;

테이블 삭제
DROP TABLE tablename;


실습환경 만들기

create database zerobase;

use zerobase;

create table person(
id int,
name varchar(16),
age int,
sex char
);

desc person;

Insert 데이터 추가

INSERT INTO tablename(column1, column2, ...)
VALUES (values1, values2, ... );

입력한 컬럼이름의 순서와 값의 순서가 일치하도록 주의!

셀 입력 후 입력값 확인
select * from tablename;

모든 컬럼값을 추가하는 경우에는 다음과 같이 컬럼 이름을 지정하지 않아도 되지만,
입력하는 값의 순서가 테이블의 컬럼 순서와 일치하도록 주의★★

INSERT INTO tablename
VALUES(value1, value2, ...)


select 데이터 조회

SELECT column1, column2, ...
FROM tablename;

ex) select name,age from person;

SELECT *
FROM tablename;

전부 다 조회~!

WHERE 특정 조건에 것만 가져온다
SELECT column1, column2, ...
FROM tablename
WHERE condition;

예시
person 테이블에서 성별이 여자인 데이터 조회
select * from person where sex='F'


UPDATA tablename

내용 업데이트, 수정

UPDATA tablename
SET colum1 = value1, column2 = value2, ...
WHERE codition;
한 번에 컬럼1=내용1, 컬럼2=내용2 이런식으로 바꾼다
조건에 맞는!

예시)
update person set age=23 where name='이효리'

DELETE

데이터 삭제
DELETE FROM tablename
WHERE codition;

0개의 댓글