본문 바로가기

개발일지/SQL

MySQL - 첫번째 수업 (기초)

 

여기선 소문자로 작성 했지만 원래 예약어들이나 함수를 작성할 땐 대문자로 사용한다. 정보들과 구분을 위해서 그렇게 하는 것 같다.

 

 

create schema managementdb;
CREATE DATABASE managementdb;

 

데이터베이스(스키마) 만들기
둘은 완전히 같진 않지만 동일하게 사용하고 있음

 

use managementdb;

 

위에서 만든 데이터베이스를 사용한다.

 

CREATE TABLE 고객( 
  고객아이디 varchar(20) not null, 
  고객이름 varchar(10) not null, 
  나이 int, 
  등급 varchar(10) not null, 
  직업 varchar(20), 
  적립금 int default 0, 
  primary key(고객아이디));


고객 테이블 만들기

6개의 항목을 갖고 있음
varchar(20) - 여기서는 이걸 문자열로 쓴다.
not null 내용이 안 들어오면 안 된다.
default 기본값

테이블에 기본 키가 필요하다.
★primary key(고객아이디) - 키본키

★FOREIGN .. REFERENCES - 외래키와 다른 테이블의 기본키를 참조

위처럼 가장 하단에 적어줘도 되지만 내가 설정할 칼럼 옆(데이터 타입 옆)에 적어줘도 됨

 

중복이 안 되는 항목은 무조건 후보키(고객번호, 주민번호, 핸드폰)이다.
그 중에서 하나만 선택해서 기본을 정하는 것이 primary key(기본키)
외래키 - 다른 릴레이션의 기본키들을 참조하는 속성을 말한다.

 

insert into 고객 values("apple","정소화",20,"gold","학생",1000); 
insert into 고객 values("banana","김선우",25,"vip","간호사",2500);

 

항목과 숫자 및 데이터 타입 모두 동일하게 작성해야 한다.
세미콜론(;) 우측에서 번개모양 단축키 또는 ctrl + Enter

여러 줄 한 번에 입력하고 싶다면 모두 드래그 해서 ctrl + shift + Enter

 

insert into 고객 values
("apple","정소화",20,"gold","학생",1000),
("banana","김선우",25,"vip","간호사",2500);

 

이렇게 한 번에 이어서 작성하는 방법도 있다. 

얘는 세미콜론 우측에서 ctrl + Enter만 해줘도 됨

 

select * from 고객;

 

select(선택) *(모든 항목) '고객' 보여줘라
옵션들이 많다.

 

 


데이터베이스는 독립성이 중요시 된다. 물리적으로나 논리적으로 독립성이 강하다. 그래서 아무도 들어가서 열어보지 못 한다.

릴레이션은 스키마와 인스턴스로 구성된다..

 


create database Academydb; 
use Academydb; 
create table Book ( 
	bookid int primary key, 
	bookname varchar(40), 
	publisher varchar(40), 
	price int); 
CREATE TABLE Customer ( 
	custid INT PRIMARY KEY, 
    name VARCHAR(40), 
    address VARCHAR(40), 
    phone VARCHAR(30)); 
CREATE TABLE Orders ( 
	orderid INT PRIMARY KEY, 
    custid INT REFERENCES Customer(custid), 
    bookid INT REFERENCES Book(bookid), 
    saleprice INT, orderdate DATE ); 

insert into Book values(1, '축구의 역사', '굿스포츠', 7000); 
INSERT INTO Book VALUES(2, '축구 아는 여자', '나무수', 13000); 
INSERT INTO Book VALUES(3, '축구의 이해', '대한미디어', 22000); 
INSERT INTO Book VALUES(4, '골프 바이블i', '대한미디어', 35000); 
INSERT INTO Book VALUES(5, '피겨교본', '굿스포츠', 8000); 
INSERT INTO Book VALUES(6, '역도 단계별 기술', '굿스포츠', 6000); 
INSERT INTO Book VALUES(7, '야구의 추억', '이상미디어', 20000); 
INSERT INTO Book VALUES(8, '야구를 부탁해', '이상미디어', 13000); 
INSERT INTO Book VALUES(9, '올림픽 이야기', '상성당', 7500); 
INSERT INTO Book VALUES(10, 'Olympic Champions', 'Pearson', 13000); 
select * from Book; select bookid, bookname, publisher, price from Book;

 

insert into Book values(1,'축구의 역사','굿스포츠',7000);


book 테이블 옆에 밸류스를 넣어야한다. 위에서 항목이 4개 라면, 넣어주는 개수(4개)와 데이터 타입이 맞아야 한다.

 

select * from Book;


마지막 이것을 넣어주고 ctrl + Enter를 해주면 표가 뜬다.
모든 항목을 출력하는 라인이다.

 

select bookid, bookname, publisher, price from Book;


북이라는 클래스에서 이것들을 보여줘라 모두(*) 이것과 같은 거임

 

select publisher from Book;


도서 테이블에서 출판사를 검색

 

< where 조건 >

select * from Book where price < 20000;


도서테이블에서 20000원 미만의 가격을 검색
where은 조건 예약어이다.

 

select * from Book where price between 10000 and 20000;


가격이 1000원 이상 20000원 이하인 도서를 검색

 

select * from Book where publisher in('굿스포츠','대한미디어');
select * from Book where publisher = "굿스포츠" or publisher = "대한미디어";


출판사가 굿스포츠, 대한미디어인 도서만 검색. 두 가지 버전이 있음 IN과 OR인데 출판사를 두 번 써줘야하는 게 불편하니까 IN을 사용하는 게 좋다. -

 

select * from Book where publisher not in('굿스포츠','대한미디어');

 

반대로 출판사가 굿스포츠, 대한미디어 아닌 도서만 검색하려면 not만 추가하면 된다.

 

select bookname, publisher from book where bookname like "축구의 역사";


축구의 역사를 출간한 출판사와 책이름을 함께 출력하기

LIKE는 동일한 글자를 출력한다. 대소문자를 구분하지 않는다.

대소문자를 구분하고 싶다면 BINARY를 이용하면 된다. 

 

select bookname, publisher from Book where bookname like "%축구%";


축구가 들어가는 책이름과 출판사를 찾긔

 

select * from Book where bookname like "_구%";


도서이름에 왼쪽에서 두번째 한글로 '구'자가 들어가는 모든 항목을 출력하기
글자수에 맞게 찾고 싶다면 '_'을 사용하는 것도 좋은 방법이다!

 

그리고 LIKE를 사용 했을 때 '_', '%' 이것들을 사용할 수 있다. 

'개발일지 > SQL' 카테고리의 다른 글

[Oracle] 기본 용어 및 상식  (2) 2021.11.17
SQL 복습 (옛날거)  (0) 2021.10.25
테이블 한 번에 등록하기  (1) 2021.10.11
데이터베이스, 스키마 이름 바꾸기  (0) 2021.10.11
MySQL 두번째 수업  (0) 2021.10.06