시간이 정말 빠르다 벌써 개발수업들은지도 한달 째..!
개발 시장에서 점유율이 가장 높은 DB => Oracle, 최근에 mySQL 도 많이 씀 ((둘이 거의 원탑))
오라클 (유료) - - 금융, 증권사에서 씀! 공기업 / 함부로 뭔가를 바꿀수 없다.
mysQL(무료) - - 근데 카뱅은 mySQL씀. 부족한 부분을 기술로 채움 / 입지가 커지고 있다.
MariaDB - - mySQL의 완전 무료판
p.372
설치 1)
MySQL Installer 8.0.30 다운로드
mySQL 8버전을 공부했습니다. 라고 하라고 함
직전 버전은 5버전 , 5버전, 8버전이 상용화되고 있음
설치 2)
mySQL 실행
ADD -> MySQL SERver 8.0.30 버전 클릭 -> next -> Execute -> next -> next
실행창에서 환경변수 어쩌구 들어갈 것
path 더블클릭
경로 잘 확인 해서 확인, 확인 확인
환경변수 넣어 준 것!
cmd 창 껐다가 다시 켜야 설정 적용됨
설치 완료 된 것.
mysql -u root -p 입력 => password 입력하라고 나옴. 1234 넣어줌
mySQL 설치완료!
이제부터, 개발자 sql 쿼리 구문을 알아야함. ((찾아보지않고도 이건 알아야함..))
[mySQL 접속]1) MySQL Client 프로그램 실행 2) CMD 명령어 mysql -u [아이디] -h [서버주소] -p [DB명]
> mysql -u root -p> 1234
DB서버의 상태> status
DB 명령어
[DB 목록 조회] :
show databases ;
[DB 생성] :
create databases [DB명] ;
[DB 삭제] :
drop databases [DB명] ;
[DB 사용선택] :
use [DB명] ;
> create database test ;
> use test ;
> status ;
>create database jspdb ;
[테이블 생성, 조회, 입력, 삭제]
[테이블 조회] :
show tables ;
[테이블 생성] :
create table [테이블명] (
필드명1 데이터타입 제약조건,
필드명2 데이터타입 제약조건,
필드명3 데이터타입 제약조건,
필드명4 데이터타입 제약조건,
필드명5 데이터타입 제약조건,
필드명6 데이터타입 제약조건
);
=> 오라클(문자) VARCHAR2 , MySQL VARCHAR
오라클(숫자) NUMBER , MySQL INT
[테이블 삭제] :
drop table [테이블명];
[테이블 정보(구조)] :
desc [테이블명];
> use jspdb ;
> show tables ;
ex) 테이블명 : test, 필드 : 정수형 - idx
>show tables;
>desc test;
ex) 테이블명 : test2 ,
필드 : 정수형 - idx, 실수형(double) - d_num
ex) 테이블명 : test3
필드명 : 정수형 - idx,
실수형(double) - d_num,
문자형(10글자) - name,
문자형(14글자) - jumin
[데이터 입력] :
insert into [테이블명] (컬럼명1,컬럼명2...) values (데이터값1, 데이터값2, .....);
=> 컬럼명을 생략시, 테이블의 모든 컬럼을 순서대로 입력
[데이터 조회] :
SELECT [컬럼명1,...or * ] from [테이블명] (where 조건문);
=> 컬럼명 명시 하는 경우 컬럼의 값만 조회,
* 명시하는 경우 모든 데이터를 조회
[데이터 삭제] :
delete from [테이블명] (where 조건문) ;
ex) test 테이블 idx 데이터 1, 2 입력 -> 조회
> insert into test (idx) values (1) ;
> insert into test values (2) ;
> select * from test ;
=> 테이블 삭제 해보기
> drop table test ;
ex) test 3 테이블
1, 1.11, 'kim', '900101-1234123'
2, 2.22, 'jung', '900101-2222222'
3, 3.33, 'jo'
4, 4.44, '900101-4444444'
데이터 입력하기
> insert into test3 (idx, d_num,name,jumin) values (1, 1.11, 'kim', '900101-1234123');
> insert into test3 values (2, 2.22, 'jung', '900101-2222222'); => 중복된 내용이라, 필드값을 생략함
> insert into test3 (idx, d_num, name) values (3, 3.33, 'jo');
> insert into test3 (idx, d_num, jumin) values (4, 4.44, '900101-4444444');
> insert into test3 values (4, 4.44, ' ' , '900101-4444444');
2가지 방법 있음!
> select * from test3 ;
> delect from test3 ;
제약조건
테이블 : test4
필드명 : idx (int) PK (Primary Key)
name (VARCHAR(10))
* Primary Key : 항상 데이터 값이 있어야한다!
ex) test4 테이블에
1. 'kim' 정보 입력
> insert into test4 values (1, 'kim');
> select * from test4;
ex) 1, 'lee' 정보 입력
에러 남!
> insert into test4 values (1, 'Lee');
=> PK 값은 항상 고유한 값이어야 한다. (중복 불가능)
=> UNIQUE 제약조건
ex) 2 정보입력
'Lee' 정보 입력
> insert into test4 values (2);
> insert into test4 (idx) values (2);
> insert into test4 (name) values ('Lee');
=> PK 값은 항상 존재해야 한다.
(NULL 값은 불가능) => NOT NULL 제약 조건
* PK = Unique + Not NULL
ex) 테이블 : itwill_member
필드 : idx PK AI (자동증가)
name VARCHAR(20)
gender VARCHAR(2)
age INT
jumin VARCHAR(14)
create table itwill_member(
idx INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20),
gender VARCHAR(2),
age INT,
jumin VARCHAR(14)
);
mysql> desc itwill_member;
+--------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+----------------+
| idx | int | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
| gender | varchar(2) | YES | | NULL | |
| age | int | YES | | NULL | |
| jumin | varchar(14) | YES | | NULL | |
+--------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
mysql> insert into itwill_member values();
Query OK, 1 row affected (0.04 sec)
mysql> select * from itwill_member;
+-----+------+--------+------+-------+
| idx | name | gender | age | jumin |
+-----+------+--------+------+-------+
| 1 | NULL | NULL | NULL | NULL |
+-----+------+--------+------+-------+
1 row in set (0.00 sec)
PK 라는 제약조건을 걸어놨기 떄문에, () null 값을 넣어도 자동으로 1이 증가된다
mysql> select * from itwill_member;
+-----+------+--------+------+-------+
| idx | name | gender | age | jumin |
+-----+------+--------+------+-------+
| 1 | NULL | NULL | NULL | NULL |
+-----+------+--------+------+-------+
1 row in set (0.00 sec)
mysql> insert into itwill_member values();
Query OK, 1 row affected (0.03 sec)
mysql> select * from itwill_member;
+-----+------+--------+------+-------+
| idx | name | gender | age | jumin |
+-----+------+--------+------+-------+
| 1 | NULL | NULL | NULL | NULL |
| 2 | NULL | NULL | NULL | NULL |
+-----+------+--------+------+-------+
2 rows in set (0.00 sec)
2로 증가함.
데이터를 싹 지우고 다시 만들어도 데이터 3부터 다시 시작함
1번으로 다시 돌리는 방법은?
auto_increment 를 다시 초기화하는방법? 검색해보기.
mysql> delete from itwill_member;
> ('kim', 'M', 20,900101-1231231;);
> ('Lee', 'W',16,900101-2222222;);
> ('Kang', 'W', 29,900101-4444444;);
> ('Jung', 'M', 33,900101-3333333;);
> ('Yun', 'M', 31,900101-1111111;);
mysql> insert into itwill_member (name, gender, age, jumin) values ('Lee','W',15,'900101-2222222');
Query OK, 1 row affected (0.03 sec)
mysql> insert into itwill_member (name, gender, age, jumin) values ('jung','M',21,'900101-1111111');
Query OK, 1 row affected (0.03 sec)
mysql> insert into itwill_member (name, gender, age, jumin) values ('min','w',31,'900101-3333333');
Query OK, 1 row affected (0.03 sec)
mysql> insert into itwill_member (name, gender, age, jumin) values ('park','m',36,'900101-4444444');
Query OK, 1 row affected (0.03 sec)
mysql> select * from itwill_member;
+-----+------+--------+------+----------------+
| idx | name | gender | age | jumin |
+-----+------+--------+------+----------------+
| 3 | kim | M | 20 | 900101-1231231 |
| 4 | Lee | W | 15 | 900101-2222222 |
| 5 | jung | M | 21 | 900101-1111111 |
| 6 | min | w | 31 | 900101-3333333 |
| 7 | park | m | 36 | 900101-4444444 |
+-----+------+--------+------+----------------+
5 rows in set (0.00 sec)
[WHERE 조건절]
itwill_member 테이블
회사명_테이블명
프로젝트명_테이블명
tbl_테이블명
ex) idx 값이 3 이상인 사람의 정보 모두 조회
mysql> select * from itwill_member where idx>=3;
+-----+------+--------+------+----------------+
| idx | name | gender | age | jumin |
+-----+------+--------+------+----------------+
| 3 | kim | M | 20 | 900101-1231231 |
| 4 | Lee | W | 15 | 900101-2222222 |
| 5 | jung | M | 21 | 900101-1111111 |
| 6 | min | w | 31 | 900101-3333333 |
| 7 | park | m | 36 | 900101-4444444 |
+-----+------+--------+------+----------------+
5 rows in set (0.00 sec)
ex) 테이블 컬럼명 name 해당하는 정보가 'jung' 의 정보만 조회
mysql> select * from itwill_member where name = 'jung';
+-----+------+--------+------+----------------+
| idx | name | gender | age | jumin |
+-----+------+--------+------+----------------+
| 5 | jung | M | 21 | 900101-1111111 |
+-----+------+--------+------+----------------+
1 row in set (0.00 sec)
ex) 이름이 kim이면서 나이가 15살 이상인 사람의 정보를 조회 (and &&)
mysql> select * from itwill_member where name ='kim' && age >= 15;
+-----+------+--------+------+----------------+
| idx | name | gender | age | jumin |
+-----+------+--------+------+----------------+
| 3 | kim | M | 20 | 900101-1231231 |
+-----+------+--------+------+----------------+
1 row in set, 1 warning (0.00 sec)
and 도 되지만, &&도 된다
sQL 구문에서는 기본적인 연산구문은 사용할 수 있다!
ex) 나이가 20살 이상 이거나 성별이 여성인 사람의 정보를 조회 (or ||)
mysql> select * from itwill_member where age >= 20 || gender = 'w';
+-----+------+--------+------+----------------+
| idx | name | gender | age | jumin |
+-----+------+--------+------+----------------+
| 3 | kim | M | 20 | 900101-1231231 |
| 4 | Lee | W | 15 | 900101-2222222 |
| 5 | jung | M | 21 | 900101-1111111 |
| 6 | min | w | 31 | 900101-3333333 |
| 7 | park | m | 36 | 900101-4444444 |
+-----+------+--------+------+----------------+
5 rows in set, 1 warning (0.00 sec)
ex) 테이블의 정보 중 이름, 주민번호만 조회
mysql> select name, jumin from itwill_member;
+------+----------------+
| name | jumin |
+------+----------------+
| kim | 900101-1231231 |
| Lee | 900101-2222222 |
| jung | 900101-1111111 |
| min | 900101-3333333 |
| park | 900101-4444444 |
+------+----------------+
5 rows in set (0.00 sec)
ex) 테이블 정보 중 이름, 주민번호만 조회 (이름 또는 주민번호가 null이 아닌 사람)
mysql> select name, jumin from itwill_member where name != "NULL" ;
+------+----------------+
| name | jumin |
+------+----------------+
| kim | 900101-1231231 |
| Lee | 900101-2222222 |
| jung | 900101-1111111 |
| min | 900101-3333333 |
| park | 900101-4444444 |
+------+----------------+
5 rows in set (0.00 sec)
name 이라는 데이터가 문자이기 때문에, null 값에도 문자 처럼 " " 안에 적어줘야한다.
mysql> select name, jumin from itwill_member where name != "null" || jumin != "null";
+------+----------------+
| name | jumin |
+------+----------------+
| kim | 900101-1231231 |
| Lee | 900101-2222222 |
| jung | 900101-1111111 |
| min | 900101-3333333 |
| park | 900101-4444444 |
+------+----------------+
5 rows in set, 1 warning (0.00 sec)
>show warnings;
mysql> show warnings;
+---------+------+-------------------------------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+-------------------------------------------------------------------------------------------------------+
| Warning | 1287 | '|| as a synonym for OR' is deprecated and will be removed in a future release. Please use OR instead |
+---------+------+-------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select name, jumin from itwill_member where name != "null" && jumin != "null";
+------+----------------+
| name | jumin |
+------+----------------+
| kim | 900101-1231231 |
| Lee | 900101-2222222 |
| jung | 900101-1111111 |
| min | 900101-3333333 |
| park | 900101-4444444 |
+------+----------------+
5 rows in set, 1 warning (0.00 sec)
>show errors;
ex) name - '이름', jumin - '주민번호' 컬럼명(필드명) 변경
mysql> select name as '이름' , jumin as '주민번호' from itwill_member;
+------+----------------+
| 이름 | 주민번호 |
+------+----------------+
| kim | 900101-1231231 |
| Lee | 900101-2222222 |
| jung | 900101-1111111 |
| min | 900101-3333333 |
| park | 900101-4444444 |
+------+----------------+
5 rows in set (0.00 sec)
[데이터 수정] :
update [테이블명] set 컬럼명1 = 수정할 값 , 컬럼명2 = 수정할 값 2 ... where 조건절; where 절 안붙이면 모든 데이터가 수정됨!
ex) idx 7번이면서, 이름이 Park 인 사람의 주민번호를 수정
'900101-5555555'
mysql> update itwill_member set jumin = '900101-5555555' where name = 'park' && idx = 7;
Query OK, 1 row affected, 1 warning (0.16 sec)
Rows matched: 1 Changed: 1 Warnings: 1
mysql> select * from itwill_member;
+-----+------+--------+------+----------------+
| idx | name | gender | age | jumin |
+-----+------+--------+------+----------------+
| 3 | kim | M | 20 | 900101-1231231 |
| 4 | Lee | W | 15 | 900101-2222222 |
| 5 | jung | M | 21 | 900101-1111111 |
| 6 | min | w | 31 | 900101-3333333 |
| 7 | park | m | 36 | 900101-5555555 |
+-----+------+--------+------+----------------+
5 rows in set (0.00 sec)
'Spring > Model1 _2(MVC)' 카테고리의 다른 글
0825 JSP - MySQL - DELETE ~ 객체, 자바빈 (0) | 2022.08.25 |
---|---|
0822 JSP - MySQL WorkBench, Connector/J (0) | 2022.08.22 |
0818 JSP - cookieForm => cookiePro ~ session (0) | 2022.08.18 |
[JSP] 8/9 (0) | 2022.08.09 |
[JSP] 8/9 (0) | 2022.08.09 |