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

<데이터베이스>

실행파일 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  --> 우측정렬됨 (문자로 바꾸면 좌측정렬)

 

테이블 생성

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) 

 

 

 

<테이블&필드>

테이블 필드 구조 확인


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 새테이블명;

 

 

<테이블 값 삽입 등>

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 로 설정

 

<기타>

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 ]

<%@ 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 ]

<%@ 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 ]

<%@ 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 ]

<%@ 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 ]

<%@ 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 ]

<%@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 ]  --> 회원가입

<%@ 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 ]  --> 회원가입 완료

<%@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 ]  --> 로그아웃

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%
session.invalidate();  // 모든 세션값을 삭제
%>

<script>
	location.href="/";
</script>

 

 

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

<%@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)

<%@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:

@망밍

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

profile on loading

Loading...