
짝수홀수판별기를 만들어보자
prompt 사용자로부터 입력을 받을 수 있는 메시지 창let n=prompt("원하는 숫자를 입력하세요");
삼항연산자 조건 판단삼항연산자가 적합함let result = (n%2==0)? "당신의 숫자는 짝수입니다":"당신의 숫자는 홀수입니다";
console.log(result);
-삼항연산자 별표 다섯 개 (★★★★★)
static 모든 태그 요소에 기본적으로 적용되어있는 '디폴트' 속성relative 다른요소에 의해 밀려나거나, 영향을 받은absolute 자신의 부모요소를 기준으로 한 위치속성※주의※
포지션을 적용할 때는 부모포함 조상 중 단 하나라도 relative or absolute가
적용되어 있어야 위치가 깨지지 않음 (포지션에는 기준이 필요하기 때문)
수학적 개념과 다른 x축, y축
x축 - left값 (오른쪽으로 갈수록 커짐)
y축 - top값 (아래로 갈수록 커짐)
overflow: hidden; 영역을 벗어나는 경우, 안보이게 처리

Joypad를 이용해 비행기를 상하좌우로 조정해보자.
<body>
<div id="wrapper">
<div id="aside">
<table>
<tr>
<td></td>
<td><button onclick="moveUp()">↑</button></td>
<td></td>
</tr>
<tr>
<td><button onclick="moveLeft()">←</button></td>
<td><button onclick="moveDown()">↓</button></td>
<td><button onclick="moveRight()">→</button></td>
</tr>
</table>
</div>
<div id="section">
<img id="hero" src="../../images/plane/plane.png" alt="비행기">
</div>
</div>
</body>
<style>
#wrapper{
width: 900px;
height: 600px;
margin: auto;
overflow: hidden;
}
#aside{
width: 200px;
height: 600px;
background-color: rgb(112, 112, 243);
float: left;
/* 방향키 가운데로 정렬하기 */
display: flex;
justify-content: center; /* 가로 정렬 */
align-items: center; /* 세로 정렬 */
}
#section{
width: 700px;
height: 600px;
background-color: skyblue;
float: left;
position: relative;
/* 자식때문에 */
background-image: url(../../images/plane/bg.jpg);
/* 배경은 뒤에 깔려서 이미지와 자리싸움x(충돌x) */
}
button{
width: 60px;
height: 50px;
background-color: rgb(207, 241, 255);
color: black;
border-radius: 15px;
}
#hero{
width: 40px;
position: absolute;
/* 자신의 부모요소를 기준으로 배치하겠음 */
left: 200px;
top: 100px;
}
</style>
<script>
let x=2;
let y=1; //비행기 위치 초기값 맞춰줘야 자연스러움
function moveRight(){
x++;
// 문서 내의 hero요소에 적용된 css 중 position값 중 left값을 증가시키기
let hero = document.querySelector("#hero");
hero.style.left= x*100+"px";
}
function moveLeft(){
x--;
let hero = document.querySelector("#hero");
hero.style.left= x*100+"px";
}
function moveUp(){
y--;
let hero = document.querySelector("#hero");
hero.style.top= y*100+"px";
}
function moveDown(){
y++;
let hero = document.querySelector("#hero");
hero.style.top= y*100+"px";
}
</script>
position: relative; 주기document.querySelector("#hero") 쿼리셀렉터 사용 시 아이디에 #붙이기document.getElementById("hero") 겟 엘리먼트 바이 아이디 사용 시 아이디에 # 안 붙여도 됨함수선언 연습 많이 해야함... 봐도봐도 헷갈리고 변수도 어떻게 줘야할 지 많이 생각해야하는 부분
그리고 오타주의


스위치를 on/off하면서 방의 밝기도 조절해보자.
<script>
let flag=false;
function onOff(){
flag=!flag;
let img=document.querySelector("img");
let light=(flag)? "on":"off";
img.src="../../images/light/switch_"+ light +".png";
// let dark=document.querySelector("#dark");
let dark=document.getElementById("dark");
// getElementById 쓸 때는 아이디 앞에 # 안씀
let op=(flag)? 0:0.8;
dark.style.opacity=op;
}
</script>
<body>
<div id="wrapper">
<div id="aside"><img src="../../images/light/switch_off.png" onclick="onOff()"></div>
<div id="section">
<img src="../../images/light/room.jpg" alt="방">
<div id="dark"></div>
</div>
</div>
</body>
background-color: black;인 div를 덮고, opacity조절 (불 켰을 때 0, 불 껐을 때 0.8 정도로)! (not)으로 나타내어 flag=!flag로 표현 가능 let flag=false; // 삼항연산자가 이 논리값에 의해 on/off 반환을 결정하므로 이 값을 변수로 둠
function onOff(){
flag=!flag;
let img = document.querySelector("img");
let light=(flag)? "on":"off";
img.src="../../images/light/switch_"+ light +".png";
}
전역변수 하나를 여러 함수에 쓰려니 머리가 복잡해졌다. 이것저것 신경쓰다보니 괜히 어수선해지고 복잡해져 조금씩 잡혀가던 코드들도 엉망이 되는 것 같았다. 그래서 한 가지 함수를 정리할 때는 일단 그 함수에만 집중하고 마무리 지었더니 문제 없이 여러 개 모두 잘 실행시킬 수 있었다. 당황하지 말고, 조급하지 말자!
이벤트 핸들러 이벤트가 발생했을 때 실행될 함수alert() 브라우저 화면에 작은 팝업창을 띄우는 함수onclickondblclickonmouseover 마우스 포인터가 대상에 올려졌을 때onMouseout 마우스 포인터가 대상을 벗어날 때onchange input 요소 (데이터)가 변경되었을 때onload 브라우저에서 문서를 읽을 때onfocus input 요소에서 대상에 커서가 들어올 때onblur input 요소에서 대상에 커서가 벗어났을 때onkeydown 키를 눌렀을 때 바로 발생onkeyup 키를 눌렀다 손을 뗐을 때 발생키보드 이벤트는 문서 전체가 대상
브라우저 창 안 어딜 클릭했든 상관없이 키보드 입력이 감지
예제를 다루다보면 onclick을 굉장히 많이 쓴다...
SELECT * FROM [테이블명] WHERE text IN (1, 2, 3);
SELECT * FROM [테이블명] WHERE text=1 OR text=2 OR text=3;
SELECT * FROM [테이블명] WHERE number BETWEEN 1 and 3;
SELECT * FROM [테이블명] WHERE number>=1 and number<=3;
SELECT * FROM [테이블명] WHERE text LIKE '%K%';
%K% K가 들어가는
K$ K로 시작하는
$K K로 끝나는
SELECT * FROM [테이블명] WHERE text IS NULL;
null은 값이 아니기 때문에 =을 쓸 수 없음
limit 시작행 번호, 개수
select * from emp order by sal desc limit 1,1;
두번째 높은 급여자
select * from emp order by sal desc limit 0,1;
첫번째 높은 급여자
데이터 부분 조회 limit과 offset
급여가 낮은 순으로 정렬된 상태에서, 상위 2명은 제외시키고 3번째 부터 시작하여 5명의 이름, 급여, 부서번호를 출력하시오
select ename, sal, emptno from emp order by sal asc
limit 5 offset 2; (상위 2명 제외 `offset` 그 다음 5명만`limit` 출력)
다중 order by
SELECT * FROM [테이블명] ORDER BY 열1 ASC/DESC, 열2 ASC/DESC, ...;
order by asc 오름차순order by desc 내림차순javascript를 하느라 sql문 복습을 소홀히 했더니 간단한 쿼리문도 다 잊어버려서 예제를 푸는데 꽤나 애를 먹었다. 편식하는 식습관이 몸에 좋지 않은 것처럼 공부편식도 개발적 성장에 좋지 못하다는 것을 다시금 느낄 수 있었다. 조금씩이라도 매일 매일 골고루 복습하는 습관을 길러야겠다.
CREATE 데이터베이스, 테이블 등 생성ALTER 테이블 수정DROP 데이터베이스, 테이블 삭제create table member(id varchar(20),pwd varchar(64),email varchar(25));
show tables; 테이블(데이터) 확인
desc member; 구조 확인
<컬럼 추가하기>
문자 20자 수용가능한 name컬럼 추가하기
alter table member **add** name varchar(20);
<테이블명 변경>
member -> membership 바꾸고싶을 때
**rename** table member **to** membership;
<컬럼명 변경>
pwd->pass 바꾸고싶을 때
alter table member **change** pwd pass varchar(64); //크기도 명시
<컬럼 용량 추가>
email컬럼의 varchar(25)를 (35)로 늘리고 싶을 때
alter table member **modify** email varchar(35);
<테이블 제거하기>
**drop** table membership;
'삭제''초기화' 등 DDL은 아주 무서운 언어다.. 조심!