ARCHIVE/DB

[DB] MySQL

man_on 2021. 9. 15. 01:58
반응형

MYSQL시작

sql접속
mysql -u root -p


database 생성
create database dataname;


현재 sql에 저장되어있는 데이터베이스 보기
show databases;


db접근
use dataname;


table보기
show tables;


table 정보
desc tablename;

 

 

table 생성

CREATE TABLE artists 
(
  id INT NOT NULL AUTO_INCREMENT,     # id 칼럼 정수 / NULL X / 값 자동증가
  name VARCHAR(100) NOT NULL,         # name 칼럼 100크기 문자열 
  PRIMARY KEY (id)                    # 이 테이블 Primary Key = id 로 설정
); # 쿼리문은 ; 로 구분되기 때문에 엔터를 쳐서 쿼리문을 멀티라인으로 작성
CREATE TABLE songs
(
  id INT NOT NULL AUTO_INCREMENT,
  title VARCHAR(100) NOT NULL,
  lyrics VARCHAR(2000),
  artist_id INT,
  PRIMARY KEY (id),
  FOREIGN KEY (artist_id) REFERENCES artists (id) 
  # 외래키를 걸어줄 칼럼과 참조할 테이블과 칼럼
);

 


data 입력

#table에 data추가

INSERT INTO artists (name) VALUES ('Radio Head'); 
# INSERT INTO 뒤에는 테이블 명과 칼럼값을 소괄호로 감싸 줍니다.
# VALUES 뒤에는 실제로 넣을 값을 소괄호로 감싸주고 
앞서 테이블의 칼럼을 지정한 순서대로 데이터를 넣으면 됩니다.
INSERT INTO artists (name) VALUES ('Pink Floid');
INSERT INTO artists (name) VALUES ('새소년');

 

data 수정

데이터 수정
UPDATE artists SET name='Pink Floyd' WHERE id=2;

# UPDATE 쿼리문은 데이터를 수정할 테이블을 기입
# 바꾸고자 하는 칼럼값에 새롭게 업데이트 할 데이터를 대입
# WHERE 조건을 주는 쿼리문
# 이 예제에서는 artists 테이블의 id가 2번인 데이터에 대해서 UPDATE를 하겠다는 의미
데이터 삭제

DELETE FROM artists WHERE name='새소년';
id값 auto_increment 값 수정

show table status like 'tablename'
#다음에 삽입될 auto_increment 값 확인

초기화(변경)
alter table tablename auto_increment=변경할 숫자;
#초기화(변경) 할 때 해당 컬럼 max값 보다 커야함

SELECT 데이터 조회

# table 전체 조회
SELECT * FROM tablename;

# 원하는 col만 조회
select tablename.colname from tablename;

# col 여러개 조회
select tablename.colname, tablename.col2name from tablename;

 

WHERE 조건문

# 조건을 걸어줌 / 다양한 연산자 가능
SELECT tablename.colname FROM tablename WHERE tablename.title = '바다';

# user라는 테이블에서 email 이 위같은 데이터를 가져옴
SELECT * FROM users WHERE email='orm@wecode.co.kr’;

https://www.w3schools.com/sql/sql_where.asp

 

SQL WHERE Clause

SQL WHERE Clause The SQL WHERE Clause The WHERE clause is used to filter records. It is used to extract only those records that fulfill a specified condition. WHERE Syntax SELECT column1, column2, ... FROM table_name WHERE condition; Note: The WHERE clause

www.w3schools.com

 

WHERE 조건문 + LIKE 조건문

 : (특수문자 사용하여) 문자열 검색

// 넘실넘실이라는 문자열이 포함된 노래 
SELECT songs.title, songs.lyrics FROM songs WHERE songs.lyrics LIKE '%넘실넘실%';

// all로 시작하는 쿼리문
SELECT songs.title, songs.lyrics FROM songs WHERE songs.title LIKE 'All%';

// 가져가요 돼요로 끝나는 쿼리문
SELECT songs.title, songs.lyrics FROM songs WHERE songs.lyrics LIKE '%가져가도 돼요';

JOIN

 : 연관성있는 두개의 케이블을 결합

SELECT artists.name, songs.title, songs.lyrics    # 필요한 칼럼을 나열
FROM artists                                      # artists 테이블에
JOIN songs                                        # songs 테이블을 결합
ON artists.id = songs.artist_id;                  # ON 뒤에는 교집합,연결성이 있는 칼럼
더보기
SELECT artists.id, artists.name, songs.title
FROM artists
JOIN songs
ON artists.id = songs.artist_id
WHERE artists.name = '새소년';            # 새소년의 노래들만 조회
SELECT artists.id, artists.name, songs.title
FROM artists
JOIN songs
ON artists.id = songs.artist_id
WHERE songs.lyrics LIKE '%you%';       # 가사에 you 가 들어간 데이터만 조회
SELECT artists.id, artists.name, songs.title
FROM artists
JOIN songs
ON artists.id = songs.artist_id
WHERE songs.lyrics LIKE '%you%' OR songs.lyrics LIKE '%i%'; 
# 가사에 you 또는 i가 들어간 데이터만 조회

https://www.w3schools.com/sql/sql_join_left.asp

 

SQL LEFT JOIN Keyword

SQL LEFT JOIN Keyword SQL LEFT JOIN Keyword The LEFT JOIN keyword returns all records from the left table (table1), and the matching records from the right table (table2). The result is 0 records from the right side, if there is no match. LEFT JOIN Syntax

www.w3schools.com


AUTO_INCREMENT 1부터 순서대로 정렬

SET명령으로 변수 COUNT를 0으로 지정
mysql> SET @count=0;

update 명령으로 auto_incremetn의 컬럼을 1부터 순서대로 정렬
mysql> UPDATE tablename SET colname=@count:=@count+1;

1부터말고 변경하고싶은 숫자있을 때
alter table tablename auto_increment=변경할숫자;

key = MUL 다른 테이블 기본키 참조



> 백업해둔 dump파일로 데이터 복원

use 기존데이터
source dumpname.sql


> Database 삭제하고 다시연결

npx prisma migrate dev —name init


> Db 백업 > dump 파일 생성
터미널 들어가서 바로!

mysqldump -uroot -p 기존데이터베이스명 > 파일명.sql


> 복구

mysql -u root -p [복구할데이터베이스이름] < [저장한데이터베이스].sql


> 기존 db 삭제

Drop database database;



반응형

'ARCHIVE > DB' 카테고리의 다른 글

[DB] ORM  (0) 2021.09.16
[DB] C.R.U.D  (0) 2021.09.16
[DB] Database 기초  (0) 2021.09.14
[Node.js] express  (0) 2021.09.13
[Node.js] Protocol / Port / URL  (0) 2021.09.13