Skip to content

Latest commit

ย 

History

History
165 lines (138 loc) ยท 6.29 KB

File metadata and controls

165 lines (138 loc) ยท 6.29 KB

SQL

  • Structured Query Language
  • NoSQL์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

MongoDB

  • DBMS๋งˆ๋‹ค SQL์— ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ
    • ANSI(American National Standards Institute) ์—์„œ ํ‘œ์ค€ SQL์„ ์ •์˜
    • ANSI ํ‘œ์ค€์œผ๋กœ ์ž‘์„ฑ๋œ SQL์€ ๋ชจ๋“  DBMS์—์„œ ํ˜ธํ™˜
    • ORACLE, MySQL์—์„œ๋„ ํ‘œ์ค€์„ ์ง€ํ‚ค์ง€ ์•Š๊ธฐ๋„ ํ•œ๋‹ค๊ณ  ํ•จ, PostgreSQL์€ ๋น„๊ต์  ํ‘œ์ค€์„ ์ž˜ ์ง€ํ‚จ๋‹ค๊ณ  ํ•จ
-- ANSI
SELECT Test1.*, Test2.name
FROM Test1 LEFT OUTER JOIN Test2
ON Test1.num = Test2.num
-- ORACLE
SELECT Test1.*, Test2.name
FROM Test1 , Test2
WHERE Test1.num = Test2.num(+)
-- MySQL
SELECT Test1.*, Test2.name
FROM Test1 , Test2
WHERE Test1.num *= Test2.num
  • SQL์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Œ
    • ์ผ๋ฐ˜์ ์œผ๋กœ ๋Œ€๋ฌธ์ž๋Š” ํ‚ค์›Œ๋“œ, ์†Œ๋ฌธ์ž๋Š” ์ด๋ฆ„, ๊ฐ’, ๋ณ€์ˆ˜ ๋“ฑ์„ ์˜๋ฏธ
  • PL/SQL : ORACLE์ด SQL์„ ์ ˆ์ฐจ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ ํ™•์žฅ์‹œํ‚จ ์–ธ์–ด
    • if, for, ๋ณ€์ˆ˜ ์‚ฌ์šฉ ๋“ฑ ๊ฐ€๋Šฅ
    • ๊ฒ€์ƒ‰์–ด ์ˆœ์œ„๋Š” ๋†’์•„์กŒ์ง€๋งŒ, ๋ถˆ์•ˆ์ •

์ž๋ฃŒํ˜•

์ •์ˆ˜

  1. bigint : $-2^63 \sim 2^63-1$, 8๋ฐ”์ดํŠธ
  2. int : $-2^31 \sim 2^31-1$, 4๋ฐ”์ดํŠธ
  3. smallint : $-2^15 \sim 2^15-1$, 2๋ฐ”์ดํŠธ
  4. tinyint : $0 \sim 255$

์‹ค์ˆ˜

  • numeric(=deciaml), float, real

๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„

  1. date : 0000-01-01 ~ 9999-12-31, 3๋ฐ”์ดํŠธ
  2. datetime : 1753-01-01 ~ 9999-12-31, 00:00:00 ~ 23:59:59.997, 8๋ฐ”์ดํŠธ
  3. datetime2 : 0000-01-01 ~ 9999-12-31, 00:00:00 ~ 23:59:59.9999999, 7~8๋ฐ”์ดํŠธ
  4. datetimeoffset : ํ‘œ์ค€ ์‹œ๊ฐ„๋Œ€๋ฅผ ์ธ์‹ํ•œ 24์‹œ๊ฐ„ ๊ธฐ์ค€ ์‹œ๊ฐ„๊ณผ ๊ฒฐํ•ฉ๋œ ๋‚ ์งœ, datetime2 + ์‹œ๊ฐ„๋Œ€, 10๋ฐ”์ดํŠธ
  5. time : ํ‘œ์ค€ ์‹œ๊ฐ„๋Œ€๋ฅผ ์ธ์‹ํ•˜์ง€ ์•Š๋Š” 24์‹œ๊ฐ„ ๊ธฐ์ค€ ์‹œ๊ฐ„, 5๋ฐ”์ดํŠธ

๋ฌธ์ž์—ด

  1. char[n] : ๊ณ ์ •๊ธธ์ด ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ
  2. varchar[n|max] : ๊ฐ€๋ณ€๊ธธ์ด ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ
  3. ntext, text, image

์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž์—ด

  • nchar, nvarchar

์ด์ง„ ๋ฌธ์ž์—ด

  • binary, varbinary, image

CREATE, ALTER

-- ํ…Œ์ด๋ธ” ์ƒ์„ฑ
CREATE TABLE My_table(
    my_field1 INT,
    my_field2 VARCHAR(50),
    my_field3 DATE NOT NULL,
    PRIMARY KEY (my_field1, my_field2)
);
-- ํ…Œ์ด๋ธ” ์ˆ˜์ •
ALTER TABLE My_table ADD my_field4 NUMBER(3) NOT NULL;
  • primary key, ๊ธฐ๋ณธํ‚ค : RDB์—์„œ ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค
  • alter๋Š” ํ…Œ์ด๋ธ”, ์ปฌ๋Ÿผ ์ด๋ฆ„ ๋ณ€๊ฒฝ, ์ปฌ๋Ÿผ ์ถ”๊ฐ€ ๋“ฑ ๊ฐ€๋Šฅ, ํ…Œ์ด๋ธ” ์ด๋ฆ„ ๋ณ€๊ฒฝ์€ ์ฃผ๋กœ rename์‚ฌ์šฉ

SQL ๋ฌธ๋ฒ•

  • ์ฒ˜๋ฆฌ ์ˆœ์„œ : FROM > ON > JOIN > WHERE > GROUP BY > WITH CUBE/ROLLUP > HAVING > SELECT > DISTINCE > ORDERED BY > TOP

SELECT

  • ๊ธฐ๋ณธ ๊ตฌ์กฐ
SELECT [ALL | DISTINCT] ์ปฌ๋Ÿผ๋ช… [,์ปฌ๋Ÿผ๋ช…...]
FROM ํ…Œ์ด๋ธ”๋ช… [,ํ…Œ์ด๋ธ”๋ช…...]
[WHERE ์กฐ๊ฑด์‹]
[GROUP BY ์ปฌ๋Ÿผ๋ช… [HAVING ์กฐ๊ฑด์‹]]
[ORDER BY ์ปฌ๋Ÿผ๋ช…]
GROUP BY ์ปฌ๋Ÿผ๋ช…[,์ปฌ๋Ÿผ๋ช…...]
ORDER BY ์ปฌ๋Ÿผ๋ช…[,์ปฌ๋Ÿผ๋ช…...]

WHERE ์กฐ๊ฑด

์กฐ๊ฑด ์—ฐ์‚ฐ์ž ์˜ˆ
๋น„๊ต =, <, >, <=, >= price < 20000
๋ฒ”์œ„ BETWEEN price BETWEEN 10000 AND 20000
์ง‘ํ•ฉ IN, NOT IN price IN (10000, 20000, 30000)
ํŒจํ„ด LIKE bookname LIKE '์•ผ๊ตฌ'
NULL IS NULL, IS NOT NULL price IS NULL
๋ณตํ•ฉ์กฐ๊ฑด AND, OR, NOT (price < 20000) AND (bookname LIKE '์•ผ๊ตฌ)

LIKE ์™€์ผ๋“œ ๋ฌธ์ž

์™€์ผ๋“œ ๋ฌธ์ž ์˜๋ฏธ ์˜ˆ
+ ๋ฌธ์ž ์—ฐ๊ฒฐ 'python' + 'Django'
% 0๊ฐœ ์ด์ƒ ๋ฌธ์ž์™€ ์ผ์น˜ '%์•ผ๊ตฌ%'
[] 1๊ฐœ์˜ ๋ฌธ์ž์™€ ์ผ์น˜ '[0-5]%'
0-5 ์‚ฌ์ด ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž์—ด
[^] 1๊ฐœ์˜ ๋ฌธ์ž์™€ ๋ถˆ์ผ์น˜ '[0-5]%'
0-5 ์‚ฌ์ด ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ž์—ด
- ํŠน์ • ์œ„์น˜์˜ 1๊ฐœ ๋ฌธ์ž์™€ ์ผ์น˜ '_๊ตฌ%'

์ง‘๊ณ„ ํ•จ์ˆ˜

  • SUM, AVG, COUNT, MAX, MIN

- SQL ์˜ˆ์‹œ
-- WHERE ์‚ฌ์šฉ
SELECT * FROM documnet where author='๊น€์‹ธํ”ผ';
SELECT * FROM document where nom BETWEEN 1 AND 10;
-- ์ง‘ํ•ฉ ์—ฐ์‚ฐ
SELECT name FROM customer
EXCEPT
SELECT name FROM customer WHERE custid IN (SELECT custid FROM Orders)

JOIN

  • FROM์ ˆ์—์„œ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์ง€์ •ํ•˜๋ฉด, JOIN์„ ํ†ตํ•˜์—ฌ ์‚ฌ์šฉ
SELECT * FROM table1, table2;
SELECT * FROM table1, table2 WHERE table1.field1 = table1.field2;

SQL join

  • INNER JOIN : ๋‘ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•  ๋•Œ, ๋‘ ํ…Œ์ด๋ธ”์— ๋ชจ๋‘ ์ง€์ •ํ•œ ์—ด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์Œ
  • OUTER JOIN : ๋‘ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•  ๋•Œ, 1๊ฐœ์˜ ํ…Œ์ด๋ธ”์—๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์–ด๋„ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ด
  • CROSS JOIN : ํ•œ ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰๊ณผ ๋‹ค๋ฅธ ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ์กฐ์ธํ•˜๋Š” ๊ธฐ๋Šฅ
  • SELF JOIN : ์ž์‹ ๊ณผ ์กฐ์ธ, 1๊ฐœ์˜ ํ…Œ์ด๋ธ” ์‚ฌ์šฉ ํ•  ๋•Œ

INSERT, UPDATE, DELETE

INSERT INTO table(field1, field2, ...) VALUES(value1, value2, ...);
UPDATE table SET field1=value1, field2=value2, {WHERE ์กฐ๊ฑด};
DELETE FROM table {WHERE ์กฐ๊ฑด};
  • INSERT๋Š” ๋ชจ๋“  ํ…Œ์ด๋ธ” ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด tableํ•ญ๋ชฉ์ด ์—†์–ด๋„ ๋จ
  • UPDATE๋Š” WHERE์ด ์—†์œผ๋ฉด ๋ชจ๋“  ํ•ญ๋ชฉ ๊ฐ’์ด ๋ณ€๊ฒฝ๋จ
  • DELETE์˜ WHERE์กฐ๊ฑด์ด ์—†์œผ๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์‚ญ์ œ
    • ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์‚ญ์ œ๋ฅผ ํ•  ๋•Œ, TRUNCATE๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ํ…Œ์ด๋ธ” ์ดˆ๊ธฐํ™”
    • DELETE๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์‚ญ์ œํ•จ

์ฐธ์กฐ