안드로이드 스튜디오를 시작해 보려고 모든 준비를 끝마쳤다.

나온 지 jdk설치, 안드로이드 스튜디오 설치 + 젤리빈부터 오레오까지 모든 sdk깔기 ,10달도 안된 신상 책 구매까지


그리고 기쁜 마음으로 새 프로젝트를 만들었는데 만들자마자 붉은 줄이 낭자한 화면을 맞이하고야 말았다.





정확히 낭자는 아니고 2줄 정도...


아무튼 빈 엑티비티를 선택하고 만든 깨끗한 프로젝트인데 버그라니...


덕분에 처음에는 3.0을 깔았는데 혹시 몰라서 2.3.3으로 다운그레이드도 해보고

sdk매니저에서 관련 있어 보이는 모든 sdk와 툴도 깔고 구글링도 하며 삽질을 해보았다.


결론은 


빌드 그레이들(build.gradle (Module: app) )을 위에 처럼 바꾸면 된다...


좀 꺼림칙해서 마지막까지 시도하지 않으려던 건데 나만 문제가 있는 건지 아니면 모두가 겪는 일인지는 모르겠지만 구글이 좀 노력했으면 좋겠다.

블로그 이미지

stuban

ㅇ.ㅇ

,

mysql Limit

프로그래밍/SQL 2017. 10. 22. 15:58

mysql이랑 mssql은 확실히 많은 부분이 다른 거 같다.


Select를 했을때 위에서부터 선착순으로 출력하는 TOP이라는 절이 있는데

이건 mySQL에서는 작동하지 않는다.


그 대신 LIMIT라는 게 있는데 이건 TOP와 같은 기능이지만 좀 쓰는 법이 다르다.


(테스트용 테이블은 1~10 까지 순서대로 들어있는 테이블)


1
select * from test limit 5; #5순위까지 
cs




1
select * from test limit 5,5; #5순위부터 5순위까지
cs


참고


'프로그래밍 > SQL' 카테고리의 다른 글

sql 프로시저 만들기  (0) 2019.08.07
sql 함수 만들기  (0) 2019.08.07
sql의 주석  (0) 2017.10.19
유니티와 mysql 연동하기  (0) 2017.10.19
mysql 자동증가값(auto_increment) 가지고 오기  (0) 2017.10.13
블로그 이미지

stuban

ㅇ.ㅇ

,

sql의 주석

프로그래밍/SQL 2017. 10. 19. 22:21

mssql로 처음 sql을 배웠을 때 --가 주석인 줄 알았는데 

mysql에서 먹히지 않는 걸 보고 검색을 해보니 mysql에서는 --을 지원하지 않는다고 한다.



그러니깐 mysql의 주석은 # 혹은 /**/이고 --은 사용할 수 없다.


ANSI는 미국 표준이라는 뜻인데 표준을 지원하지 않는다니 뭔가 이해가 되지는 않는다...


참고

http://honesger.tistory.com/1

'프로그래밍 > SQL' 카테고리의 다른 글

sql 함수 만들기  (0) 2019.08.07
mysql Limit  (0) 2017.10.22
유니티와 mysql 연동하기  (0) 2017.10.19
mysql 자동증가값(auto_increment) 가지고 오기  (0) 2017.10.13
오늘 새로배운 mysql 정리  (0) 2017.10.12
블로그 이미지

stuban

ㅇ.ㅇ

,

우선 기본 구조는 유니티에서 php로 정보를 보내고 php에서 정보를 토대로 mysql에 쿼리를 보내서 (혹은 프로시저를 호출해서) 정보를 받고 다시 유니티에 보내는 방식이다.




일단 유니티에서 php를 호출 하는 코루틴


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//맵 정보 검색하기
private IEnumerator GetMapInfos(string word)
{
    WWWForm form = new WWWForm();//php에 보낼 폼을 만듦
        
    //전해줄 정보 입력
    form.AddField("way", searchWay.ToString());
    form.AddField("word", word);
 
    WWW webRequest = new WWW("http://127.0.0.1/GetMapInfo.php",form);//127.0.0.1은 로컬 호스트 주소
 
    yield return webRequest;//정보가 올 때까지 기다림
 
    if (webRequest.isDone)//잘되면
    {
        ShowResult(webRequest.text);
    }
    else//안되면
    {
        Debug.Log(webRequest.error);
    }
}
cs


쓸 때는 그냥 코루틴 호출 하듯이 하면 된다.



php소스 (apmSetup을 사용한다면 C:\APM_Setup\htdocs)안에 파일을 넣으면 된다.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
 
$way = $_POST['way']; //검색 방법 (0 = id 1 = 이름 2 = 제작자)
$word = $_POST['word']; //검색문
 
 
//xml로 반환을 위함
$xmlout = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
$xmlout .= "<mapinfos>";
 
//mysql연결
$connect = mysql_connect("127.0.0.1","root","apmsetup") or die("connect fail!".mysqli_error());
if(!$connect) die("connect fail!".mysql_error());
 
mysql_select_db ("test",$connect);//데이터베이스 사용
 
//쿼리 호출 방법
if($way == "0")//1 = id검색
    $sql = "SELECT * FROM testable WHERE id = '".$word."'";
else if($way == "1")//2 = 이름 검색
    $sql = "SELECT * FROM testable WHERE name LIKE '%".$word."%'";
else //3 = 제작자 검색
    $sql = "SELECT * FROM testable WHERE maker LIKE '%".$word."%'";
 
$result = mysql_query($sql,$connect);
 
while($row = mysql_fetch_array($result))
{
    $xmlout .= "<info>";
 
    $xmlout .= "<id>".$row['id']."</id>";
    $xmlout .= "<maker>".$row['maker']."</maker>";
    $xmlout .= "<name>".$row['name']."</name>";
    $xmlout .= "<map>".$row['map']."</map>";
 
    $xmlout .= "</info>\n";
 
 
$xmlout.= "</mapinfos>";
 
echo $xmlout;
 
mysql_free_result($result);//결과 지우기 
mysql_close($connect);//db와 연결 끊기
?>
 
cs


php에 select 결과를 xml로 뽑아주는 플러그인? 이 있다고 하는데 우선 야매로 처리했다.

(xml 사용법은 이전 블로그 글 참고)



테이블 구조



테이블 만드는 쿼리


1
2
3
4
5
6
7
create table  (
    id int(5unsigned zerofill not null auto_increment#자동증가 되는 id
    maker varchar(30not null#제작자
    name varchar(30not null#맵 이름
    map text not null#맵 정보
    primary key(id)
);
cs


참고로 cmd로 쿼리를 입력할 때는 주석이 오류를 낸다.(다른 방식으로 하면 되는지는 모르겠음)

방법찾음




결과 




참고로 웹 결과에는 <>안에 있는 내용이 나오지 않는다.


xml을 보기 편하게 해주는 헤더가 있다고 해서 시도해 봤는데 시간만 줄창 날렸다.

어차피 유니티에서는 잘 작동하니깐 시간 낭비할 필요는 없을 거 같다.



내가 시도해 보려고 한 유튜브 튜토리얼


'프로그래밍 > SQL' 카테고리의 다른 글

mysql Limit  (0) 2017.10.22
sql의 주석  (0) 2017.10.19
mysql 자동증가값(auto_increment) 가지고 오기  (0) 2017.10.13
오늘 새로배운 mysql 정리  (0) 2017.10.12
sql 메모  (0) 2017.10.11
블로그 이미지

stuban

ㅇ.ㅇ

,

http://lmgtfy.com/


예전에 프밍 선생님이 알려주신 적이 있었는데 까먹고 있다가

phpschool에서 질문답을 이걸로 하는 걸 보고 갑자기 생각남 ㅎㅎ


사용법은 http://bfy.tw/5G0

블로그 이미지

stuban

ㅇ.ㅇ

,

LAST_INSERT_ID()


LAST_INSERT_ID()라는 함수가 있다.

마지막으로 추가된 increment값을 가지고 올 수 있다고 한다.

아직 써보지는 않았지만 나중에 프로시저하나 만들어서 관리할 때 써먹어야겠다.


http://dongz.tistory.com/entry/MYSQL-%EC%9E%90%EB%8F%99%EC%A6%9D%EA%B0%80%EA%B0%92-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0


'프로그래밍 > SQL' 카테고리의 다른 글

sql의 주석  (0) 2017.10.19
유니티와 mysql 연동하기  (0) 2017.10.19
오늘 새로배운 mysql 정리  (0) 2017.10.12
sql 메모  (0) 2017.10.11
apmSetup  (0) 2017.10.11
블로그 이미지

stuban

ㅇ.ㅇ

,


--오늘 만든 테이블

1
2
3
4
5
create table tb (
    id int(5unsigned zerofill not null auto_increment,
    name varchar(30not null,
    primary key(id)
)
cs


1. AUTO_INCREMENT 


컬럼을 정의할 때 데이터 타입 뒤에 auto_increment를 적고 (영어로 자동 증가라는 뜻)

primary key에 auto_increment를 넣어주면 자료가 하나씩 들어갈 때마다 알아서 하나씩 증가한 값을 넣어준다.


mssql의 identity 비슷한거 같다. (mysql에는 없는 기능인거 같음)


그러나 어찌 된 일인지 자동 증가를 선언할 때 컬럼명이 index이면 오류가 난다.


https://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html



2. UNSIGNED


C언어 배울 때 자료형 목록을 보면서 본 적이 있는 단어다.

숫자의 음수 부분을 없애준다.



3. ZEROFILL


숫자형 데이터 타입 목록을 보면 뒤에 괄호를 치고 숫자를 넣을 수 있다고 되어있다.

만약 괄호를 치고 숫자를 넣는다면 . . .


아무일도 일어나지 않는다.



하지만 그때 뒤에 zerofill을 적어주면 

1을 넣었을 때 00001이라고 표시가 되는 것 이다.

(자릿수를 정의하고 남는 자릿수에 0(zero)을 채워줌(fill))


http://blackbull.tistory.com/44


'프로그래밍 > SQL' 카테고리의 다른 글

유니티와 mysql 연동하기  (0) 2017.10.19
mysql 자동증가값(auto_increment) 가지고 오기  (0) 2017.10.13
sql 메모  (0) 2017.10.11
apmSetup  (0) 2017.10.11
SQL 정리 - 2 자료형들  (0) 2017.05.20
블로그 이미지

stuban

ㅇ.ㅇ

,

sql 메모

프로그래밍/SQL 2017. 10. 11. 21:20

예전에 sql수업 좀 들으면서 메모장에 메모한 메모


하나씩 잘 정리해서 블로그에 꾸준히 올리려고 했는데

귀찮아서 안 하다가 파일을 잃어버릴 뻔했다.


다행히 외장하드 한구석에 남아있어서 꺼내오기는 했는데

다시 잃어버릴까봐 그냥 한번에 올림.








sql 메모



CREATE DATEBASE 이름; -- 데이터 베이스 만들기


use Test; -- Test데이터 베이스 사용                                                


CREATE TABLE testTable(


number int identity(1,1) not null, --바꿀수 없는 자료 identity(시작하는 숫자,추가할따마다 추가되는 숫자)


Code INT, --코드 int

Title NVARCHAR(50), --타이틀 string NVARCHAR = 유니코드를 사용하는 문자

Price INT -- 가격 int

);                                     


dbcc checkident(테이블이름,0); -- 테이블의 아이덴티티값을 초기화


INSERT INTO 테이블이름(Code,Title,Price) --집어넣을 테이블 이름과 자료형 명시

VALUES (123,'스트링',500);--집어넣을 자료    


DELETE 테이블이름; --싸그리 지워 버리기                    


SELECT * FROM 테이블이름; --모든 테이블 정보

SELECT 원하는항목,원하는항목2 FROM 테이블이름; 


SELECT DISTINCT 원하는항목 FROM 테이블이름 --원하는 항목중 중복되는 것은 거름


--행추가

ALTER TABLE 테이블이름

ADD 추가할데이터이름 데이터형 초기값;


--행제거

ALTER TABLE 테이블이름

DROP COLUMN 행이름


--오름차순 정렬

SELECT * FROM 테이블이름 ORDER BY 행이름 ASC;

--내림차순 정렬

SELECT * FROM 테이블이름 ORDER BY 행이름 DESC;


--비교

select  * from 테이블이름 where 조건식; --논리연산자는 영어로 씀 and,or,not 그리고 "같다"는 '=' 하나만


--문자열 찾기

select * from 테이블 where 행이름 like '%예%';-- %''앞에 어떤글자를 포함함

select * from 테이블 where 행이름 like '__예';-- _앞에 _만큼의 글자가 있음


--값의 범위

select * from 테이블이름 where 행이름 between 0 and 30;


--널 검사

select * from 테이블이름 where 행이름 is null;--널이면 트루 

select * from 테이블이름where 행이름 is not null;--널이아니면 트루


--원하는값

select * from 테이블이름 where 행이름 in (원하는값1,원하는값2,ext)

select * from 테이블이름 where 행이름 not in (원하는값1,원하는값2,ext)


--출력하는 개수

select Top 1 * from 테이블이름;--위에서 선착순으로 출력


--foreach

update 테이블이름 set 설정값1,설정값2 where 설정조건;


--삭제

delete from 테이블이름 where 조건;




--함수들


--모든곳에서 사용가능한 함수


ceiling(실수) -- 올림

floor(실수) -- 내림


rand() -- 0~1 까지의 랜덤 숫자

round(숫자,반올림할 자리) -- 반올림할자리를 지정하여 반올림


len('문자열') --문자열의 길이

SUBSTRING('text',자릿수,가지고올길이) -- 텍스트의 자릿수번째부터 가지고올길이까지 가지고오기


ltrim('문자열')--왼쪽의 공백 제거

rtrim('문자열')--오른쪽의 공백 제거


upper('문자열') --문자열 대문자화

lower('문자열')--문자열 소문자화


getdate() -- 날자와 시간 정보

year(getdate()); --날자와 시간정보에서 연도구하기

month(getdate());--날자와 시간정보에서 달구하기

day(getdate());--날자와 시간정보에서 날자구하기


dateadd(d,1,'2017-3-13'); --날자에 1더하기

datediff(m,'2016-2-13','2017-3-13');  -- 2날자의 차이 구하기 (달단위)


datename(weekday,getdate()); -- 현제 요일의 이름


datepart(yyyy,getdate()); --현제 날자의 년도 뽑기

convertconvert(nvarchar(10),getdate(),112);; --날자 표시 형식 변경 (반환형,변경할거,코드)


--타입변환

cast(0,245 as varchar);--실수를 문자열로

cast('2016-03-11' as datetime)--문자열을 날자형으로


--테이블의 함수


select avg(행이름) from 테이블이름


AVG -- 평균

SUM -- 합계

COUNT -- 모든개수

MAX --최대값

MIN --최솟값



--그룹 바이

select name , Max(score) as high, min(score) as low from tbl_game group by name;

--이름이 같은사람끼리 그룹을 지어서 최댓값과 최솟값을 출력


select name , SUM(score) as su from tbl_game group by name having (sum(score) >= 300);

--그룹바이가 된 항목에 조건을 걸려면 having 을 사용



--서브 쿼리 

select * from tbl_game where point1 >= (select avg(point1) from tbl_game);

--셀렉트문안에 셀렉트문을 또 쓸수 있다          


--조인


select *from book cross join Orders;

--단순히 조합을 함  ,  으로 대신할수도 있음

select * from 테이블1 inner join 테이블2 on 테이블1.id = 테이블2 .id;

--on으로 조건을 줄수 있음

select *from 테이블1 left join 테이블2 on 테이블1.id = 테이블2.id; 

--왼쪽을 기준으로 조인을함


--번수 선언

declare @변수이름 테이터타입; -- 변수이름에 반드시 @가 있어야함

--변수 대입

set @변수이름 = 3;


--조건문


if 조건

begin --begin으로 시작해서 end로 끝남

실행문

end

else

begin

실행문

end                            


--while

while @test <10

begin

select @test;

set @test += 1;

end                               


--case 


바꿀 변수 = 

case 케이스에집어넣을변수

when 0 then 바꿀값1

when 1 then 바꿀값2

else 바꿀값3

end                                      


--isnull

if isnull(@temp,'') != ''

--널 값을 확인하고 대체값을 넣어줌 대체값을 보고 널인지 아닌지 구별할 수 있다



--뷰

--테이블에서 필요한 부분만 가져온 가상의 표 

--뷰와 테이블은 연동된다

--insert와 delete는 join이 되어있지 않은 뷰만 된다


--뷰 만들기

create view 만들고싶은뷰이름 as select * from  원래있던테이블 where 조건;


--뷰 삭제

drop view 뷰이름;


--집합연산자

select name from 테이블1 union select name from 테이블2--union 중복된데이터를 정리해서 기지고옴

select name from 테이블1 union all select name from 테이블2--union 중복된데이터도 가지고옴


select name from 테이블1 intersect select name from 테이블2;--intersect  교집합


select name from 테이블1 except select name from 테이블2;--except 처음에 쓴거를 중심으로 교집합


--ALL 서브쿼리 비교

select * from 테이블이름 where price > all (select saleprice from 테이블이름2)--서브쿼리의 모든값과 비교(and)


--ANY 서브쿼리 비교

select * from 테이블이름 where price > all (select saleprice from 테이블이름2)--서브쿼리의 값중 아무값과 비교하고 싶을때 (or)


--순위정렬

Select ROW_NUMBER() OVER(ORDER BY 열이름)from 테이블;--중복이 있어도 레코드 순서를 하나씩 표시

Select RANK() OVER(ORDER BY 열이름)from 테이블;

Select DENSE_RANK() OVER(ORDER BY 열이름)from 테이블;


--순위정렬로 랭크정렬하여 테이블에 기록

update emp set ranking = (

select r from

(select EMPNO,rank() over(order by sal desc) as r from emp) as t

where t.EMPNO = emp.EMPNO)



--new id

select newid();--서버의 네트워크 카드 MAC주소와 컴퓨터 시계로 부터 얻은 유일한 값의 조합

select checksum(newid()); --정수로 변환


--테이블 섞기

select * from emp order by newid();--newid로 섞기



--비밀번호


pwdencrypt('비밀번호'); -- 암호화

pwdcompare('12345',pw) = 1 ; --비교


select pwdcompare('1234',pw) from login where id = 'pc1';//로그인


'프로그래밍 > SQL' 카테고리의 다른 글

mysql 자동증가값(auto_increment) 가지고 오기  (0) 2017.10.13
오늘 새로배운 mysql 정리  (0) 2017.10.12
apmSetup  (0) 2017.10.11
SQL 정리 - 2 자료형들  (0) 2017.05.20
SQL 정리 - 1 테이블 생성과 수정  (0) 2017.05.17
블로그 이미지

stuban

ㅇ.ㅇ

,