상세 컨텐츠

본문 제목

MySQL -1

SQL/MySQL

by 일동일동 2022. 11. 4. 18:00

본문

728x90
반응형

1. DataBase(데이터베이스)
-Data: 자료
-DataBase: 저장소, 데이터를 통합하여 관리하는 집합체
-DBMS(Database Management System, 데이터베이스 관리 시스템)
데이터베이스를 관리해주는 소프트웨어

✔DBMS를 사용하는 이유
- 중복된 데이터를 제거
- 효율적인 데이터를 처리
- 자료를 구조화시킬 수 있음
- 다양한 프로그램을 사용하는 사용자들과 데이터를 공유

MySQL 다운로드
1. https://www.mysql.com/downloads/ 로 이동
2. MySQL Community (GPL) Downloads 로 이동
3. MySQL Community Server 로 이동
4. Windows (x86, 64bit), MySQL Installer MSI로 이동
5. Windows (x86, 32-bit), MSI Installer 431.7M Download
6. No thanks, just start my download. 선택


정보를 요청
Client --------------------> Server
                      <--------------------
정보를 제공

MySQL port = 3306

관계형 데이터베이스
- DataBase -> Table(엑셀과 비슷)
행(로우,레코드), 열(필드,컬럼,어트리뷰트)
- SQL 문법을 사용

SQL(Structured Query Language)
- 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어
- 대소문자를 구별하지 않음
- 문자열을 저장할때 ' '(싱글 쿼트)만 사용   (* 다른 언어에서 String으로 묶을때 " "로 쓰기 때문에)
select *from tb_member where userid='apple';

자바 -> MySQL
String sql = "select *from tb_member where userid='apple'";

 

# 한줄 주석문
-- 한줄 주석문

/*
   여러 줄 주석문
    ...
*/

/*

   C - create, insert
    R - select
    U - update
    D - delete

*/


# 데이터베이스 확인
show databases;

# 데이터베이스 생성
# create database 데이터베이스명;
create database aidev;

# 데이터베이스 삭제
# drop database 데이터베이스명;
drop database aidev;

# 테이블(table)
# 데이터를 행과 열로 스키마에 따라 저장할 수 있는 구조
# 스키마: 데이터베이스의 구조와 제약조건에 관한 명세를 기술한 집합의 의미

/*
   create table 테이블명 (
      필드명1 타입 제약조건, -- 예) no int not null       // not null = 데이터의 공백 x
        필드명2 타입 제약조건,
        ...
        필드명n 타입 제약조건
    )

*/

/*
데이터 타입
1. 숫자 타입
   - 정수: tinyint, smallint, meduimint, int, bigint ...
    - 실수: float, double
2. 문자열 타입
      - 텍스트: char, varchar(65535byte까지 저장), text
         char(10) -> 1byte만 저장하더라도 총 10byte를 소모
            varchar(10) -> 1byte를 저장하면 총 1byte만 사용
        - 바이너리: binary, varbinary
        - 열거: enum
         enum('남자','여자')
3. 날짜와 시간타입
      -날짜: data
        날짜와 시간타입: datetime, timestamp(1970년 1월1일 0시0분0초 ~) ㅡms

*/

/*
제약조건
데이터의 무결성을 지키기 위한 데이터를 입력받을 때 실행하는 검사 규칙

-NOT NULL
   필드에 NULL을 저장할 수 없음
-UNIQUE
   중복된 값을 저장할 수 없음
    NULL은 저장할 수 있음
-DEFAULT
   기본값을 설정(NULL을 저장할 때 기본값을 설정)
- AUTO_INCREMENT
   자동으로 숫자가 증가되어 추가
    중복값이 저장되지 않음
    직접 데이터를 추가할 수 없음
    auto_increment를 사용한 필드는 primary key로 등록
    no int auto_increment
-PRIMARY KEY
   UNIQUE제약과 NOT NULL제약을 동시에 적용
   테이블에 오직 하나의 필드에만 적용
    데이터를 쉽고 빠르게 검색할 수 있도록 설정(색인)
    외래키가 참조할 수 있도록 설정
-FOREIGN KEY
   다른 테이블과 연결해주는 역할
    기준이 되는 테이블의 내용을 참조해서 레코드를 입력
    PRIMARY KEY를 참조

*/

# 데이터베이스 선택
# use 데이터베이스명
use aidev;

# 테이블 만들기
create table tb_member(
   mem_idx int auto_increment primary key,
    mem_userid varchar(20) unique not null,
    mem_userpw varchar(20) not null,
    mem_name varchar(20) not null,
    mem_hp varchar(20) not null,
    mem_email varchar(50) not null,
    mem_hobby varchar(100),
    mem_ssn1 varchar(6) not null,
    mem_ssn2 varchar(7) not null,
    mem_zipcode varchar (5),
    mem_address1 varchar(100),
    mem_address2 varchar(100),
    mem_address3 varchar(100),
    mem_regdate datetime default now()
);

# 테이블 확인
# desc 테이블명
desc tb_member;

# 테이블 삭제
# drop table 테이블명
drop table tb_member;

# 테이블 필드 추가
# alter table 테이블명 add 컬럼명 타입 제약조건
alter table tb_member add mem_point int default 0;

# 테이블 필드 수정
# alter table 테이블명 modify column 컬럼명 컬럼타입 제약조건
alter table tb_member modify column mem_point double default 0;

# 테이블 필드 삭제
# alter table 테이블명 drop 컬럼명;
alter table tb_member drop mem_point;

# 데이터 삽입
# insert into 테이블명 values (값1, 값2, 값3 ...)
# insert into 테이블명 (필드명1, 필드명2, 필드명3 ...) values (값1, 값2, 값3 ...)
insert into tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_ssn1, mem_ssn2)
   values ('apple', 1111, '김사과', '010-1111-1111', 'apple@apple.com', 001011, 4068518);

insert into tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_ssn1, mem_ssn2)
   values ('banana', 2222, '반하나', '010-2222-2222', 'banana@abanana.com', 990709, 4016842);

insert into tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_ssn1, mem_ssn2)
   values ('orange', 3333, '오렌지', '010-3333-3333', 'orange@orange.com', 960211, 4358156);
    
insert into tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_ssn1, mem_ssn2)
   values ('melon', 4444, '김멜론', '010-4444-4444', 'melon@melon.com', 930331, 4418752);
    
insert into tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_ssn1, mem_ssn2)
   values ('pineapple', 5555, '김파인', '010-5555-5555', 'pineapple@pineapple.com', 001015, 4745255);
    
insert into tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_ssn1, mem_ssn2)
   values ('watermelon', 6666, '김수박', '010-6666-6666', 'watermelon@watermelon.com', 000811, 1632586);
    
    
create table tb_test (
   t_idx int,
    t_name varchar(20),
    t_age int,
    t_hp varchar(20)
);
-- tb_member
insert into tb_test values (1,'김사과', 20, '010-1111-1111');       # tb_test에서 리스트 항목을 다 입력할 경우 사용
insert into tb_test (t_idx, t_name, t_age) values (2, '반하나', 23);  # tb_test에서 원하는 목록만 추가할 경우 사용

insert into tb_test values (2,'반하나', 30, '010-2222-2222');
insert into tb_test (t_idx, t_name, t_age) values (4, '오렌지', 25);

select * from tb_member;

 

반응형

'SQL > MySQL' 카테고리의 다른 글

MySQL -4  (0) 2022.11.18
MYSQL -3  (0) 2022.11.17
MySQL -2  (0) 2022.11.05

관련글 더보기