본문 바로가기
낙서장/SQL

select,insert .....등

by "뭉치" 2021. 8. 10.
728x90
select * from tabs;

create table member(--테이블 생성 할때는 이렇게 하면 됩니다.  create 데이타 베이스 member25 이렇게 주면 데이타 베이스 생성이다.
irum varchar(20),
address varchar(50),
phone varchar(20), --varchar는 문자열이다.  최적화 시킬수 있지만 속도는 좀 떨어 진다. 
gender char(5) --길이 다섯 바이트로 고정. 대신 검색 속도는 빠름. 단점으로는 두글자 밖에 않쓰면 뒤에 세개는 공백으로 들어간다.

);
-- 4대 쿼리 중에서 select 선택 입니다. 가장 많이 쓰는 것입니다. * 표시는 모든 이라는 표시 입니다.
select * from member;
--컬럼의 대한 모든 이라는 표시 입니다. 모든 컬럼을 다 보여 달라는 것입니다. 현장에서는 *는 잘 쓰지 않습니다.
--실제 프로그램에서는 * 표시를 극도로 제한 하고 있습니다.
--from 은 맴버라는 컬럼에서 부터 모든 샐럭터를 보여 달라는 뜻입니다.

--데이타 입력되야 하니까. 집어넣어달라 어디에다가? 맴버라는 것에다가 그 맴버는 다음의 네가지를 가지고 있다.순서대로 대입해야 합니다.
 
insert into member (irum,address,phone,gender)
values('홍길순','대전','010-3333-1111','여');

--수많은 데이타 중에 박원기만 찾아볼게요
--모든 컬럼을 select하겠다 맴버에서 이름에 있는 값 박원기.를
select * from member where irum='박원기';
--요렇게 하면 어드레스랑 젠더는 보이지 않는다.
select irum,phone from member where irum = '박원기';

--삭제 하는 겁니다~
delete from member where irum = '홍길순';
--수정을 해 보겠습니다. 홍길순의 주소를 대전에서 -> 부산으로 변경
--수정할거야 맴버 중에 주소를.. 부산으로 홍길순이란 이름이 있는 것을 변경할거야.
update member set address = '부산' where irum = '홍길순';
--여지껏 작업한걸 취소해 달라는 겁니다.  (작업 취소)
rollback
--작업을 완전히 고정 시켜 버리는거. 이제 완전히 끝내겠다.(작업 완료)
commit
--오라클은 작업 완료를 사용자가 수정으로 해야 되는게 특성입니다.
--작업 완료를 해주지 않으면 나중에 들어왔을때 모든것이 다 날라갑니다.
 

-------------------------------------------------------------------------------------



select * from tabs;
select * from dba_data_files;
select * from dba_users;
--사용자 등록
create user yi identified by "1234";
commit

--권한 부여
grant connect,create table, resource to yi -- 로그인을 할 수 있는 권한을 부여 하였다. create table <- 테이블을 만들 수 있는 권한을 주었다.

drop user yi
select * from dba_users; -- drop으로 user yi를 업애 버렸다. 
grant select on member to yi --맴버 테이블을 셀렉트 할 수 있는 권한을 yi씨 한테 주었다.
grant dba to yi -- 어드민 권한을 부여 받은 것입니다. 일반 유저로 접근하여 시스템을 만지면 됩니다. 
select * from member;

select * from system.member



  

-------------------------------------------------------------------------------------



create table member (
    mid varchar(10),
    irum varchar(20),
    gender varchar(5),
    phone varchar(15),
    address varchar(40),
    grade varchar(4)
);
--테이블 구조 확인
desc member
--데이타를 집어넣는 키워드는 테이블을 만든 순서가 똑같다면 가로안은 생략가능. 
 insert into member (mid,irum,gender,phone,address,grade)--inser into(약속된 키워드) 다음에 나오는 명령어가 테이블 명입니다.
 values('1009','한고은','여','321-0987','인천','d'); --값들을 집어 넣는 겁니다. 위에 ()안에 나열된 순서랑 같아야 합니다.
 
 --데이터 확인
 select * from member;
 
 select * from member;
 --video 테이블 생성
 create table video (
    mid varchar(10),
    jemok varchar(30),
    grade varchar(10),
    rentDate date,
    returnDate date,
    amt number(5)
    );
insert into video ( mid,jemok,grade,rentDate,returnDate,amt)
values('1009','뽀뽀뽀 친구','성인','2002-01-30','2002-01-30','1000');

select *from video;


--수강생 (student)table 생성
create table student (
    mid varchar(10),
    irum varchar(20),
    gender varchar(5),
    school varchar(30),
    classYear number(2),
    rDate date
    );
   
insert into student (mid,irum,gender,school,classYear,rDate)
values('1009','한고은','여','한서대','3','2000.11.30');

select *from student;   

--score(성적처리 table) 생성
create table score(
    mid varchar(10),
    exam varchar(20),
    kor number(3),
    mat number(3),
    eng number(3),
    comp number(3),
    etc number(3)
    );
insert into score (mid,exam,kor,mat,eng,comp,etc)
values('1009','기말고사','80','80','60','80','90');
   
select *from score;



-------------------------------------------------------------------------------------



select * from member; -- 3)번 선택해달라. 모든 (*) 컬럼들의 대한 맴버로 부터 (맴버로 부터 모든 컬럼을 선택해주세요. 보여주세요)
select mid,irum from member; -- 맴버의 mid,irum 컬럼을 보여줘.
--맴버테이블의 대한 구조를 한번 볼까요?
desc member; --맴버 테이블의 구조를 보여 주세요. 2)번.
--컬럼을 추가 시킬 겁니다.
--구조를 봐꿀 때는 무조건 alter
alter table member
add manager varchar(20); --1)번
--컬럽 제거
alter table member drop column manager;

--기존의 데이타의 특정 항목을 조회
select *from member
where irum = '2AM'
--데이타 수정 쿼리 추가 합니다.
update member
set gender = '여' --set 절 column이름 쓰고 = ' ' 입니다.
where irum = '카라';

rollback -- 방금 작업한 것을 뒤로 돌리겠습니다.트렌젝션이 자동인 툴은 롤백이 않됩니다. 툴의 특성을 잘 보셔야 합니다.
commit;

--문제1] 회원의 등급이 d 인 사람의 주소를 서울로 변경하시오.


update member
set address = '서울'
where grade = 'd';

commit;

--문제2] 주소가 부산인 사람의 등급을 b로, 성별을 남자로 변경하시오.

select * from member where address = '부산'

update member
set grade = 'b',gender = '남'
where address = '부산'







--문제 3] 남자 데이터를 삭제
select * from member where gender ='남' --1)삭제할 내용을 눈으로 먼저 확인
delete from member where gender ='남' --2)다음의 조건을 가진 데이타를 삭제
select *from member --3)그리고 확인
rollback
select *from member

--문제 4] 등급이 a 이거나 남자인 회원을 조회하시오.(or)
select *from member where grade = 'a'or gender = '남';

--문제 5] 국어 성적이 기말고사 성적이 60 이상인 데이터 조회
select *from score where exam = '기말고사' and kor >= '60'

--문제 6] 회원번호가 1007인 사람의 월말고사 성적 조회
select *from score where exam = '월말고사' and mid = '1007'

--문제 7] 학생 성이 "김"인 데이터를 조회 하시오. %의 사용법 이 핵심이다. ㅎ
select *from member where irum like '김%'

--문제 8]전화번호에 4가 들어가 있는 회원 명단을 조회하시오.
select *from member where phone like '%4%'

--문제 9] 전화번호에 '4'가 들어가 있는 부산 지역의 회원을 조회 하시오.
select *from member where phone like '%4%' and address like '부산%' -- and address = '부산'

--문제 10] 회원의 등급이 a,또는 b인 회원을 조회 하시오.
select *from member where grade in ('a','b'); -- where grade ='a' or grade = 'b'

--문제 11] 주소지가 부산 이거나 구미인 회원을 조회 하시오.
select *from member where address in ('부산','구미');

--문제 12] ( between ) video, 금액이 500~1000 인 비디오 목록을 조회 하시오.
select *from video where amt between 500 and 1000 --숫자 같은 경우에는 따옴표를 붙이면 나중에 오류가 날수 있다.

--문제 13] 성적의 합계가 300~350 인 자료를 조회 하시오.
select *from score where kor+mat+eng+comp+etc between 300 and 350

select distinct exam from score -- 중복되지 않게 출력해줍니다.
select distinct jemok from video

select * from video order by jemok -- video의 제목을 오름 차순으로 정렬
select * from video order by jemok desc -- video의 제목을 내림차순으로 정렬

select *from video order by jemok, amt desc





select * from score;
--문제 14] 시험종류별 평균을 계산. group by 절의 대한 이해를 한다.
select exam, avg(kor+eng+mat+comp+etc) as 평균 from score --as [평균]  []은 타이틀 제목입니다.
group by exam;

--문제 15] 회원의 명수를 지역별로 카운트 하시오.
select * from member
select address, count(address) as 카운트 from member
group by address;







--문제 16] 회원의 등급별 인원수를 카운트 하시오.
select *from member
select grade,count(grade) as 등급 from member
group by grade
--문제 17] 학교별 남학생의 인원수는 ???(student)
select * from student
select school, count(school) as 남자 from student
where gender = '남'
group by school

--문제 18] 성별, 학년별 인원수는 ???
select * from student
select gender,classYear, count(gender)from student -- count(*)
--where gender = '여' or gender = '남'
group by gender,classYear

--문제 19] 비디오 등급별 대여금액합계는???
select * from video
select grade , sum(amt) from video
group by grade

--문제 20] 비디오, 등급별, 제목별 대여금액 합계는???
select * from video
select grade,jemok,sum(amt) from video
group by grade,jemok

select last_day(sysdate) from dual
728x90

'낙서장 > SQL' 카테고리의 다른 글

스키마  (0) 2021.08.10
조회수 카운트 업  (0) 2021.08.10
데이터 조회  (0) 2021.08.10
데이터 수정  (0) 2021.08.10
데이터의 삭제  (0) 2021.08.10

댓글