Notice
Recent Posts
Link
Today
Total
10-06 00:17
๊ด€๋ฆฌ ๋ฉ”๋‰ด

dingdong coding

[ MySQL ] ๊ธฐ๋ณธ ์ฟผ๋ฆฌ๋ฌธ ์ •๋ฆฌ ๋ณธ๋ฌธ

๐ŸฌDB

[ MySQL ] ๊ธฐ๋ณธ ์ฟผ๋ฆฌ๋ฌธ ์ •๋ฆฌ

๐Ÿถ ๊ฐœ๋ฐœ๊ฐœ๋ฐœ ๐Ÿพ 2022. 7. 7. 02:39

SQL (Structured Query Language) 

 SQL์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ๋”ฐ๋ฅด๋Š” DBMS์˜  ํ‘œ์ค€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์–ธ์–ด 

 ๊ด€๊ณ„ ๋Œ€์ˆ˜๋ฅผ ๊ธฐ์ดˆ๋กœ ๋งŒ๋“œ๋Ÿฌ์ง„ DB๊ด€๋ จ ๋ช…๋ น์–ด ํ˜•์‹

SQL ๋ช…๋ น์–ด ๋ถ„๋ฅ˜ 

1 ) 

๋ฐ์ดํ„ฐ ์ •์˜์–ด DDL, Data Definition Language

    -  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ ํ…Œ์ด๋ธ” ๋“ฑ์„ ์ƒ์„ฑ, ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๊ทธ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด

    -  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ •์˜ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •

    -  ๋ช…๋ น์–ด ์ˆ˜ํ–‰์‹œ ์ด์ „ ์ƒํƒœ๋กœ ๋ณต๊ท€ ๋ถˆ๊ฐ€ 

 

๊ตฌ๋ถ„  DDL ๋ช…๋ น์–ด ๋‚ด์šฉ
์ƒ์„ฑ CREATE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ค๋ธŒ์ ํŠธ ์ƒ์„ฑ
๋ณ€๊ฒฝ ALTER ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ค๋ธŒ์ ํŠธ ๋ณ€๊ฒฝ
์‚ญ์ œ DROP ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ค๋ธŒ์ ํŠธ ์‚ญ์ œ
TRUNCATE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ค๋ธŒ์ ํŠธ์˜ ๋‚ด์šฉ ์‚ญ์ œ

 

2 )  ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด DML, Data Manipulation Language

     -  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ์กฐํšŒ, ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด

     -  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ, ๊ฐฑ์‹ 

    -  ์‚ฌ์šฉ์ž์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต

    -  ํŠธ๋žœ์žญ์…˜ ์ œ์–ด์–ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‹คํ–‰ ์ „ ์ƒํƒœ๋กœ ๋ณต๊ท€ ๊ฐ€๋Šฅ

 

๊ตฌ๋ถ„  DML ๋ช…๋ น์–ด ๋‚ด์šฉ
๋ฐ์ดํ„ฐ ์‚ฝ์ž… INSERT ์‚ฝ์ž… ํ˜•ํƒœ๋กœ ์‹ ๊ทœ ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”์— ์ €์žฅ
๋ฐ์ดํ„ฐ ์ˆ˜์ • UPDATE ํ…Œ์ด๋ธ”์˜ ๋‚ด์šฉ์„ ์ˆ˜์ •
๋ฐ์ดํ„ฐ ์‚ญ์ œ  DELETE ํ…Œ์ด๋ธ”์˜ ๋‚ด์šฉ์„ ์‚ญ์ œ
๋ฐ์ดํ„ฐ ์กฐํšŒ SELECT ํ…Œ์ด๋ธ”์˜ ๋‚ด์šฉ์„ ์กฐํšŒ

 

3 )  ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด DCL, Data Control Language

    -   ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€์‹œํ‚ค๋ฉด์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ทœ์ •์ด๋‚˜ ์ œ์•ฝ์กฐ๊ฑด ๋“ฑ์„ ๊ธฐ์ˆ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น์–ด

    -   ์‚ฌ์šฉ์ž ๋ณ„๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ํšŒ์ˆ˜ 

 

DCL ๋ช…๋ น์–ด ๋‚ด์šฉ
GRANT ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌ
REVOKE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ํšŒ์ˆ˜

 

 

  ํ…Œ์ด๋ธ”  : ์„œ๋กœ ์—ฐ๊ด€๋œ ๋ ˆ์ฝ”๋“œ์˜ ์ง‘ํ•ฉ

  ๋ ˆ์ฝ”๋“œ, ํŠœํ”Œ : ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ์ทจ๊ธ‰๋˜๋Š” ์ž๋ฃŒ์˜ ์ง‘ํ•ฉ. DB์—์„œ๋Š” ํ–‰(Row)์— ํ•ด๋‹น, ๊ด€๊ณ„๋œ ๋ฐ์ดํ„ฐ์˜ ๋ฌถ์Œ

  ํ•„๋“œ, ์†์„ฑ : ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธ. DB์—์„œ๋Š” ์—ด(Column)์— ํ•ด๋‹น, ์ž์‹ ๋งŒ์˜ ํƒ€์ž…์„ ๊ฐ€์ง„๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 

 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ 

SHOW DATABASES;

 

 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ

USE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช…;

 

 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ 

CREATE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช…;

 

 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ญ์ œ 

DROP DATABASES ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช…;

ํ…Œ์ด๋ธ”

 ํ…Œ์ด๋ธ” ์ •์˜ 

CREATE TABLE ํ…Œ์ด๋ธ” ์ด๋ฆ„(
	    
        ํ•„๋“œ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž…(์ž๋ฆฌ ์ˆ˜) ์กฐ๊ฑด;
        ํ•„๋“œ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž… ์กฐ๊ฑด;
        ํ•„๋“œ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž… ์กฐ๊ฑด;
        PRIMARY KEY(๊ธฐ๋ณธํ‚ค๋กœ ์ง€์ •ํ•œ ํ•„๋“œ๋ช…)
 );
CREATE TABLE posts ( 
  id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  subject varchar(255) NOT NULL,
  content mediumtext,
  created datetime,
  user_id int(10) unsigned NOT NULL,
  user_name varchar(32) NOT NULL,
  hit int(10) unsigned NOT NULL default '0',  
  PRIMARY KEY (id)
);

 

 ์ œ์•ฝ ์กฐ๊ฑด(constraint)

    -  ์ œ์•ฝ ์กฐ๊ฑด(constraint)์ด๋ž€ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ๋•Œ ์‹คํ–‰๋˜๋Š” ๊ฒ€์‚ฌ ๊ทœ์น™์„ ์˜๋ฏธ

    -   ALTER ๋ฌธ์œผ๋กœ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋„ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

CREATE TABLE ๋ฌธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ œ์•ฝ ์กฐ๊ฑด

 

1 )  NOT NULL : ํ•ด๋‹น ํ•„๋“œ๋Š” NULL ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

2 )  UNIQUE : ํ•ด๋‹น ํ•„๋“œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.

3 )  PRIMARY KEY : ํ•ด๋‹น ํ•„๋“œ๊ฐ€ NOT NULL๊ณผ UNIQUE ์ œ์•ฝ ์กฐ๊ฑด์˜ ํŠน์ง•์„ ๋ชจ๋‘ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

4 )  FOREIGN KEY : ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ์˜์กดํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

5 )   DEFAULT : ํ•ด๋‹น ํ•„๋“œ์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

 

๋˜ํ•œ, AUTO_INCREMENT ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ํ•„๋“œ์˜ ๊ฐ’์„ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค 1์”ฉ ์ฆ๊ฐ€๋œ ๊ฐ’์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ AUTO_INCREMENT ํ‚ค์›Œ๋“œ ๋‹ค์Œ์— ๋Œ€์ž… ์—ฐ์‚ฐ์ž(=)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

  ํ…Œ์ด๋ธ” ์ •๋ณด ์กฐํšŒ

DESCRIBE ํ…Œ์ด๋ธ”๋ช…; // "DESC ํ…Œ์ด๋ธ”๋ช…;"

  ํ…Œ์ด๋ธ” ์‚ญ์ œ

DROP TABLE ํ…Œ์ด๋ธ”๋ช…;

 

  ํ…Œ์ด๋ธ” ์ˆ˜์ •

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD COLUMN ํ•„๋“œ๋ช… ๋ฐ์ดํ„ฐ ํƒ€์ž…;
ALTER TABLE table_name ADD COLUMN ex_column varchar(32) NOT NULL;

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY COLUMN ํ•„๋“œ๋ช… ๋ฐ์ดํ„ฐ ํƒ€์ž…;
ALTER TABLE table_name MODIFY COLUMN ex_column varchar(16) NULL;

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP COLUMN ํ•„๋“œ๋ช…;
ALTER TABLE table_name DROP COLUMN ex_column;

ALTER TABLE ํ…Œ์ด๋ธ”๋ช…1 RENAME ํ…Œ์ด๋ธ”๋ช…2;
ALTER TABLE table_name1 RENAME table_name2;

๋ ˆ์ฝ”๋“œ

  ๋ ˆ์ฝ”๋“œ ์กฐํšŒ 

SELECT * FROM ํ…Œ์ด๋ธ”๋ช…; //  * ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์กฐํšŒ
SELECT ํ•„๋“œ๋ช…1, ํ•„๋“œ๋ช…2 FROM ํ…Œ์ด๋ธ”์ด๋ฆ„; // ํ•„๋“œ๋ช…1,2๋งŒ ์กฐํšŒ
SELECT * FROM ํ…Œ์ด๋ธ”์ด๋ฆ„ WHERE ํ•„๋“œ๋ช… = '๋‚ด์šฉ'; // ํ•ด๋‹น ํ•„๋“œ์—์„œ ๊ฐ’์ด '๋‚ด์šฉ'์ธ ๋ ˆ์ฝ”๋“œ ์กฐํšŒ
SELECT * FROM ํ…Œ์ด๋ธ”์ด๋ฆ„ WHERE ํ•„๋“œ๋ช… BETWEEN 00:00:00 AND 12:00:00 // 00์‹œ~12์‹œ ์‚ฌ์ด
SELECT * FROM ํ…Œ์ด๋ธ”์ด๋ฆ„ WHERE ํ•„๋“œ๋ช… IN (A, B); // ๊ด„ํ˜ธ ๋‚ด์˜ ์ผ์น˜ํ•˜๋Š” ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ์กฐํšŒ
SELECT * FROM ํ…Œ์ด๋ธ”์ด๋ฆ„ WHERE ํ•„๋“œ๋ช… LIKE '%๋ฌธ์ž์—ด%'; // ๋ฌธ์ž์—ด ํฌํ•จ๋œ ๋ ˆ์ฝ”๋“œ ์กฐํšŒ
SELECT * FROM ํ…Œ์ด๋ธ”์ด๋ฆ„ WHERE ํ•„๋“œ๋ช… IS NULL; // ๋˜๋Š” "IS NOT NULL"
SELECT COUNT(*) FROM ํ…Œ์ด๋ธ”๋ช… WHERE ํ•„๋“œ๋ช…='๋‚ด์šฉ'; // ํ•ด๋‹น ํ•„๋“œ์—์„œ ๊ฐ’์ด '๋‚ด์šฉ'์ธ ๋ ˆ์ฝ”๋“œ ๊ฐœ์ˆ˜
SELECT * FROM Customers WHERE country='KR';
SELECT * FROM Customers WHERE id='asd111';
SELECT * FROM Costomers ORDER BY age; // ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
SELECT * FROM Costomers ORDER BY age DESC; // ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
SELECT DISTINCT ํ•„๋“œ๋ช… FROM ํ…Œ์ด๋ธ”์ด๋ฆ„; // ํ•ด๋‹น ํ•„๋“œ ๊ธฐ์ค€์œผ๋กœ ์ค‘๋ณต๋œ ๋ ˆ์ฝ”๋“œ์ œ๊ฑฐ
// Info ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ Users ํ…Œ์ด๋ธ”์—์„œ userName์ด 'A'๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋“ค์˜ userId, userName ํ•„๋“œ ์กฐํšŒ
SELECT userId, userName FROM Info.Users WHERE userName LIKE 'A%'
SELECT COUNT(*) FROM Customers WHERE age='25';

 

  ๋ ˆ์ฝ”๋“œ ์ถ”๊ฐ€

INSERT INTO ํ…Œ์ด๋ธ”๋ช… (ํ•„๋“œ๋ช…1, ํ•„๋“œ๋ช…2) VALUES (ํ•„๋“œ๊ฐ’1, ํ•„๋“œ๊ฐ’2); // ํ…Œ์ด๋ธ”์— ์ƒˆ ๋ ˆ์ฝ”๋“œ ์ถ”๊ฐ€
INSERT INTO ๋ชฉ์ ์ง€ํ…Œ์ด๋ธ”๋ช… SELECT * FROM ์ถœ๋ฐœ์ง€ํ…Œ์ด๋ธ”๋ช…; // ๋ชจ๋“  ํ•„๋“œ ๋ณต์‚ฌ
INSERT INTO ๋ชฉ์ ์ง€ํ…Œ์ด๋ธ”๋ช… (ํ•„๋“œ1,ํ•„๋“œ2,ํ•„๋“œ3) SELECT ํ•„๋“œ1,ํ•„๋“œ2,ํ•„๋“œ3 FROM ์ถœ๋ฐœ์ง€ํ…Œ์ด๋ธ”๋ช…; // ์ง€์ • ํ•„๋“œ ๋ณต์‚ฌ
INSERT INTO Customers (userName, age) VALUES ('John', '25'), ('coco', '27');

 

  ๋ ˆ์ฝ”๋“œ ์ˆ˜์ •

UPDATE ํ…Œ์ด๋ธ”๋ช… SET ํ•„๋“œ๋ช…1=ํ•„๋“œ๊ฐ’1, ํ•„๋“œ๋ช…2=ํ•„๋“œ๊ฐ’2 WHERE ์กฐ๊ฑด;
UPDATE Reservation SET RoomNum = 2002 WHERE Name = 'ํ™๊ธธ๋™';

  ๋ ˆ์ฝ”๋“œ ์‚ญ์ œ

DELETE FROM ํ…Œ์ด๋ธ”๋ช… WHERE ์กฐ๊ฑด;
DELETE FROM Reservation WHERE Name = 'ํ™๊ธธ๋™';

์กฐ์ธ

  ์™ผ์ชฝ ์™ธ๋ถ€ ์กฐ์ธ (left outer join)

SELECT * FROM A
LEFT JOIN B ON A.key = B.key

 

  ์˜ค๋ฅธ์ชฝ ์™ธ๋ถ€ ์กฐ์ธ (right outer join)

SELECT * FROM A
RIGHT JOIN B ON A.key = B.key

 

  ๋‚ด๋ถ€ ์กฐ์ธ (inner join)

SELECT * FROM A
INNER JOIN B ON A.key = B.key

 

  ์™ผ์ชฝ ์•ˆํ‹ฐ ์กฐ์ธ (left anti join)

SELECT * FROM A
LEFT JOIN B ON A.key = B.key
WHERE B.key IS NULL

 

  ์˜ค๋ฅธ์ชฝ ์•ˆํ‹ฐ ์กฐ์ธ (right anti join)

SELECT * FROM A
RIGHT JOIN B ON A.key = B.key
WHERE A.key IS NULL

 

  ์ „์ฒด ์กฐ์ธ (full outer join)

SELECT * FROM A
FULL OUTER JOIN B ON A.key = B.key

 

  ์ „์ฒด ์กฐ์ธ ๋ณ€ํ˜• (full outer join ๋ณ€ํ˜•)

SELECT * FROM A
FULL OUTER JOIN B ON A.key = B.key
WHERE A.key IS NULL OR B.key IS NULL

 

 

 

ํ•™์Šต์— ๋งŽ์€ ๋„์›€์ด ๋œ ๋งํฌ๋ฅผ  ์ฐธ์กฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ™‚

 

์ฐธ์กฐ ๋ฐ ์ถœ์ฒ˜

https://cocoon1787.tistory.com/762

'๐ŸฌDB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

SQL Injection  (0) 2022.06.17
Comments