데이터베이스론 [4] solo실습1
1. 테이블 생성
create table Dept (
id tinyint unsigned not null auto_increment,
pid tinyint unsigned not null default 0 comment '상위부서id',
dname varchar(31) not null,
PRIMARY KEY (id)
);
create table Emp(
id int unsigned not null auto_increment,
ename varchar(31) not null,
dept tinyint unsigned not null,
salary int not null default 0,
primary key(id),
foreign key(dept) references Dept(id)
);
- 이렇게 두 개의 테이블을 생성하였다.
2. INSERT로 정보 삽입
insert into Dept(pid, dname) values (0, '영업부'), (0, '개발부');
select * from Dept;
insert into Dept(pid, dname)
values (1, '영업1팀'),
(1, '영업2팀'), (1, '영업3팀'),
(2, '서버팀'), (2, '클라이언트팀');
- 처음에 데이터를 넣어주고, select 로 Dept의 모든 정보를 조회해서 잘 들어갔는지 확인 후, 나머지 값들을 다시 넣어주었다.
3. 문제 발생
insert into Dept(pid, dname) values (0, '영업부'), (0, '개발부');
- 실수로 위 코드를 다시 실행해서 테이블에 똑같은 정보가 삽입되어버렸다.
- 구글링을 해서
DELETE FROM Dept WHERE id = 8,9;
를 했다가 id를 하나씩 입력했더니 코드가 실행이 되어서 다시 지워주었다.
4. 첫번째 function 생성할 때 문제 발생
- SCHEMAS 에서
functions
를 클릭해서 처음에는 오타도 수정하고 하였는데 영상처럼 SQL script가 적용되지 않았다. 그래서 에러코드를 구글링을 해보았는데,
show global variables like 'log_bin_trust_function_creators';
를 했을 때 값이 off면 안된다고해서 SET GLOBAL log_bin_trust_function_creators = 1;
로 on으로 재 설정을 해주었다. 그러다가 workbench 프로그램이 튕겨서 다시 들어갔는데, function에서 작성했던 코드가 사라졌다.
- 그런데도 문법오류가 있다고 에러가 떠서 자세히 보니 function name을 백틱으로 감싸야하는데 작은 따옴표로 감싸고 있어서 apply가 되지 않았다.
- 이렇게 에러를 해결하고
- 적용에 성공하였다.
5. use a 'f_rand1' function
select f_rand1('김이박');
을 해서 쿼리문을 실행시켜보면,
- 이렇게 랜덤으로 김,이,박중 하나씩이 나왔다.
- 따옴표 안에 '1234567'을 하면 1~7중 하나가 나왔다.
6. 두번째 function 생성
CREATE FUNCTION `f_randname` ()
RETURNS varchar(31)
BEGIN
declare v_ret varchar(31);
declare v_lasts varchar(255) default '김이박조최전천방지마유배원';
declare v_firsts varchar(255) default '순신세종성호지혜가은세호윤국가나다라마바사아자차카결찬희'
set v_ret = concat( f_rand1(v_lasts), f_rand1(v_firsts), f_rand1(v_firsts)
RETURN v_ret;
END
- 이렇게 function을 작성하고
select f_randname();
을 해보면 임의 이름이 출력된다.
Emp table에 직원정보 insert하기
-
insert into Emp(ename, dept, salary) values (f_randname(), f_rand1('34567'), f_rand1('123456789') * 100);
-
select * from Emp;
- 이렇게 두 명의 가상 인물의 정보가 insert되었다.
위에서 만든 function을 반복하게 할 procedure만들기
- 좌측에 Stored Procedures 우클릭해서 create들어가기
CREATE PROCEDURE `sp_test_emp` (_cnt int)
BEGIN
declare v_idx int default 0;
while v_idx < _cnt
do
insert into Emp(ename, dept, salary) values (f_randname(), f_rand1('34567'), f_rand1('123456789') * 100);
set v_idx = v_idx + 1;
end while;
END
- apply 한 후에
call sp_test_emp(10);
입력
select * from Emp;
입력 해보면
- 기존에 2명을 넣은 것에 추가로 10명이 추가되어서 총 12명의 정보가 insert되었다.
-call sp_test_emp(250);
을 입력해서 250명의 정보를 추가하였다.
부서별로 인원 분배하기
select dept, count(*) from Emp group by dept;
입력을 하였다
Author And Source
이 문제에 관하여(데이터베이스론 [4] solo실습1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@hunsm4n/데이터베이스론-4-solo실습1
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
create table Dept (
id tinyint unsigned not null auto_increment,
pid tinyint unsigned not null default 0 comment '상위부서id',
dname varchar(31) not null,
PRIMARY KEY (id)
);
create table Emp(
id int unsigned not null auto_increment,
ename varchar(31) not null,
dept tinyint unsigned not null,
salary int not null default 0,
primary key(id),
foreign key(dept) references Dept(id)
);
insert into Dept(pid, dname) values (0, '영업부'), (0, '개발부');
select * from Dept;
insert into Dept(pid, dname)
values (1, '영업1팀'),
(1, '영업2팀'), (1, '영업3팀'),
(2, '서버팀'), (2, '클라이언트팀');
- 처음에 데이터를 넣어주고, select 로 Dept의 모든 정보를 조회해서 잘 들어갔는지 확인 후, 나머지 값들을 다시 넣어주었다.
3. 문제 발생
insert into Dept(pid, dname) values (0, '영업부'), (0, '개발부');
- 실수로 위 코드를 다시 실행해서 테이블에 똑같은 정보가 삽입되어버렸다.
- 구글링을 해서
DELETE FROM Dept WHERE id = 8,9;
를 했다가 id를 하나씩 입력했더니 코드가 실행이 되어서 다시 지워주었다.
4. 첫번째 function 생성할 때 문제 발생
- SCHEMAS 에서
functions
를 클릭해서 처음에는 오타도 수정하고 하였는데 영상처럼 SQL script가 적용되지 않았다. 그래서 에러코드를 구글링을 해보았는데,
show global variables like 'log_bin_trust_function_creators';
를 했을 때 값이 off면 안된다고해서 SET GLOBAL log_bin_trust_function_creators = 1;
로 on으로 재 설정을 해주었다. 그러다가 workbench 프로그램이 튕겨서 다시 들어갔는데, function에서 작성했던 코드가 사라졌다.
- 그런데도 문법오류가 있다고 에러가 떠서 자세히 보니 function name을 백틱으로 감싸야하는데 작은 따옴표로 감싸고 있어서 apply가 되지 않았다.
- 이렇게 에러를 해결하고
- 적용에 성공하였다.
5. use a 'f_rand1' function
select f_rand1('김이박');
을 해서 쿼리문을 실행시켜보면,
- 이렇게 랜덤으로 김,이,박중 하나씩이 나왔다.
- 따옴표 안에 '1234567'을 하면 1~7중 하나가 나왔다.
6. 두번째 function 생성
CREATE FUNCTION `f_randname` ()
RETURNS varchar(31)
BEGIN
declare v_ret varchar(31);
declare v_lasts varchar(255) default '김이박조최전천방지마유배원';
declare v_firsts varchar(255) default '순신세종성호지혜가은세호윤국가나다라마바사아자차카결찬희'
set v_ret = concat( f_rand1(v_lasts), f_rand1(v_firsts), f_rand1(v_firsts)
RETURN v_ret;
END
- 이렇게 function을 작성하고
select f_randname();
을 해보면 임의 이름이 출력된다.
Emp table에 직원정보 insert하기
-
insert into Emp(ename, dept, salary) values (f_randname(), f_rand1('34567'), f_rand1('123456789') * 100);
-
select * from Emp;
- 이렇게 두 명의 가상 인물의 정보가 insert되었다.
위에서 만든 function을 반복하게 할 procedure만들기
- 좌측에 Stored Procedures 우클릭해서 create들어가기
CREATE PROCEDURE `sp_test_emp` (_cnt int)
BEGIN
declare v_idx int default 0;
while v_idx < _cnt
do
insert into Emp(ename, dept, salary) values (f_randname(), f_rand1('34567'), f_rand1('123456789') * 100);
set v_idx = v_idx + 1;
end while;
END
- apply 한 후에
call sp_test_emp(10);
입력
select * from Emp;
입력 해보면
- 기존에 2명을 넣은 것에 추가로 10명이 추가되어서 총 12명의 정보가 insert되었다.
-call sp_test_emp(250);
을 입력해서 250명의 정보를 추가하였다.
부서별로 인원 분배하기
select dept, count(*) from Emp group by dept;
입력을 하였다
Author And Source
이 문제에 관하여(데이터베이스론 [4] solo실습1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@hunsm4n/데이터베이스론-4-solo실습1
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
insert into Dept(pid, dname) values (0, '영업부'), (0, '개발부');
DELETE FROM Dept WHERE id = 8,9;
를 했다가 id를 하나씩 입력했더니 코드가 실행이 되어서 다시 지워주었다.- SCHEMAS 에서
functions
를 클릭해서 처음에는 오타도 수정하고 하였는데 영상처럼 SQL script가 적용되지 않았다. 그래서 에러코드를 구글링을 해보았는데, show global variables like 'log_bin_trust_function_creators';
를 했을 때 값이 off면 안된다고해서SET GLOBAL log_bin_trust_function_creators = 1;
로 on으로 재 설정을 해주었다. 그러다가 workbench 프로그램이 튕겨서 다시 들어갔는데, function에서 작성했던 코드가 사라졌다.
- 그런데도 문법오류가 있다고 에러가 떠서 자세히 보니 function name을 백틱으로 감싸야하는데 작은 따옴표로 감싸고 있어서 apply가 되지 않았다.
- 이렇게 에러를 해결하고
- 적용에 성공하였다.
5. use a 'f_rand1' function
select f_rand1('김이박');
을 해서 쿼리문을 실행시켜보면,
- 이렇게 랜덤으로 김,이,박중 하나씩이 나왔다.
- 따옴표 안에 '1234567'을 하면 1~7중 하나가 나왔다.
6. 두번째 function 생성
CREATE FUNCTION `f_randname` ()
RETURNS varchar(31)
BEGIN
declare v_ret varchar(31);
declare v_lasts varchar(255) default '김이박조최전천방지마유배원';
declare v_firsts varchar(255) default '순신세종성호지혜가은세호윤국가나다라마바사아자차카결찬희'
set v_ret = concat( f_rand1(v_lasts), f_rand1(v_firsts), f_rand1(v_firsts)
RETURN v_ret;
END
- 이렇게 function을 작성하고
select f_randname();
을 해보면 임의 이름이 출력된다.
Emp table에 직원정보 insert하기
-
insert into Emp(ename, dept, salary) values (f_randname(), f_rand1('34567'), f_rand1('123456789') * 100);
-
select * from Emp;
- 이렇게 두 명의 가상 인물의 정보가 insert되었다.
위에서 만든 function을 반복하게 할 procedure만들기
- 좌측에 Stored Procedures 우클릭해서 create들어가기
CREATE PROCEDURE `sp_test_emp` (_cnt int)
BEGIN
declare v_idx int default 0;
while v_idx < _cnt
do
insert into Emp(ename, dept, salary) values (f_randname(), f_rand1('34567'), f_rand1('123456789') * 100);
set v_idx = v_idx + 1;
end while;
END
- apply 한 후에
call sp_test_emp(10);
입력
select * from Emp;
입력 해보면
- 기존에 2명을 넣은 것에 추가로 10명이 추가되어서 총 12명의 정보가 insert되었다.
-call sp_test_emp(250);
을 입력해서 250명의 정보를 추가하였다.
부서별로 인원 분배하기
select dept, count(*) from Emp group by dept;
입력을 하였다
Author And Source
이 문제에 관하여(데이터베이스론 [4] solo실습1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@hunsm4n/데이터베이스론-4-solo실습1
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
select f_rand1('김이박');
을 해서 쿼리문을 실행시켜보면, CREATE FUNCTION `f_randname` ()
RETURNS varchar(31)
BEGIN
declare v_ret varchar(31);
declare v_lasts varchar(255) default '김이박조최전천방지마유배원';
declare v_firsts varchar(255) default '순신세종성호지혜가은세호윤국가나다라마바사아자차카결찬희'
set v_ret = concat( f_rand1(v_lasts), f_rand1(v_firsts), f_rand1(v_firsts)
RETURN v_ret;
END
- 이렇게 function을 작성하고
select f_randname();
을 해보면 임의 이름이 출력된다.
Emp table에 직원정보 insert하기
-
insert into Emp(ename, dept, salary) values (f_randname(), f_rand1('34567'), f_rand1('123456789') * 100);
-
select * from Emp;
- 이렇게 두 명의 가상 인물의 정보가 insert되었다.
위에서 만든 function을 반복하게 할 procedure만들기
- 좌측에 Stored Procedures 우클릭해서 create들어가기
CREATE PROCEDURE `sp_test_emp` (_cnt int)
BEGIN
declare v_idx int default 0;
while v_idx < _cnt
do
insert into Emp(ename, dept, salary) values (f_randname(), f_rand1('34567'), f_rand1('123456789') * 100);
set v_idx = v_idx + 1;
end while;
END
- apply 한 후에
call sp_test_emp(10);
입력
select * from Emp;
입력 해보면
- 기존에 2명을 넣은 것에 추가로 10명이 추가되어서 총 12명의 정보가 insert되었다.
-call sp_test_emp(250);
을 입력해서 250명의 정보를 추가하였다.
부서별로 인원 분배하기
select dept, count(*) from Emp group by dept;
입력을 하였다
Author And Source
이 문제에 관하여(데이터베이스론 [4] solo실습1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@hunsm4n/데이터베이스론-4-solo실습1
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
insert into Emp(ename, dept, salary) values (f_randname(), f_rand1('34567'), f_rand1('123456789') * 100);
select * from Emp;
- 이렇게 두 명의 가상 인물의 정보가 insert되었다.
- 좌측에 Stored Procedures 우클릭해서 create들어가기
CREATE PROCEDURE `sp_test_emp` (_cnt int)
BEGIN
declare v_idx int default 0;
while v_idx < _cnt
do
insert into Emp(ename, dept, salary) values (f_randname(), f_rand1('34567'), f_rand1('123456789') * 100);
set v_idx = v_idx + 1;
end while;
END
- apply 한 후에
call sp_test_emp(10);
입력 select * from Emp;
입력 해보면- 기존에 2명을 넣은 것에 추가로 10명이 추가되어서 총 12명의 정보가 insert되었다.
-call sp_test_emp(250);
을 입력해서 250명의 정보를 추가하였다.
- 기존에 2명을 넣은 것에 추가로 10명이 추가되어서 총 12명의 정보가 insert되었다.
부서별로 인원 분배하기
select dept, count(*) from Emp group by dept;
입력을 하였다
Author And Source
이 문제에 관하여(데이터베이스론 [4] solo실습1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@hunsm4n/데이터베이스론-4-solo실습1
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
select dept, count(*) from Emp group by dept;
입력을 하였다Author And Source
이 문제에 관하여(데이터베이스론 [4] solo실습1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hunsm4n/데이터베이스론-4-solo실습1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)