데일리로그C:
article thumbnail
Published 2023. 1. 18. 16:58
mysql 개념정리 DB/MySQL

1. <데이터베이스>

실행파일 MySQL ~~~~~

삭제파일 MySQL ~~~~~ - Unicode

 

현존하는 데이터베이스 확인


mysql> show databases;

 

데이터베이스 생성


mysql > create database test;  (test : DB명)      

                                   
데베 사용


mysql > use test;

 


데베 삭제


mysql > drop database test;

 


* 명령어 마지막엔 무조건 ; (세미콜론) 입력하기
* 방향키(위)로 이전에 작성한거 불러올 수 있음
* 변수명은 대소문자 가림
* 속성은 대소문자 상관없음(되도록 소문자로)
* 한 컬럼,
   다음 컬럼, 

 

데이터타입

 1. 문자형

     제목 input --> varchar : 가변길이 데이터타입, 나머지 공간 안채움

     내용 input --> text

     input radio --> ENUM( '  ' , '  ' ) : 둘중에 하나 선택하는 경우

 

 2. 숫자형

     INT  --> 우측정렬됨 (문자로 바꾸면 좌측정렬)

 

테이블 생성

<bash />
create table 테이블명( uid int(11) not null auto_increment, // 11자리 숫자형 타입 int로 / 무조건 값 있어야함. / 자동 1증가처리 하겠다 name varchar(255) default ' ', // 해당필드 기본값 설정!! 비어져있는 null 값을 주겠다(초기화하겠다) primary key(uid) // 중복 불가능 ) ;


* uid int(11) not null  auto_increment primary key  로 적어도 됨 

* uid 칼럼 : 고유키 (primary key)  --> 순서 알 수 있는 역할?

* id 칼럼 : 아이디(1111, 2222) 

 

 

 

2. <테이블&필드>

테이블 필드 구조 확인


mysql> desc 테이블명;    //  애용하기!
mysql> describe 테이블명; 
mysql> explain 테이블명; 

 

테이블 삭제


mysql> drop table 테이블명; 

 

기존 테이블에 필드 추가하기


mysql> alter table 테이블명 add column 칼럼명  varchar(글자크기);  // column 생략 가능
mysql> alter table 테이블명 add column 칼럼명  int(숫자자리수) default 0;  // 숫자는 0이 null임

 

 

기존 필드 속성 변경


mysql> alter table 테이블명 modify 기존필드명 필드타입;  // 필드 속성 변경
mysql> alter table 테이블명 change 기존필드명 새필드명 필드타입; // 필드명 변경

 

 

기존 필드 삭제


mysql> alter table 테이블명 drop 필드명;

 

테이블 이름 변경


mysql> rename table 기존테이블명 to 새테이블명;

 

 

3. <테이블 값 삽입 등>

insert(입력) 구문


mysql> create table member (
        id varchar(20) not null,  // max 20까지 비어있음 안된다
        name varchar(12) default ' ',    // default ' ' : 값 안받아도 된다. 비어있다면  그 비어있는 값을 넣겠다
        address varchar(100) default ' ',
        primary key(id)
);

 

 

테이블 값 추가하기


mysql> insert into 테이블명(칼럼명1, 2, 3) values("값1", "값2","값3");
mysql> insert into 테이블명 values("값1", "값2","값3");  // 칼럼의 총 수 와 값들의 수가 매칭이 된다면 칼럼명 생략 가능

 

테이블 목록(데이터) 확인    (  테이블 구조 확인 :  show 테이블명;  )


mysql> select * from 테이블명;    // * : 모든 칼럼을 의미
mysql> select 칼럼1, 칼럼2 from 테이블명;  // 칼럼1, 칼럼2만 확인
mysql> select count(*) from 테이블명;  // 총수

 

 


mysql> insert into member2 values (null,'3333', '홍길동', '울산');
    ㄴ> null 로 적으면 자리 차지 가능

 

한건의 내용 삭제


mysql> delete from 테이블명 where uid=해당번호; // pk로 기본조건
mysql> delete from 테이블명 where name="홍길동" ;   // 모든 홍길동 다 지워짐  !!주의!!

 

enum() 추가


mysql> alter table member add gender enum('F','M') default 'M';   // null 값이라면 'M' 으로 나옴

 

update(수정) 구문

1. 입력


1) 기본 골격
mysql> update 테이블명 set 필드명='값' where 조건;


2) 입력 값 여러개
mysql> update 테이블명 set 필드명='값', 필드명='값' where 조건;

3) 조건 여러개
mysql> update 테이블명 set 필드명='값' where 조건1 and 조건 2;

 

ex) 나이 1씩 증가

set age = age + 1 로 설정

 

4. <기타>

<bash />
create table notice ( uid int(11) not null auto_increment, id varchar(16) not null default '', name varchar(20) not null default '', subject varchar(255) not null default '', comment text, signdate varchar(30) default '', // 작성일 ref int(11) DEFAULT '0', gongji enum('1','2','3') default '2', // 공지 file1 varchar(40) default '', file1_o varchar(40) default '', // 오리지널 파일 file1_s varchar(40) default '', // 썸네일 파일 fid int(11) default 0, thread varchar(20) default '', PRIMARY KEY (uid) ) ;

uid thread
1 -------- A
2    ㄴ----- AA
3         ㄴ-- AAA
4 --------- AB

칼럼명 : ` ` (~ 키) --> 생략가능 

 

https://mvnrepository.com/

jar 설치 --> WEB-INF > lib 폴더에 복붙하기  > dbconnection.jsp 에 <% %> 적기

Connection - java.sql 엔터  --> import 됨

Statement - java.sql 엔터  --> import 됨

 


//DB에 저장해보자(insert,  update, delete 구문일 때)
String sql = "insert into member2 values('"+id+"','"+pass+"','"+name+"','"+email+"','1')";

Connection con = DriverManager.getConnection(url, user, password);

Statement stmt = con.createStatement();
stmt.executeUpdate(sql);

//DB에 저장해보자(select구문일 때)
String sql = "select * from member2 where memberid = '"+id+"' and password = '"+pass+"' ";

Connection con = DriverManager.getConnection(url, user, password);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);  /* select 구문일 때만 추가 */

 

* 이클립스 오류 --> 아무리봐도 오타가 없음 : 전체선택해서 자르고 붙여넣기

 


[ index.jsp ]

<bash />
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/include/header.jsp" %> <table width=100% border=0> <tr> <td align=center>index 내용</td> </tr> </table> <%@ include file="/include/footer.jsp" %>

 

[ include > header.jsp ]

<bash />
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/include/dbconnection.jsp" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>망밍</title> <!-- j쿼리 --> <script src="http://code.jquery.com/jquery-1.12.4.min.js"></script> <script src="http://code.jquery.com/jquery-migrate-1.4.1.min.js"></script> <style> body { margin:0px; padding:0px; font-size:11px; } </style> </head> <body> <% String session_id = (String)session.getAttribute("id"); String session_name = (String)session.getAttribute("name"); String session_level = (String)session.getAttribute("level"); %> session_id : <%=session_id %><br> session_name : <%=session_name %><br> session_level :<%=session_level %> <br> <table width=100% border=0> <tr> <td align=left> <a href="/"><img src="/img/logo.jpg" width=100></a> </td> <td align=right> <% if(session_level != null && session_level.equals("10")) { // 자바에서는 무조건 null먼저 비교 후 조건 걸어야함 out.print("<a href='/admin/'>[관리자]</a>"); } %> <% if(session_id ==null) {//로그인전%> <a href="/member/login.jsp">[로그인]</a> <a href="/member/join.jsp">[회원가입]</a> <%}else{//로그인후%> <a href="/member/logout.jsp">[로그아웃]</a> <a href="/member/join_up.jsp">[회원수정]</a> <%}%> <%-- 위와 동일 <% if(session_id == null) { out.print("<a href='/member/login.jsp'>[로그인]</a>"); out.print("<a href='/member/join.jsp'>[회원가입]</a>"); } else { out.print("<a href='/member/logout.jsp'>[로그아웃]</a>"); out.print("<a href='/member/mypage.jsp'>[마이페이지]</a>"); } %> --%> </td> </tr> </table> <hr>

 

[ include > footer.jsp ]

<bash />
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <hr> <table width=100% border=0> <tr> <td align=center>2023@ekfdkfjsd</td> </tr> </table> </body> </html>

 

[ include > dbconnection.jsp ]

<bash />
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% //디비 접속 Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/web"; // DB 이름 : web String user="root"; String password="1111"; %> <!-- // Time Zone 오류가 날시 아래와 같이 변경 처리 String url="jdbc:mysql://localhost:3306/web?serverTimezone=UTC"; // 데이터베이스 입력시 시간이 다르게 입력이 될 때 String url="jdbc:mysql://localhost:3306/web?time_zone='Asia/Seoul'; //아시아,서울 표준시간 설정처리 -->

 

[ member > login.jsp ]

<bash />
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/include/header.jsp" %> <table width=100% border=0> <tr> <td align=center>[로그인]</td> </tr> </table> <script> function login_ok() { if(m_id.value == "") { alert("아이디를 입력하세요"); m_id.focus(); return false; } if(m_pass.value == "") { alert("비밀번호 입력하세요"); m_pass.focus(); return false; } documet.login.submit(); } </script> <form name="login" action="login_ok.jsp" method="post" onsubmit="return login_ok()"> <table width=100% border=0> <tr> <td>아이디</td> <td><input id="m_id" name="m_id"></td> </tr> <tr> <td>비밀번호</td> <td><input id="m_pass" name="m_pass"></td> </tr> <tr> <td></td> <td><button>로그인</button></td> </tr> </table> </form> <%@ include file="/include/footer.jsp" %>

 

[ member > login_ok.jsp ]

<bash />
<%@page import="java.sql.ResultSet"%> <%@page import="java.sql.Statement"%> <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.Connection"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/include/dbconnection.jsp" %> <% //넘어온 값 중에 한글이 있다면 캐릭터셋 : 매칭처리함 request.setCharacterEncoding("utf-8"); String id = request.getParameter("m_id"); out.print("아이디: " + id + "<br>"); String pass = request.getParameter("m_pass"); out.print("비밀번호: " + pass + "<br>"); String sql = "select * from member2 where memberid = '"+id+"' and password = '"+pass+"' "; Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(sql); /* select 구문일 때만 추가 */ // 전역, 지역변수 String mem_id = ""; String mem_pass = ""; String mem_name = ""; String mem_level = ""; if(rs.next()) { mem_id = rs.getString("memberid"); mem_pass = rs.getString("password"); mem_name = rs.getString("name"); mem_level = rs.getString("level"); } if(id.equals(mem_id) && pass.equals(mem_pass)) { // 아이디, 비번 일치한다면 session.setAttribute("id", id); // session : 해당 브라우저 자체를 종료하지않는 이상 그 정보 계속 살아있음 ("내가만든변수", 값(사용자가 입력한 값)) session.setAttribute("level", mem_level); session.setAttribute("name", mem_name); } else { } /* while(rs.next()) { // if구문으로 써도 됨 out.print(rs.getString("memberid")+" || "); out.print(rs.getString("password")+" || "); out.print("<br>"); } */ %> <script> location.href="/"; </script> <!-- html --> <%-- <table border=1> <tr> <td>아이디</td> <td><%=id%></td> <!-- out.print 역할임 --> </tr> <tr> <td>비밀번호</td> <td><%=request.getParameter("m_pass")%></td> </tr> </table> --%> <%-- 아이디: <%=id%><br> 비밀번호: <%=pass%><br> --%>

 

 

[ member > join.jsp ]  --> 회원가입

<bash />
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/include/header.jsp" %> <table width=100% border=0> <tr> <td align=center>[회원가입]</td> </tr> </table> <script> function join_ok() { if(m_id.value == "") { alert("아이디를 입력하세요"); m.id.focus(); return; } if(m_pass.value == "") { alert("비밀번호를 입력하세요"); m.pass.focus(); return; } if(m_name.value == "") { alert("이름을 입력하세요"); m.name.focus(); return; } document.join.submit(); // join을 action(insert.jsp)에 get 방식으로 보내기 } </script> <form name="join" action="insert.jsp" method="post"> <table width=100% border=0> <tr> <td>아이디</td> <td> <input id="m_id" name="m_id"> <input type="button" value="아이디 중복체크" onclick="join_ok()"> </td> </tr> <tr> <td>비밀번호</td> <td><input id="m_pass" name="m_pass"></td> </tr> <tr> <td>이름</td> <td><input id="m_name" name="m_name"></td> </tr> <tr> <td>이메일</td> <td> <input id="m_email1" name="m_email1">@ <input id="m_email2" name="m_email2"> <select id="domain" onchange="m_email2.value = this.value"> <option value="=직접입력=">=직접입력=</option> <option value="naver.com">naver.com</option> <option value="gmail.com">gmail.com</option> <option value="nate.com">nate.com</option> </select> </td> </tr> <tr> <td></td> <td> <input type="button" value="회원가입" onclick="join_ok()"> </td> </tr> </table> </form> <%@ include file="/include/footer.jsp" %>

 

 

[ member > insert.jsp ]  --> 회원가입 완료

<bash />
<%@page import="java.sql.*"%> <%-- <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.Statement"%> <%@page import="java.sql.Connection"%> --%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/include/header.jsp" %> <% //넘어온 값 중에 한글이 있다면 캐릭터셋 : 매칭처리함 request.setCharacterEncoding("utf-8"); // 4대 내장 객체(이미 만들어져있는 객체) 중 request String id = request.getParameter("m_id"); String pass = request.getParameter("m_pass"); String name = request.getParameter("m_name"); String email = request.getParameter("m_email1") + "@"+ request.getParameter("m_email2"); out.print("아이디: "+id+"<br>"); out.print("비밀번호: "+pass+"<br>"); out.print("이름: "+name+"<br>"); out.print("이메일: "+ email+"<br>"); //DB에 저장해보자 String sql = "insert into member2 values('"+id+"','"+pass+"','"+name+"','"+email+"','1')"; Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement(); stmt.executeUpdate(sql); /* insert, update, delete 구문 */ %> <script> location.href="/"; </script>

 

[ member > logout.jsp ]  --> 로그아웃

<bash />
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% session.invalidate(); // 모든 세션값을 삭제 %> <script> location.href="/"; </script>

 

 

[ member > join_up.jsp ]  -->  회원수정(=마이페이지 mypage)

<bash />
<%@page import="java.sql.ResultSet"%> <%@page import="java.sql.Statement"%> <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.Connection"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/include/header.jsp" %> <% String sql = "select * from member2 where memberid='"+session_id+"'"; Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(sql); String member_id = ""; String member_pass = ""; String member_name = ""; String member_email1 = ""; String member_email2 = ""; while(rs.next()) { member_id = rs.getString("memberid"); member_pass = rs.getString("password"); member_name = rs.getString("name"); String[] member_email = rs.getString("email").split("@"); member_email1 = member_email[0]; // 메일주소 아이디 member_email2 = member_email[1]; // 메일주소 도메인 } %> <table width=100% border=0> <tr> <td align=center>[회원수정]</td> </tr> </table> <script> function join_up() { if(m_id.value == "") { alert("아이디를 입력하세요"); m.id.focus(); return; } if(m_pass.value == "") { alert("비밀번호를 입력하세요"); m.pass.focus(); return; } if(m_name.value == "") { alert("이름을 입력하세요"); m.name.focus(); return; } document.join.submit(); // join을 action(insert.jsp)에 get 방식으로 보내기 } </script> <form name="join" action="update.jsp" method="post"> <table width=100% border=0> <tr> <td>아이디</td> <td> <input id="m_id" name="m_id" value="<%=member_id%>"> <input type="button" value="아이디 중복체크" onclick="join_ok()"> </td> </tr> <tr> <td>비밀번호</td> <td><input id="m_pass" name="m_pass" value="<%=member_pass%>"></td> </tr> <tr> <td>이름</td> <td><input id="m_name" name="m_name" value="<%=member_name%>"></td> </tr> <tr> <td>이메일</td> <td> <input id="m_email1" name="m_email1" value="<%=member_email1%>">@ <input id="m_email2" name="m_email2" value="<%=member_email2%>"> <select id="domain" onchange="m_email2.value = this.value"> <option value="=직접입력=">=직접입력=</option> <option value="naver.com">naver.com</option> <option value="gmail.com">gmail.com</option> <option value="nate.com">nate.com</option> </select> </td> </tr> <tr> <td></td> <td> <input type="button" value="회원수정" onclick="join_up()"> </td> </tr> </table> </form> <%@ include file="/include/footer.jsp" %>

 

 

[ member > update.jsp ]  --> 회원수정(DB)

<bash />
<%@page import="java.sql.DriverManager"%> <%@page import="java.sql.Statement"%> <%@page import="java.sql.Connection"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/include/header.jsp" %> <% request.setCharacterEncoding("utf-8"); //4대 내장 객체(이미 만들어져있는 객체) 중 request String id = request.getParameter("m_id"); String pass = request.getParameter("m_pass"); String name = request.getParameter("m_name"); String email = request.getParameter("m_email1") + "@"+ request.getParameter("m_email2"); out.print("아이디: "+id+"<br>"); out.print("비밀번호: "+pass+"<br>"); out.print("이름: "+name+"<br>"); out.print("이메일: "+ email+"<br>"); //DB에 저장해보자 String sql = "update member2 set password='"+pass+"', name='"+name+"', email='"+email+"', where memberid='"+id+"' "; Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement(); stmt.executeUpdate(sql); %> <script> alert("수정되었습니다"); location.href="/join_up.jsp"; </script> %>

 


 

순서 파악하기!!!!

1. DB 테이블, 데이터, 등등 다 만들기
2. 연결하기
3. 회원가입(메뉴 줄이기)
4. 로그인
5. 로그아웃
6. 회원수정 순으로 
만들어야함


3. header
안에 
jsp 구문 <% 전역변수  %>
맨 왼쪽 구석에 띄우기(서버에 저장하기)


2) level 이 10이라면 관리자 메뉴 보이게

1) 로그인 전 후 메뉴
if 로그인 전이라면
로그인, 회원가입 
else 로그인 후라면 
로그아웃, 마이페이지로 바뀌게 하기


2. login_ok




1. insert


4. logout


5. join_up

6. update

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

DB 날짜  (0) 2023.06.01
DB 연결-SQLYog 설치  (0) 2023.03.22
profile

데일리로그C:

@망밍

포스팅이 도움됐다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!