# 9.
SELECT sex, count(Survived) as Total from passenger as p
inner join ticket as t on p.PassengerId = t.passengerId
inner join survived as s on p.PassengerId = s.PassengerId
where survived = 1 Group by Sex;
성별별 생존자 수 이므로 select sex count(survived) 로 들어가야함. 난 성별을 빼먹었음!
# 10.
SELECT sex as 성별, count(Survived) as 생존자수, avg(AGE) as 평균나이 from passenger as p
inner join ticket as t on p.PassengerId = t.passengerId
inner join survived as s on p.PassengerId = s.PassengerId
where survived = 1 Group by Sex;
as 생략해도 동일하게 노출되나 가독성을 위해 as를 사용함
(개인 취향이지만 사용하는 쪽이 더 좋을 것 같아보임)
CREATE SCHEMA testdb ; # 데이터베이스 생성
CREATE DATABASE testdb; #데이터베이스 생성
CREATE DATABASE if not exists testdb3; #만약 없으면 생성해줘
DROP DATABASE testdb3; #데이터베이스 삭제
DROP schema testdb2; #데이터베이스 삭제
DROP database if exists testdb3; #만약 없으면 생성해줘
MySQL의 gui로 사용할 수 있지만, 코드로도 작성할 수 있어야 함
서비스 기획시, 테이블이 어떻게 확장될 수 있을지 고민하면서 설계해야 함
데이터 베이스 생성하고 테이블을 만들어야 하는데,
이때 코드 아래와 같음 (설정을 하고 apply를 한 경우 노출되기도 함)
CREATE TABLE mywork.`student_info` (
student_id VARCHAR(10) NOT NULL,
student_name VARCHAR(50) NOT NULL,
grade INT NOT NULL,
class INT NOT NULL,
gender VARCHAR(10) NOT NULL,
age INT NOT NULL,
date_of_entrance DATETIME NOT NULL,
PRIMARY KEY (`student_id`),
UNIQUE INDEX student_id_UNIQUE (`student_id` ASC) VISIBLE);
-PK(프머, 기준이 되는 컬럼)
-NN(NOT NULL, 데이터 필수 항목)
-Default/Expression -> notnull일때, 입력 안해도 자동으로 들어가는 데이터
create table highschool_students
( student_no VARCHAR(20),
student_name VARCHAR(100),
grade TINYINT,
class VARCHAR(50),
gender VARCHAR(20),
age SMALLINT,
enter_date DATE
);
ERORR 1064 코드를 잘못 짠 것, 마지막 컬럼인 경우 ,를 붙이지 않고 ); 해야 하는데 실수함!
SQL text file 이 열리지 않음
(나) sql text file 이 안열려서 메모장으로 열어서 복붙하는 것으로 해결함
(강사님)
메모장 우측하단 ansi 인 것 확인하고, 다른이름으로 저장, 인코딩을 UTF -8 로 실행함
테이블 만들 때, PK 사용법 3가지
1) not null 옆 정보로 삽입
create table highschool_students
(
student_no varchar(20) not null primary key,
student_name varchar(100) not null,
grade tinyint null,
class varchar(50) null,
gender varchar(20) null,
age smallint null,
enter_date date
);
2) 코드 마지막 줄 삽입
(생략)
age smallint null,
enter_date date,
primary key(student_no)
);
3) constraint primary key로 기본키 설정하기.
(생략)
age smallint null,
enter_date date,
constraint primary key(student_no)
);
pk 키 삭제할 경우, 해당 필드가 사라지는 게 아니고 pk로 설정해둔 것만 삭제됨
alter table (테이블명) drop primary key
만든 테이블에 데이터 삽입하기
insert into `테이블명` (컬럼명1, 컬럼명2...) values (컬럼1 데이터, 컬럼2 데이터);
여기서, 테이블 명은 백틱으로 사용해야 함
테이블에 데이터 직접 넣기
use mywork;
select * from highschool_students;
DESC highschool_students;
insert into highschool_students (student_no, student_name, grade, class, gender, age, enter_date) #컬럼명을 순서대로 넣어야 함
values
('TB0002', '홍길동' , 1, '11반', '남자', 20, '2024-03-02'),
('TB0002', '홍길동' , 1, '11반', '남자', 20, '2024-03-02'),
('TB0002', '홍길동' , 1, '11반', '남자', 20, '2024-03-02'),
('TB0003', '둘리', 2, '3반', '남자', 100, '2024-03-02');
중복으로 넣었을 때
DELETE FROM highschool_students WHERE student_no = 'TB0002' LIMIT 1; 로 삭제가능
+)
use mywork;
select * from highschool_students;
=
select * from mywork.highschool_students;