들어가기 전에
사람과 사람이 대화하기 위해서는 언어가 필요합니다.
DBMS에게 명령을 내릴 때도 특별한 명령이 필요합니다.
이 명령을 SQL이라고 합니다.
이번 시간엔 SQL에 대한 개념을 알아보고, 직접 데이터베이스 사용자와 데이터베이스를 생성해보도록 하겠습니다.
학습 목표
- SQL이 무엇인지 이해한다.
- MySQL에서 Database를 생성할 수 있다.
- MySQL에서 Database를 이용하는 계정을 생성하고, 권한을 부여할 수 있다.
- 생성한 Database에 sample데이터를 추가할 수 있다.
핵심 개념
- create database
- grant
- flush privileges
- select
학습하기
- 테이블 : RDBMS의 기본적 저장구조 한 개 이상의 column과 0개 이상의 row로 구성합니다.
- 열(Column) : 테이블 상에서의 단일 종류의 데이터를 나타냄. 특정 데이터 타입 및 크기를 가지고 있습니다.
- 행(Row) : Column들의 값의 조합. 레코드라고 불림. 기본키(PK)에 의해 구분. 기본키는 중복을 허용하지 않으며 없어서는 안 됩니다.
- Field : Row와 Column의 교차점으로 Field는 데이터를 포함할 수 있고 없을 때는 NULL 값을 가지고 있습니다.
현재 데이터베이스에 존재하는 테이블 목록 확인하기
Database를 선택 후, Database의 전체 테이블 목록을 출력합니다.
mysql> show tables;
Empty set (0.02 sec)
“empty set” 은 데이터베이스에 어떤 테이블도 아직 생성되지 않았다는 것을 알려줍니다.
SQL 연습을 위한 테이블 생성과 값의 저장
examples.sql을 다운로드 합니다. 링크 바로가기
터미널에서 examples.sql이 있는 폴더로 이동한 후, 다음과 같이 명령을 수행합니다.
명령을 수행한 후 암호를 입력합니다.
mysql -uconnectuser -p connectdb < examples.sql
examples.sql에는 연습을 위한 테이블 생성문과 해당 테이블에 값을 저장하는 입력문이 존재합니다.
mysql –uconnectuser -p connectdb
위의 명령으로 connectdb에 접속한 후 다음과 같이 명령을 수행합니다.
mysql> show tables
위의 명령은 접속한 db의 테이블 목록을 보는 명령입니다.
테이블 구조를 확인하기 위한 DESCRIBE 명령
table 구조를 확인하기 위해, DESCRIBE 명령을 사용할 수 있습니다.
짧게 DESC라고 사용해도 됩니다.
EMPLOYEE테이블의 구조를 확인해 봅시다.
mysql> desc EMPLOYEE;
생각해보기
하나의 DBMS에는 여러 개의 데이터베이스를 생성하고, 각각의 데이터베이스를 사용할 수 있는 사용자를 추가할 수 있습니다.
이번 시간에 만든 connectdb와 connectuser 말고, 추가로 데이터베이스를 생성하고, 생성한 데이터베이스를 사용한 사용자를 추가하고 로그인해보세요.
참고 자료
* examples.sql은 아래의 zip파일에서 받아주세요.
comment
24.04.05.
220225
210716
21.05.13
이 파일로 성공했습니다
버전문제인지 모르겠는데 sql 파일이 실행이 안 돼서 구글링 후 수정해서 실행시켰습니다.
혹시 저처럼 sql파일 다운에 문제있으신 분들이 있을 것 같아 파일 올려볼게요.
첨부된 examples(sql)를 다운로드 받으시고 zip 파일 내에 있는 .sql 확장자를 .html로 변경하고 크롬에서 실행시키면 github로 연결되네요.
그 안에 쿼리문들이 들어있습니다.
다운로드 링크도 404 나오고... 강의 바탕으로 쿼리문 예상해봤는데 이 정도 밖에 모르겠네요...
CREATE TABLE BONUS (
ename VARCHAR(10) NOT NULL,
job VARCHAR(10) NOT NULL,
sal decimal(7,2),
comm decimal(7,2),
CONSTRAINT BONUS_PK PRIMARY KEY (ename, job)
);
CREATE TABLE DEPARTMENT (
deptno int(11) NOT NULL,
name varchar(14),
location varchar(13),
CONSTRAINT DEPARTMENT_PK PRIMARY KEY (deptno)
);
CREATE TABLE EMPLOYEE (
empno int(11) NOT NULL,
name varchar(10),
job varchar(9),
boss int(11),
hiredate varchar(12),
salary decimal(7,2),
comm decimal(7,2),
deptno int(11),
CONSTRAINT EMPLOYEE_PK PRIMARY KEY (empno)
);
CREATE TABLE PROJECT (
);
CREATE TABLE PROJECT_PARTICIPATION (
);
CREATE TABLE ROLE (
role_id int(11) NOT NULL,
description varchar(100),
CONSTRAINT ROLE_PK PRIMARY KEY (role_id)
);
insert into ROLE (role_id, description) values ( 100, 'Developer');
insert into ROLE (role_id, description) values ( 101, 'Researcher');
insert into ROLE (role_id, description) values ( 100, 'Project manager');
CREATE TABLE SALARYGRADE (
);
mysql -u 사용자계정 -p DB이름 </위치/파일.sql
위 커맨드안되시는분들
source examples.sql하시면됩니다.
7년전 강의 자료인가요?
현재 공식사이트에서 배포되고 있는 mysql은 8버전인데..
강의 자료상 current_date 에 2013년이 찍히고 있고..
심지어 8.0 버전에서 적용되지 않는 sql 문도 보이고
(user 추가 및 권한 부여 등)
강의 내용을 시기에 맞춰 업데이트 되는게 아니라
다른 시기의 듣는 수강생들이 일일히 찾아서 댓글로 업데이트 하고 있네요
심지어 sql 파일이라고 올려놓은 파일은 html 파일이네요....ㅋ
첨부파일에는 examples.sql 압축열었는데 html코드들만 있습니다. 혹시 확인 부탁드립니다.
아래의 딸기님이 올려주신 github주소에서 db파일 다운로드 받아서 조치했습니다.
examples.sql 다운받는곳
https://github.com/perm4/examples
user 추가 안되는 분들
MySQL 8버전
create user 'connectuser'@'localhost' identified by 'connect123!@#';
create user 'connectuser'@'%' identified by 'connect123!@#';
grant all privileges on connectdb.* to 'connectuser'@'localhost';
grant all privileges on connectdb.* to 'connectuser'@'%';
flush privileges;
examples sql안에 examples.sql 파일이 html로 작성되어있는게 맞나요??
sql을 불러오기를 하면 sql구문에러가 계속 나서 sql파일을 열었더니 사진처럼 뜨고 <DOCTYPE 옆에 x가 뜨면서 안되서요. 계속 불러오기를 하는데 에러가 뜨네요;;
혹시 저처럼
create user 'connectuser'@'localhost' identified by 'connect123!@#';
명령어를 통해 아이디를 만들시 비밀번호를 잘못입력해서 아이디 정보를 지우는게 고민이셨던 분들은
use mysql;로 들어간 이후에
delete from mysql.user where user='connectuser';
delete from mysql.db where user='connectuser';
명령어를 치셔서 디비에 있는 유저 정보를 지우고 명령어를 실행하셔야 되니 참고하세요!
20.05.23
윈도우에서
* error: '<' 연산자는 나중에 사용하도록 예약되어 있습니다.
mysql -uconnectuser -p connectdb < examples.sql
대신에
Get-Content examples.sql | mysql -uconnectuser -p connectdb
( examples.sql 뒤에 | 는 수직선(shift+\)입니다)
examples.sql
https://github.com/perm4/examples
MySQL 8버전
create user 'connectuser'@'localhost' identified by 'connect123!@#';
create user 'connectuser'@'%' identified by 'connect123!@#';
grant all privileges on connectdb.* to 'connectuser'@'localhost';
grant all privileges on connectdb.* to 'connectuser'@'%';
flush privileges;
example file없는데 뭐죠 ㅋㅋㅋ 링크 삭제된것같은데 ㅜㅜ
db접속할 때 이렇게 접속을 하려고 하는데 비밀번호 입력하는게 안나오고 계속 -> 이렇게만 뜹니다..
';' 를 입력하면 syntax error 라고 뜨는데 이런경우에는 어떻게 해결할까요,, 찾아봤는데 잘 안나와서 여쭤봅니다,,