[MYSQL]RDBMS, SQL 기본 명령문 (SELECT, DESC, AS), NULL특징
RDBMS
mySQL은 RDBMS(관계형 데이터베이스)로 데이터가 하나 이상의 열과 행의 테이블에 저장되어 서로 다른 데이터 구조가 어떻게 관련되어 있는지 쉽게 파악하고 이해할 수 있도록 사전 정의된 관계로 데이터를 구성하는 정보 모음이다.
이러한 테이블간의 상호작용을 기반으로 설정되는 여러 테이블 간의 논리적 연결이다.
SELECT 문
MYSQL에서는 SELECT문을 사용해 테이블의 레코드에 접근할 수 있습니다.
기본적인 연산도 가능한 명령문입니다.
테이블의 모든 레코드를 조회할 땐
SELECT 컬럼이름
FROM 테이블이름
으로 조회할 수 있으며, 필드이름 외에 *을 입력하게 되면 모든 컬럼에 대한 정보를 조회할 수 있다.
내가 보고 싶은 열만 입력한다면?
[간단한 SELECT문 예제]
-- Continent Asia, North America, Europe을 제외한 국가들 중
-- 인구가 10,000,000 이상인 국가들 조회
SELECT * FROM country
WHERE Continent NOT IN ('Asia', 'North America', 'Europe')
AND Population >= 10000000;
1. 모든 컬럼을 조회할건데 ~
2. 그 중 Continent 컬럼에서 Asia, North America, Europe 는 제외한 ~
3. 인구 1천만명 이상인 국가들로 조회 해 줘~
DESC(Description)
DESC문은 생성된 테이블의 구조를 알려주는 명령문이다.
Filed : 어떤 컬럼을 갖고 있는지
Type : 해당 컬럼은 어떤 자료형의 정보를 담을 수 있는지
Nul : 해당 컬럼은 Null값이 입력 가능한지
Key : 해당 컬럼이 어떤 Key 속성을 담고 있는지
Default : 해당 컬럼의 기본값은 무엇인지
Extra : 쿼리 실행계획에서 성능에 관련된 중요한 내용이 표시 됨 (auto_increment, distinct ..)
AS 문 (별명 지어주기)
연산된 값 혹은 기존의 컬럼명에 대한 별명을 지어 줄 수 있다.
SELECT 컬럼명 AS '별명'
이런 식으로 지어주면 컬럼명은 Result Grid에서 별명으로 바뀌어 출력된다.
컬럼명이 수정되는 것은 아니니 주의하자.
SELECT Code AS '코드', Name AS "이름", Population AS "인구" FROM country;
[연산값 인구밀도의 값을 별명을 붙여 출력해보기]
1. 인구수와 국가면적과 '인구 / 면적'인 컬럼을 나타낼거고~
2. '인구 / 면적' 컬럼은 '인구 밀도'라는 별명으로 출력 해 줘 ~
3. FROM country에서~
-- 국가(Name), 인구(Population), 면적(SurfaceArea), 인구 / 면적
SELECT Name, Population, SurfaceArea, Population / SurfaceArea '인구 밀도' FROM country;
Null에 관하여
Null을 조회한다거나 논리값을 적용할 때 SQL에서는 관계연산자(=, !=)를 사용하면 안된다.
-- NULL 값을 다루는 법 (IS, IS NOT)
SELECT Code, Name, GNP, GNPOld, GNP - GNPOld 'GNP 변화량' FROM country
WHERE GNPOld IS NOT NULL;
1. code, name, GNP, GPNOld, GPN - GNPOld 가 궁금한데~
2. contry테이블에서 말이야~
3. 근데 GNPOld 컬럼 중 NULL값은 보고싶지 않아 ~
Null 조회를 원한다면 IS NULL, 그렇지 않다면 IS NOT NULL을 사용하면 된다.
또한,
NULL값은 연산이 불가하다.
NULL의 연산값은 무조건 NULL을 반환한다.
-- null 특징 (무조건 null 출력)
SELECT NULL + 5;