-- PART 3:
-- 여기 user 테이블 생성 SQL 구문이 있습니다. user 테이블을 참고해서, content 테이블 생성 SQL 구문을 완성하세요.
CREATE TABLE `user` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`name` varchar(255) not NULL,
`email` varchar(255) not NULL
);
CREATE TABLE `content` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`title` varchar(255) not NULL,
`body` varchar(255) not NULL,
`created_at` timestamp not NULL DEFAULT CURRENT_TIMESTAMP,
`userId` int,
FOREIGN KEY (`userId`) REFERENCES `user` (`id`)
);
// 유어클래스의 requirement를 참조하여, schema.sql에 알맞은 테이블을 구성해주세요.
/*
TODO: Q 3-1. 현재 있는 데이터베이스에 존재하는 모든 테이블 정보를 보기위한 SQL을 작성해주세요.
*/
const PART3_1 = `SHOW Tables`;
/*
TODO: Q 3-2. user 테이블의 구조를 보기위한 SQL을 작성해주세요.
- 요구사항에 맞는 user 테이블을 작성해야만, 테스트를 통과합니다.
*/
const PART3_2 = `DESC user;`;
/*
TODO: Q 3-3. content 테이블의 구조를 보기위한 SQL을 작성해주세요.
- 요구사항에 맞는 content 테이블을 작성해야만, 테스트를 통과합니다.
*/
const PART3_3 = `DESC content;`;
module.exports = { PART3_1, PART3_2, PART3_3 };
/*
----------------------------------------------------------------------------------------------
TODO: Q 4-1. user 테이블에 존재하는 모든 컬럼을 포함한 모든 데이터를 확인하기 위한 SQL을 작성해주세요.
*/
const PART4_1 = `SELECT * FROM user;`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 4-2. user 테이블에 존재하는 모든 데이터에서 name 컬럼만을 확인하기 위한 SQL을 작성해주세요.
*/
const PART4_2 = `SELECT name from user;`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 4-3. user 테이블에 데이터를 추가하기 위한 SQL을 작성해주세요.
- 원하는 name, email을 사용하시면 됩니다.
*/
const PART4_3 = `INSERT INTO user(name, email)
VALUES ('bj', 'stwin@naver.com');`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 4-4. user 테이블에서 특정 조건을 가진 데이터를 찾기위한 SQL을 작성해주세요.
- 조건 : name이 duhyunkim이여야 합니다.
*/
const PART4_4 = `SELECT * FROM user
WHERE name='duhyunkim';`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 4-5. user 테이블에서 특정 조건을 가진 데이터를 찾기위한 SQL을 작성해주세요.
- 조건 : name이 duhyunkim이 아니여야 합니다.
*/
const PART4_5 = `SELECT * FROM user
WHERE NOT name='duhyunkim';`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 4-6. content 테이블에 존재하는 모든 데이터에서 title 컬럼만을 찾기 위한 SQL을 작성해주세요.
*/
const PART4_6 = `Select title from content`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 4-7. content의 title과 그 컨텐츠를 작성한 user의 name을 찾기 위한 SQL을 작성해주세요.
- 저자가 없더라도, 켄턴츠의 title을 모두 찾아야합니다.
*/
const PART4_7 = `Select content.title, user.name from content
Left Join user
On content.userId = user.id`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 4-8. content의 title과 그 컨텐츠를 작성한 user의 name을 찾기 위한 SQL을 작성해주세요.
- 저자가 있는 컨텐츠의 title만 찾아야합니다.
*/
const PART4_8 = `Select content.title, user.name from user
Inner Join content
On content.userId = user.id`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 4-9. content의 데이터를 수정하기 위한 SQL을 작성해주세요.
- title이 database sprint인 content 데이터에서 body를 database is very easy로 수정해야합니다.
*/
const PART4_9 = `update content
set body = 'database is very easy'
where title = 'database sprint'`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 4-10. content의 데이터를 추가하기 위한 SQL을 작성해주세요.
- duhyunkim이 작성한 컨텐츠를 추가해주세요. 제목과 본문은 자유입니다. (참고: duhyunkim의 아이디는 1입니다.)
*/
const PART4_10 = `insert into content(title, body, userId)
values ('hello', 'world', 1)`;
module.exports = {
PART4_1,
PART4_2,
PART4_3,
PART4_4,
PART4_5,
PART4_6,
PART4_7,
PART4_8,
PART4_9,
PART4_10,
};
// 유어클래스의 requirement를 참조하여, .schema.sql에 추가로 구성해주세요.
/*
----------------------------------------------------------------------------------------------
TODO: Q 5-1-1. category 테이블의 구조를 보기위한 SQL을 작성해주세요.
- 요구사항에 맞는 category 테이블을 작성해야만, 테스트를 통과합니다.
*/
const PART5_1_1 = `DESC category`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 5-1-2. content_category 테이블의 구조를 보기위한 SQL을 작성해주세요.
- 요구사항에 맞는 content_category 테이블을 작성해야만, 테스트를 통과합니다.
*/
const PART5_1_2 = `DESC content_category`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 5-1-3. role 테이블의 구조를 보기위한 SQL을 작성해주세요.
- 요구사항에 맞는 role 테이블을 작성해야만, 테스트를 통과합니다.
*/
const PART5_1_3 = `DESC role`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 5-1-4. user 테이블의 구조를 보기위한 SQL을 작성해주세요.
- 요구사항에 맞는 user 테이블을 작성해야만, 테스트를 통과합니다.
*/
const PART5_1_4 = `DESC user`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 5-2-1. category 테이블에 존재하는 데이터에서 id, name을 찾는 SQL을 작성해주세요.
*/
const PART5_2_1 = `SELECT id, name FROM category`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 5-2-2. user의 name과 email 그리고 그 user가 속한 role name(컬럼명: roleName)을 찾기 위한 SQL을 작성해주세요.
- 속한 role이 없더라도, user의 name과 email,role name을 모두 찾아야합니다.
*/
const PART5_2_2 = `SELECT user.name, user.email, role.name AS roleName FROM user
LEFT JOIN role
ON user.roleId = role.id`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 5-2-3. 어느 role에도 속하지 않는 user의 모든 컬럼 데이터를 찾기위한 SQL을 작성해주세요.
*/
const PART5_2_3 = `SELECT * From user
WHERE user.roleId is Null
`;
/*
----------------------------------------------------------------------------------------------
TODO: content_category 테이블의 의미를 테이블 관계로서 이해하고 있는지 점검해주세요. 질문자체가 이해가 안된다면, Help-Desk에 질문해주세요.
----------------------------------------------------------------------------------------------
*/
/*
----------------------------------------------------------------------------------------------
TODO: Q 5-2-4. content_category 테이블에 존재하는 모든 칼럼의 데이터를 찾기위한 SQL을 작성해주세요.
*/
const PART5_2_4 = `SELECT * from content_category`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 5-2-5. jiSungPark이 작성한 content의 title을 찾기위한 SQL을 작성해주세요.
*/
const PART5_2_5 = `SELECT title from content
inner join user
on content.userId = user.id
where name = 'jiSungPark'`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 5-2-6. JiSungPark이 작성한 content의 category name을 찾기위한 SQL을 작성해주세요.
*/
const PART5_2_6 = `SELECT category.name from category
left join content_category
on category.id = content_category.categoryId
left join content
on content.id = content_category.contentId
left join user
on content.userId = user.id
where user.name = 'jiSungPark'
`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 5-2-7. category의 name이 soccer인 content의 title, body, created_at을 찾기위한 SQL을 작성해주세요.
*/
const PART5_2_7 = `SELECT content.title, content.body, content.created_at from content
right join content_category
on content.id = content_category.contentId
right join category
on category.id = content_category.categoryId
where category.name = 'soccer'`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 5-2-8. category의 name이 soccer인 content의 title, body, created_at, user의 name을 찾기위한 SQL을 작성해주세요.
*/
const PART5_2_8 = `SELECT content.title, content.body, content.created_at, user.name from content
right join content_category
on content.id = content_category.contentId
right join category
on category.id = content_category.categoryId
right join user
on content.userId = user.id
where category.name = 'soccer'
`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 5-2-9. duRiCha가 작성한 글의 개수 (컬럼명: ContentCount)를 출력하기 위한 SQL을 작성해주세요.
*/
const PART5_2_9 = `SELECT count(content.id) as ContentCount from content
right join user
on content.userId = user.id
where user.name = 'duRiCha'
`;
/*
----------------------------------------------------------------------------------------------
TODO: Q 5-2-10. 각 user(컬럼명: name)가 작성한 글의 개수 (컬럼명: ContentCount)를 출력하기 위한 SQL을 작성해주세요.
*/
const PART5_2_10 = `Select user.name, count(content.id) as ContentCount from content
right join user
on content.userId = user.id
group by user.name
`;
module.exports = {
PART5_1_1,
PART5_1_2,
PART5_1_3,
PART5_1_4,
PART5_2_1,
PART5_2_2,
PART5_2_3,
PART5_2_4,
PART5_2_5,
PART5_2_6,
PART5_2_7,
PART5_2_8,
PART5_2_9,
PART5_2_10,
};