Indexes에 들어가서 Index Name을 적고 Type을 FULLTEXT로 정한뒤 Index Columns에 원하는 문자열 컬럼을 정한다.

FULLTEXT 인덱스를 생성하면 검색의 속도도 높이고 검색 옵션도 다양하게 이용 할 수 있다.

첫 번째 방법은 테이블의 스패너 모양을 클릭해서 이 창에서 UQ를 체크하고 Apply하는 것이다.

 

두 번째 방법은 indexes에 들어가서 Index Name에 이름을 넣고 Type에 UNIQUE를 설정후 Index Columns에 원하는 컬럼을 선택하고 apply하는 것이다.

NULL인 데이터를 가져오는 방법

where 칼럼명 is NULL

 

NULL이 아닌 데이터를 가져오는 방법

where 칼럼명 is not NULL

customers 테이블
orders 테이블

각 고객별로 주문 금액 최대값이 600달러 이상인 데이터만 가져와서 내림차순으로 정렬하려고 한다.

이때 group by 뒤에는 where이 아니라 having을 써준다.

select c.first_name, c.last_name, max(o.amount) as MAX
from customers c
join orders o
	on c.id = o.customer_id
group by c.id having max(o.amount) >= 600
order by MAX desc;

customers 테이블
orders 테이블

100명의 고객과 700개의 주문으로 이루어진 두 개의 테이블이 있다.

두개 테이블의 교집합을 나타내려면

select *
from customers
join orders
	on customers.id = orders.customer_id;

모든 고객 데이터를 가져오되, 주문정보가 없는 고객도 나타나도록 가져오는 방법은 left join을 쓰면된다.

select *
from customers c
left join orders o
	on c.id = o.customer_id;

 

foreign key를 설정하면 참조하는 테이블에 이 연결된 키 값이 있는지 확인하고 없으면 데이터 저장이 안되도록 한다.

reviews라는 테이블에 reviewers와 series의 id를 참조하는 foreign key를 만든다.

위사진처럼 이름을 적고 참조하는 테이블을 선택하고 reviews의 컬럼을 고른뒤 참조할 컬럼을 고른다.

apply를 누르면 적용된다.

'AWS MySQL' 카테고리의 다른 글

MySQL group by의 having 사용법  (0) 2022.05.17
MySQL join과 left join 하는 방법과 예시  (0) 2022.05.17
MySQL ifnull함수 사용법  (0) 2022.05.17
MySQL IF함수  (0) 2022.05.17
MySQL CASE 문 작성법  (0) 2022.05.16

people 테이블

ifnull함수 컬럼의 null값을 다른 값으로 변경할 때 쓴다.

select *, ifnull(age, 100)
from people;

books 테이블

if함수 pages 가 300보다크면 long 아니면 short로 나오게 하고 싶다.

select *, if(pages >= 300, 'long', 'short')
from books;

 

books 테이블

case로 시작 end로 끝나며 when을 통해 조건문과 then을 통해 원하는 값을 넣어준다.

-- stock_quantity 가 0 ~ 50 사이면, * (별표한개)
-- stock_quantity 가 51 ~ 100 사이면, ** (별표두개)
-- stock_quantity 그 외에는 *** (별표3개)
select *, 
	case 
		when stock_quantity between 0 and 50 then '*'
        when stock_quantity between 51 and 100 then '**' 
        else '***' 
	end as stars
from books;

 

people2 테이블

DATE는 날짜 TIME은 시간 DATETIME은 날짜와 시각이다. 아래와 같이 임의의 데이터와 현재 날짜와 시간을 받아오는 함수를 통해 insert 한다.

insert into people2
(name, birthdate, birthtime, birthdt)
values
('Padma', '1988-11-11', '10:07:35', '1988-11-11 10:07:35'),
('Larry', '1994-04-22', '04:10:42', '1994-04-22 04:10:42');

insert into people2
(name, birthdate, birthtime, birthdt)
values
('Harry', curdate(), curtime(), now());

select *
from people2;

 

날짜와 시간에서 특정 년도나 몇시인지 아래처럼 불러올 수 있다.

select name, year(birthdate)
from people2;

select name, month(birthdate)
from people2;

select name, day(birthdate)
from people2;

select name, dayofweek(birthdate)
from people2;

select name, dayname(birthdate)
from people2;

select name, hour(birthtime)
from people2;

select name, minute(birthtime)
from people2;

select name, second(birthtime)
from people2;

 

아래는 날짜 포맷과 시간 계산방법이다.

-- 2000-11-11 03:50 에 태어났습니다.
select date_format(birthdt, '%Y-%m-%d %H:%i 에 태어났습니다.')
from people2;

-- birthdate 컬럼과 현재시간의 차이를 가져오세요
select datediff(now(), birthdate)
from people2;

-- birthdate에 36일 후는??
select date_add(birthdate, interval 36 day);

 

아래처럼 데이터를 insert하면 created_at에 timestmap로 현재시간이 저장된다.

timestamp는 1970년 1월 1일 자정을 0으로 시작해서(정확하게 표현하면 00:00:00 UTC on January 1, 1970) ~

특정 시점까지 얼마나 많은 초(second) 단위의 시간이 지났는지를 통해 특정 시점을 표기하는 방식이다.

create table comments (
	id int unsigned not null auto_increment primary key,
    content varchar(100),
    created_at timestamp default now()
);

insert into comments
(content)
values
('사과 진짜 맛있나요??????????');

+ Recent posts