[SQL]where, group by 실습1
1. 다음과 같은 스키마를 보고 student_info 테이블을 생성하는 명령어를 작성하라.
create table student_info(
stu_no char(10) not null,
stu_name char(10) not null,
sex char(2) not null,
birth_rate char(6) not null,
fee_enter int,
address varchar(100),
phone_no varchar(14),
primary key(stu_no)
);
desc student_info; # 스키마 확인
-
varchar: 가변형 char형.
-
char : 정형 char형. 읽는 속도가 더 빠르다.
-
not null : null을 허용하지 않음.
2. 1번에서 생성한 student_info 테이블에 다음 5개의 데이터를 삽입하는 명령어를 작성하고 student_info 테이블의 모든 데이터를 출력하라
(workbench 사용할 경우 여러 쿼리 실행시 **ctrl + shift+ enter**로 실행가능)
insert into student_info values('20001001', '김유신', '남', '811007', 3000000, '마포', '011-617-1290')
insert into student_info values('20001001', '김유신', '남', '811007', 3000000, '마포', '011-617-1290');
insert into student_info values('20001015', '박도준', '남', '780116', 2500000, '양재', '011-611-9884');
insert into student_info values('20001021', '이상길', '남', '750819', null , '강남', null );
insert into student_info values('20041002', '김유미', '여', '830207', 1000000, '인천', '010-617-1290');
insert into student_info values('20041007', '정인정', '여', '830315', 2000000, '과천', '018-641-9304');
select * from student_info; # table 확인
3. student_info의 테이블의 null 값이 존재하는 데이터를 삭제하는 명령어를 작성하여라
```sql
# Error Code: 1175 발생시 다음 코드 실행하고 삭제 진행
set sql_safe_updates=0;
delete from student_info where phone is null;
```
4. phone_no가 011으로 시작하는 데이터의 stu_no, stu_name, fee_enter을 조회하고 fee_enter 기준으로 오름차순 정렬하라.
select stu_no, stu_name, fee_enter from student_info where phone_no like '011%' order by fee_enter asc;
5. fee_enter의 값이 2000000 이상 ~ 3000000 이하의 값을 가지는 데이터의 stu_name, fee_enter 를 조회하고 fee_enter는 숫자 3번째 자리마다 ,를 표시하라
select stu_name, format(fee_enter,'###,###') as formatted_fee_enter from student_info where fee_enter between 2000000 and 3000000;
6. 성별을 기준으로 fee_enter의 총합을 구하고 다음과 같이 출력하라
select sex, sum(fee_enter) as sum_fee_enter from student_info group by sex;
- 성별을 기준으로 fee_enter의 최댓값을 구하라
select sex, max(fee_enter) as max_fee_enter from student_info group by sex;
😎심화
8. 생년월일(birth_date)이 1980년 이후인 사람들의 fee_enter의 평균값을 조회하는 명령어를 작성하라.
select avg(fee_enter) from student_info where left(birth_rate, 2)>80;
9. MySQL 사용시 테이블의 내용을 제거 하기 위한 명령으로 'DELETE' 와 'TRUNCATE' 가 있다.
student_info의 모든 데이터를 삭제하고 delete와 truncate의 차이점을 설명하라.
# savepoint aa;
delete from student_info;
select * from student_info;
delete : rollback 명령어 통해 savepoint로 복구 가능
truncate : 불가능
(autocommit 해제해야 가능)
Author And Source
이 문제에 관하여([SQL]where, group by 실습1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@crosstar1228/SQLwhere-group-by-실습1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)