본문 바로가기

카테고리 없음

DATABASE 명령문정리

SELECT  -  extracts data from a databse 데이터베이스로 부터 데이터를 추출

UPDATE -  updates data in a database 데이터베이스안에 있는 데이터 변경

DELETE -  deletes data from a database 데이터베이스로 부터 데이터를 삭제한다.

INSERT INTO - inserts new data into a database 데이터베이스 안에 새로운 데이터를 삽입한다.

CREATE DATABASE - creates a new database 새로운 데이터베이스를 만든다.

ALTER DATABASE - modifies a database 데이터베이스를 변경한다.

CREATE TABLE - creates a new table 새로운 테이블을 생성한다.  

ALTER TABLE - modifies a table 테이블을 변경한다.

DROP TABLE - deletes a table 테이블이 있는 공간을 삭제한다.

CREATE INDEX - creates an index (search key)  인덱스를 생성한다

DROP INDEX - deletes an index 인덱스를 삭제한다.

 

DELETE , TRUNCATE , DELETE 의 차이점에 대해서 ...

delete는 데이터만 삭제하고 로그가 남아있다. 로그가 남아있기 떄문에 되돌릴수 있다. (휴지통에 넣는 구조라고 생각하면된다)

truncate는 데이터만 삭제하고 로그는 남아있지 않으며 데이터가 있는 공간을 날리기때문에 되돌릴수 없다. 처리속도가 빠르다.

로그생성x

drop은 테이블과 데이터 모든것을 그냥 날려버린다고 생각하면 된다. 물론 날렸기때문에 복구도 불가능하다.처리속도가 빠르다. 

로그생성x

 

SELECT 사용법

SELECT column1, column2, ...  

FROM   table_name;

SELECT  *            //*는 모든 컬럼을 의미한다.

FROM  table_name

SELECT CustomerName, City 

FROM Customers;

DISTINCT 중복 제거 ...  사용법

SELECT DISTINCT column1, column2, ...
FROM table_name;

SELECT COUNT(DISTINCT Country) FROM Customers;

SELECT Count(*) AS DistinctCountries
FROM (SELECT DISTINCT Country FROM Customers);

WHERE 조건절 사용법

SELECT column1, column2, ...
FROM table_name
WHERE condition;

SELECT * FROM Customers
WHERE Country='Mexico'; //문자열을 조건절로 쓸떄 '  ' 로 묶는것이 필요하다.

 AND 사용법

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;

OR 사용법

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

NOT 사용법

SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;

ORDER BY 사용법

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC; // ASC는 올림차순 DESC는 냬림 차순

INSERT INTO 사용법

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

NULL 사용법

SELECT column_names
FROM table_name
WHERE column_name IS NULL;

SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;

UPDATE 사용법

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico'; //UPDATE 문 작성시 WHERE 절을 적지않으면 모든 데이터가 바뀌기 때문에 주의바람

DELETE 사용법

DELETE FROM table_name WHERE condition;

제한을 두고 검색할때 하는 방법

MySQL 버전

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;

예시

SELECT * FROM Customers
LIMIT 3;

Oracle 버전

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;

예시

SELECT * FROM Customers
WHERE ROWNUM <= 3;

SQL TOP PERCENT 사용법 및 예시

SELECT TOP 50 PERCENT * FROM Customers;

위에서부터 50% ..SELECT

응용

SELECT TOP 3 * FROM Customers
WHERE Country='Germany';

SELECT * FROM Customers
WHERE Country='Germany' AND ROWNUM <= 3;

기본적으로 제공되는 함수

MIN , MAX , AVG , COUNT, AVG, SUM

MIN : 최소값

MAX : 최대값

AVG : 평균

COUNT : 수

SUM   : 합계

SELECT MIN(Price) AS SmallestPrice
FROM Products;

SELECT MAX(Price) AS LargestPrice
FROM Products;

SELECT COUNT(column_name)
FROM table_name
WHERE condition;

SELECT AVG(column_name)
FROM table_name
WHERE condition;

SELECT SUM(column_name)
FROM table_name
WHERE condition;

LIke 사용법

SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;

LIKE OperatorDescription

WHERE CustomerName LIKE 'a%' Finds any values that start with "a"( a로 시작하는 모든 문자열)
WHERE CustomerName LIKE '%a' Finds any values that end with "a"(a로 끝나는 모든 문자열)
WHERE CustomerName LIKE '%or%' Finds any values that have "or" in any position (문자열 안에 or이 들어 있는 모든 문자열)
WHERE CustomerName LIKE '_r%' Finds any values that have "r" in the second position (두번쨰 문자가 r로 시작하는 모든 문자열)
WHERE CustomerName LIKE 'a__%' Finds any values that start with "a" and are at least 3 characters in length ( a로 시작하고 최소 3자리이상인 문자열)
WHERE ContactName LIKE 'a%o' Finds any values that start with "a" and ends with "o" (a로 시작하고 o으로 끝나는 모든 문자열)

주의

%는 공백도 포함이다.

Wildcard Characters in MS Access 사용법

*

Represents zero or more characters
(공백또는 그 이상의 문자열)

bl* 일경우  (bl, black, blue, and blob, 등등)이 속한다. 
? Represents a single character
(하나의 문자)
h?t finds hot, hat, and hit(h로시작하고 t로 끝나는 모든 문자열)
[] Represents any single character within the brackets
[bracket]안에있는 모든 싱글 문자) 중 하나이기 때문에 결국 하나만 내보낸다.
h[oa]t finds hot and hat, but not hit
! Represents any character not in the brackets
brackets안에서 특정 문자가 아닌것 표시
h[!oa]t finds hit, but not hot and hat
- Represents a range of characters
[문자의 범위를 연결하는 것을 표시]
c[a-b]t finds cat and cbt
# Represents any single numeric character
한개의 숫자 모든 범위의 것을 의미한다.
2#5 finds 205, 215, 225, 235, 245, 255, 265, 275, 285, and 295

Wildcard Characters in SQL Server 사용법

% Represents zero or more characters
0개또는 여러개의 문자열
bl% finds bl, black, blue, and blob
_ Represents a single character
한개의 문자 
h_t finds hot, hat, and hit
[]

Represents any single character within the brackets
bracket 안에있는 모든 싱글 문자

h[oa]t finds hot and hat, but not hit
^ Represents any character not in the brackets
bracket안에있는 아닌 특정 문자열
h[^oa]t finds hit, but not hot and hat
- Represents a range of characters
문자의 범위를 표시
c[a-b]t finds cat and cbt

in 사용법

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

 

SELECT * FROM Customers
WHERE Country NOT IN ('Germany', 'France', 'UK');

 

SELECT * FROM Customers
WHERE Country IN (SELECT Country FROM Suppliers);

 

SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;

 

SELECT column_name(s)
FROM table_name AS alias_name;

 

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;

 

  • (INNER) JOIN: Returns records that have matching values in both tables
  • LEFT (OUTER) JOIN: Returns all records from the left table, and the matched records from the right table
  • RIGHT (OUTER) JOIN: Returns all records from the right table, and the matched records from the left table
  • FULL (OUTER) JOIN: Returns all records when there is a match in either left or right table

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

 

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

 

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;