본문 바로가기

데이터 베이스/MySQL25

예제 소스 CREATE SCHEMA `haksa` ; use haksa; 학사 테이블 만들기#학과테이블create table department(dept_code int(2) Not null, #학과번호dept_name char(30) Not null, #학과명dept_ename varchar(50), #학과영문이름Create_date date default null, #학과생성날짜primary key (dept_code))engine = innoDB; #우편번호테이블create table post(post_no varchar(7) Not null, #우편번호post_dong char(30) Not null, #동이름post_address char(60) Not null, #주소ddd char(4), #DDD 전화.. 2017. 10. 30.
mysql 사용자 추가 제거 권한 부여 MySQL에서 사용자를 추가/제거 하는 방법과 권한을 부여하는 방법입니다. 접속하기$ mysql -u root -p 사용자 확인하기mysql database를 선택하고, host, user, password를 확인합니다. mysql >use mysql; mysql > select host, user, password from user; 여기서 host는 localhost, '%'가 있습니다. 사용자 아이디 뒤에 @localhost, '%'에 따라서 외부 접근이 허용되는 권한을 줄 수 있습니다. localhost는 내부접근, '%'는 외부 접근입니다. 사용자 추가 (권한 추가)사용자 아이디를 만드는 방법, 비밀번호 추가, 외부접근 허용userid에 추가하고자 하는 아이디를 입력하면 됩니다. identifi.. 2017. 8. 23.
<실습> 3.mysql join&outer join & 프로그래밍 -- join-- inner join 은 두테이블 양쪽에 다 데이터가 있는 것만 출력 한다. select *from buyTbl inner join userTbl -- userTbl 과 join 해라 on buyTbl.userID = userTbl.userID -- 설정해주기WHERE buyTbl.userID = 'JYP'; -- 오류 예)-- 전체를 다 출력할때는 해당 칼럼이 어느 테이블의 칼럼인지 명시해 줘야 한다.select userID, name, prodName, addr, mobile1 + mobile2 as '연락처'from buyTbl inner join userTbl -- userTbl 과 join 해라 on buyTbl.userID = userTbl.userID; -- 설정해주기 -- .. 2017. 5. 12.
<실습> 2.mysql 내장함수(날짜,문자,숫자,JSON 등) 정리 -- 데이터 형식 -- 문자 데이터 형식 -- 날짜와 시간 데이터 형식 -- MYSQL 고급 / 내장함수 및 JSON 예제 -- 날짜 함수select cast('2020-10-19 12:23:21.123' AS DATE) as 'DATE' ;select cast('2020-10-19 12:23:21.123' AS TIME) as 'TIME' ;select cast('2020-10-19 12:23:21.123' AS DATETIME) as 'DATETIME' ; -- 변수SET @myVar1 =5;SET @myVar2 =3;SET @myVar3 =4.25;SET @myVar4 ='가수이름=>'; select @myVar1;select @myVar2 + @myVar3;select @myVar4, Name f.. 2017. 5. 11.
<실습> 1.mysql 기본 drop database if exists sqlDB; -- 만약 sqlDB가 있으면CREATE database sqlDB; use sqlDB; create table userTbl -- 회원 테이블( userID CHAR(8) NOT NULL PRIMARY KEY, -- 사용자 ID (PK) name varchar(10) NOT NULL, -- 이름 birthYear INT NOT NULL, -- 출생년도 addr char(2) not null, -- 지역 mobile1 char(3), -- 폰번호 앞자리 3 자리 mobile2 char(8), height SMALLINT, -- 키 mDate DATE -- 가입일); create TABLE buyTbl -- 회원 구매 테이블 (( num int aut.. 2017. 5. 10.
MYSQL 트리거&TRIGGER 예제&문제 17 트리거 트리거는 테이블에 삽입 , 수정, 삭제등의 작업을 할때 자동으로 작동되는 개체로 프로시저와 비슷한 모양을 갖는다.하지만 트리거에는 스토어드 프로시저와 달리 IN OUT 매개변수를 사용할 수도 없다. -- 테이블 생성 SELECT * FROM testTbl; create TABLE IF NOT EXISTS testTbl5(id INT, txt VARCHAR(10)); INSERT INTO testTbl5 VALUES(1,'EXID'); INSERT INTO testTbl5 VALUES(2,'AFTERS'); INSERT INTO testTbl5 VALUES(3,'IOI'); DROP TRIGGER IF EXISTS testTrg; DELIMITER //CREATE TRIGGER testTrg -- .. 2016. 12. 20.
MYSQL 커서&CURSOR 예제&문제 16 커서 커서는 테이블의 여러행을 쿼리한 후에, 쿼리의 결과인 행 집합을 한 행씩 처리하기 위한 방식 순서 : 파일을 연다 -> 처음 데이터를 읽는다. -> 파일의 끝까지 반복한다. -> 파일을 닫는다. 명령어 커서선언 DECLARE CURSOR 반복조건 선언 DECLARE CONTINUE HANDLER(더이상 읽을 행이 없을 경우에, 실행할 내용 설정) 커서 열기 OPEN 커서에서 데이터 가져오기 FETCH(LOOP ~ END LOOP 문으로 반복 구간 지정 ) 데이터 처리 커서닫기 -- 예제 테이블 생성 및 데이타 생성 CREATE TABLE Member ( userid VARCHAR(20), `point` INT) ENGINE = InnoDB ROW_FORMAT = DEFAULT; insert into.. 2016. 12. 20.
MYSQL 뷰&VIEW 예제&문제 15 MySQL 뷰 생성CREATE VIEW 뷰이름AS SELECT문 -- student 테이블로부터 모든 학생의 학번과 학년, 반을 가지고 있는 뷰 테이블을 생성하라 create view student_1as select * from student; select * from student_1; -- 등록한 학생의 학번과 등록년도에 대한 뷰테이블을 생성하라-- create view student_2as select s.stu_no, a.att_yearfrom student s, attend awhere s.stu_no = a.stu_no; select * from student_2; create view v_feeas select stu_no, fee_yearfrom feewhere fee_year is no.. 2016. 12. 19.
MYSQL 스토어드 함수 예제&문제 14 스토어드 함수 사용자가 직접 만들어서 사용하는 함수를 스토어드 함수라고 한다. 개요 DELIMITER $$CREATE FUNCTION NAME (PARAMETER)RETURNS 반환값; BEGIN 이 부분에 프로그래밍 코딩 ;RETURN반환값; END $$DELIMITER; SELECT NAME(); - 스토어드 함수는 프로시저와 달리 IN OUT 을 사용할수 없다. - 스토어드 함수의 파라미터는 모두 입력 파라미터로 사용된다. - 스토어드 함수는 RETURNS문으로 반환할 값의 데이터 형식을 지정하고, 본문 안에서는 RETURN 문으로 하나의 값을 반환 해야 한다. 스토어드 프로시저는 별도의 반환하는 구문이 없고 OUT 파라미터를 이용해서 값을 반환 할 수 있다. - 스토어드 프로시저는 CALL 로 호.. 2016. 12. 16.
MYSQL procedure&프로시저 예제&문제 13 프로시져는 쿼리문의 집합이다. -- 형태-- -- DELIMITER $$-- -- CREATE PROCEDURE NAME (IN OR OUT PARAMETER)-- BEGIN-- -- SQL QUERY-- -- END $$-- -- DELIMITER ;-- -- CALL NAME(); -- EX) DROP PROCEDURE IF EXISTS STUDENT;DELIMITER //CREATE PROCEDURE STUDENT()BEGINSELECT * FROM STUDENT;END //DELIMITER; CALL STUDENT(); -- ------------------------------- 프로시져의 수정 ALTER PROCEDURE -- 프로시져의 삭제 DROP PROCEDURE -- 배개변수의 이용 I.. 2016. 12. 16.
MYSQL IF ELSE &CASE&동적sql 예제&문제 12 -- SQL PROGRAMING DELIMITER $$ CREATE PROCEDURE NAME()BEGIN SQL CODING END$$ DELIMITER; CALL NAME(); -- --------------------형식 IF THEN SQL 문장 ELSE SQL 문장 END IF; -- EX) DROP PROCEDURE IF EXISTS ifProc;DELIMITER $$CREATE PROCEDURE ifProc()BEGINDECLARE var1 INT; -- 변수 선언 SET var1 = 100; -- 변수에 값 대입 if var1 = 100 then -- 만약 @VAR1이 100 이하라면 select 'it is 100'; ELSE select 'it is not 100';end if;end .. 2016. 12. 15.
MYSQL join&inner join & outer join 예제&문제 11 CREATE table stdTbl(stdName varchar(10) not null primary key,addr char(4) not null); create table clubTbl( clubName VARCHAR(10) not null PRIMARY key,roomNo char(4) not null ); create TABLE stdclubTbl( num int AUTO_INCREMENT not null PRIMARY key,stdName VARCHAR(10) not null,clubName VARCHAR(10) not null,FOREIGN KEY(stdName) REFERENCES stdTbl(stdName),FOREIGN KEY(clubName) REFERENCES clubTbl(clubN.. 2016. 12. 14.
MYSQL join 예제&문제 10 -- 학적 테이블에 존재하는 학생들 중에서 아직 등록을 못한 학생이 있다. 각 학생에 대하여 학번, 이름, 등록년도, 학기, 이름, 등록년도, 학기, 학생이 등록한 납입금 총액을 출력하라 -- (x ???) select student.stu_no, stu_name, fee_year, fee_term, fee_payfrom student, feewhere not EXISTS (select student.stu_no, stu_name, fee_year, fee_term, fee_payfrom student, feewhere student.stu_no = fee.stu_no); -- -- 학적 테이블과 성적테이블을 크로스 조인하여 학번 , 이름, 성적년도, 학기를 출력하라 select student.stu_n.. 2016. 12. 14.
MYSQL 부속질의어 예제&문제 9 -- 적어도 한 번 이상 등록한 학생의 학번과 이름을 출력하라 -- (o)select DISTINCT s.stu_no, s.stu_namefrom student s, fee fwhere s.stu_no = f.stu_no;-- (o)select stu_no,stu_namefrom studentwhere EXISTS(select * from fee where student.stu_no=stu_no);-- 학생중에 동아리의 등급이 일반 회원인 학생의 학번과 이름, 주민번호를 출력하라 -- (o)select s.stu_no, s.stu_name, s.id_num from student s, circle cwhere s.stu_no= c.stu_noand c.president=2;-- (o)select stu_.. 2016. 12. 13.
MYSQL select 명령문의 조합 &union 예제&문제 8 -- select 명령문의 조합 -- 학년이 2, 3 학년인 학생의 학번과 이름을 출력하라select stu_no, stu_name,grade from student where grade in (2 ,3); select stu_no, stu_name,gradefrom studentwhere grade = 2unionselect stu_no, stu_name,gradefrom studentwhere grade = 3 -- 적어도 한번 이상 수강신청을 했거나 등록을 한 학생의 학번을 출력하라 select stu_no from attendunionselect stu_nofrom fee; -- 적어도 한번 동아리에 가입했거나,-- 등록을 하고 그리고 수강신청을 한 학생 중에서-- 이상의 조건 중 둘 또는 세가지.. 2016. 12. 12.
MYSQL order by 예제&문제 7 -- 등록한 학생중 등록일자가 2006에 해당하는 학생의 학번과 등록일자를 출력하라 . 이때 정렬순서는 학번으로 한다. -- select stu_no, fee_datefrom feewhere year(fee_date) = 2006order by stu_no; -- 등록한 학생에 대하여 학번과 전체 등록금의 총액을 출력하라. -- 이 때 출력 순서는 등록금 총액이다. select stu_no, sum(fee_total) a from fee group by stu_no order by a ; select stu_no, sum(fee_total) a from fee group by stu_no order by 2 ; -- -- 학적테이블의 영문이름의 첫 번째 문자가 j보다 큰 아스키 코드로 시작하는 학생의 학.. 2016. 12. 9.
MYSQL Groupby & having 예제 문제 6 -- student 테이블에 있는 학생의 입학년도별 그룹을 출력하라 -- select substring(stu_no,1,4) from student GROUP BY substring(stu_no,1,4); select substring(stu_no,1,4),stu_name from student GROUP BY substring(stu_no,1,4),stu_name; -- 각 입학년도별 총 학생 수를 출력하라 select substring(stu_no,1,4),count(stu_name) from student GROUP BY substring(stu_no,1,4); -- 등록한 학생에 대하여 학번, 등록횟수 , 각 학생이 받은 장학금의 전체 합을 출력하라 select stu_no, count(fee_y.. 2016. 12. 8.
MYSQL 통계 함수 SUM AVG MAX MIN 예제 문제 5 -- 2007년에 등록한 학생에 대한 학번, 년도, 학기, 장학금액, 납부총액(등록금-장학금),-- 납부금비율(납부총액/등록금*100), %를 출력하시오 SELECT * FROM FEE; SELECT STU_NO, FEE_YEAR, FEE_TERM, (FEE_TOTAL-JANG_TOTAL) AS '납부총액', ((FEE_TOTAL-JANG_TOTAL)/FEE_TOTAL*100) AS '납부금비율'FROM FEEWHERE FEE_YEAR = 2007; -- 등록 테이블에서 등록년도가 2006년인 학생의 학번, 이름을 출력하라 SELECT S.STU_NO, S.STU_NAMEFROM FEE F, STUDENT SWHERE F.STU_NO=S.STU_NOAND FEE_YEAR=2006; -- 등록테이블에서 2.. 2016. 12. 7.
MYSQL any&all&in&예제& WHERE 절 문제4 -- 수강신청을 한 학생의 학번과 이름을 출력하라 select DISTINCT s.stu_no,s.stu_namefrom attend a, student swhere a.stu_no= s.stu_no; select stu_no, stu_namefrom studentwhere stu_no in (select stu_no from attend where att_div='Y'); -- 김유미 (1983)보다 나이가 더 많은 각 학생의 학번과 이름 주민번호를 출력하라 select stu_no, stu_name, id_numfrom studentwhere birth_year (select max(fee_pay) from fee where stu_no=20001015); select DISTINCT stu_no f.. 2016. 12. 6.
MYSQL IN&BETWEEN&NULL&예제&FROM절 문제3 use haksa; -- 야간인 학생들의 학번과 이름을 출력하라select * from student; select stu_no, stu_namefrom studentwhere juya='야'; -- 휴대폰을 가지고 있는 학생의 학번과 이름 휴대폰 번호를 출력하라select stu_name, stu_no, phone_nofrom studentwhere phone_no is not null; -- 1985년 이후에 출생한 여학생의 학번, 이름, 주민등록번호를 출력하라 select stu_no, stu_name,id_numfrom studentwhere substring(id_num,8,1)=2and birth_year >1985; -- 휴대폰 번호가 016,018,019로 시작하는 휴대폰을 소지한 학생의 .. 2016. 12. 5.
MYSQL 기초문법&예제&문제 2 -- ifnull(fee_enter,0) use haksa; select * from fee; -- 등록금 총액을 구하라 (입학금 +수업료) select stu_no,(fee_enter+fee_price) from fee; select stu_no,(ifnull(fee_enter,0)+fee_price) from fee; 납입금 총액을 구하라 등록금총액 - 장학금 총액 select stu_no,fee_price-ifnull(jang_total,0) from fee; -- 우편본호가 150-051인 동지역과 지역전화번호를 구하라 select * from post;select concat(post_dong,ddd) from post where post_no = '150-051'; -- 학번이 20001001.. 2016. 12. 2.
MYSQL 기초문법&예제&문제 1 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816.. 2016. 12. 2.
MYSQL FULLTEXT INDEX & PARTION 검색기능향상&파티션 2016. 11. 30.
MYSQL 프로시져 PROCEDURE PROCEDURE=========================CREATE PROCEDURE 프로시저 이름()BEGIN SQL 1.... END ============================BGINSELECT * FROM table1;SELECT * FROM table2;END =========================== DELIMITER //CREATE PROCEDURE 프로시저 이름()BEGINSELECT * FROM table1;SELECT * FROMtable2;END// DELIMITER ; =========================== 프로시저 실행 CALL 저장_프로시저_이름(); 프로시져 예제 스토어드프로시저 프로시져 2016. 11. 29.
MYSQL 트리거 중첩트리거 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869트리거 중첩트리거 use shopdb; create table orderTbl - -구매 테이블(orderNo Int AUTO_INCREMENT PRIMARY key,userID VARCHAR(5),prodName VARCHAR(5),orderamount int); CREATE TABLE prodTbl --물품테이블( prodName VARCHAR(5), ACCOUNT int); create table deliverTbl( --배송테이블 deliverNo INT AUTO_INC.. 2016. 11. 29.