웹 애플리케이션 만들기

데이터베이스(MySQL) 이론

데이터베이스 이론1

codeanywhere를 실습환경으로 이용하고 계신 분들은 codeanywhere로 터미널 이용하기 영상을 보시면 다음 영상의 실습을 따라할 수 있습니다.

데이터베이스 이론2

윈도우 

mysql -hlocalhost -uroot -p

리눅스, 맥

./mysql -hlocalhost -uroot -p

데이터베이스 보기

show databases;

데이터베이스 생성

CREATE DATABASE opentutorials CHARACTER SET utf8 COLLATE utf8_general_ci;

데이터베이스 선택

use opentutorials;

테이블 생성

CREATE TABLE `topic` (
`id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `description` text NOT NULL,
  `author` varchar(30) NOT NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

생성된 테이블 확인

show tables;

데이터 삽입

INSERT INTO `topic` (`id`, `title`, `description`, `author`, `created`) VALUES(1, 'About JavaScript', '<h3>Desctiption</h3>\r\n<p>JavaScript  is a dynamic computer programming language. It is most commonly used as part of web browsers, whose implementations allow client-side scripts to interact with the user, control the browser, communicate asynchronously, and alter the document content that is displayed.</p>\r\n<p>\r\nDespite some naming, syntactic, and standard library similarities, JavaScript and Java are otherwise unrelated and have very different semantics. The syntax of JavaScript is actually derived from C, while the semantics and design are influenced by the Self and Scheme programming languages.\r\n</p>\r\n<h3>See Also</h3>\r\n<ul>\r\n  <li><a href="http://en.wikipedia.org/wiki/Dynamic_HTML">Dynamic HTML and Ajax (programming)</a></li>\r\n  <li><a href="http://en.wikipedia.org/wiki/Web_interoperability">Web interoperability</a></li>\r\n  <li><a href="http://en.wikipedia.org/wiki/Web_accessibility">Web accessibility</a></li>\r\n</ul>\r\n', 'egoing', '2015-03-31 12:14:00');
INSERT INTO `topic` (`id`, `title`, `description`, `author`, `created`) VALUES(2, 'Variable and Constant', '<h3>Desciption</h3>\r\n\r\nIn computer programming, a variable or scalar is a storage location paired with an associated symbolic name (an identifier), which contains some known or unknown quantity or information referred to as a value. The variable name is the usual way to reference the stored value; this separation of name and content allows the name to be used independently of the exact information it represents. The identifier in computer source code can be bound to a value during run time, and the value of the variable may thus change during the course of program execution.\r\n\r\n<h3>See Also</h3>\r\n<ul>\r\n<li>Non-local variable</li>\r\n<li>Variable interpolation</li>\r\n</ul>\r\n', 'k8805', '2015-05-14 10:04:00');
INSERT INTO `topic` (`id`, `title`, `description`, `author`, `created`) VALUES(3, 'Opeartor', '<h2>Operator</h2>\r\n<h3>Description</h3>\r\n<p>Programming languages typically support a set of operators: constructs which behave generally like functions, but which differ syntactically or semantically from usual functions</p>\r\n<p>Common simple examples include arithmetic (addition with +, comparison with >) and logical operations (such as AND or &&). </p>\r\n', 'egoing', '2015-06-18 05:00:00');
INSERT INTO `topic` (`id`, `title`, `description`, `author`, `created`) VALUES(4, 'Conditional', '<h3>Description</h3>\r\n<p>In computer science, conditional statements, conditional expressions and conditional constructs are features of a programming language which perform different computations or actions depending on whether a programmer-specified boolean condition evaluates to true or false. Apart from the case of branch predication, this is always achieved by selectively altering the control flow based on some condition.</p>\r\n<p>In imperative programming languages, the term "conditional statement" is usually used, whereas in functional programming, the terms "conditional expression" or "conditional construct" are preferred, because these terms all have distinct meanings.</p>\r\n<h3>See Also</h3>\r\n<ul>\r\n<li><a href="http://en.wikipedia.org/wiki/Branch_(computer_science)" title="Branch (computer science)">Branch (computer science)</a></li>\r\n<li><a href="http://en.wikipedia.org/wiki/Conditional_compilation" title="Conditional compilation">Conditional compilation</a></li>\r\n<li><a href="http://en.wikipedia.org/wiki/Dynamic_dispatch" title="Dynamic dispatch">Dynamic dispatch</a> for another way to make execution choices</li>\r\n<li><a href="http://en.wikipedia.org/wiki/McCarthy_Formalism" title="McCarthy Formalism">McCarthy Formalism</a> for history and historical references</li>\r\n<li><a href="http://en.wikipedia.org/wiki/Named_condition" title="Named condition" class="mw-redirect">Named condition</a></li>\r\n<li><a href="http://en.wikipedia.org/wiki/Test_(Unix)" title="Test (Unix)">Test (Unix)</a></li>\r\n<li><a href="http://en.wikipedia.org/wiki/Yoda_conditions" title="Yoda conditions">Yoda conditions</a></li>\r\n</ul>', 'c2', '2015-07-25 00:00:00');

 

댓글

댓글 본문
작성자
비밀번호
  1. sung박
    mysql>select id,title,author,created FROM topic셀렉트와 프럼 사이에 컬럼들이 옴
  2. HHHHHHHH
    이고잉님 덕분에 너무 잘 공부하고 있습니다

    앱개발에 관련되어있는부분의 지식이 부족하여
    분야가 조금다르지만 이고잉님이라면 어느정도 알고 계시지 않을까 싶어 질문을 드립니다.

    게임을 개발하고 있는데, 많은 게임들이 가지고 있는 기능인 Facebook같은 소셜네트워크와의 연동, 리더보드에 관한 기술적인 부분에 대해서 잘 몰라서 고민이 많습니다.

    이같은 플랫폼과 제 앱을 연동 하려면 API를 보아야 하는 것인가요?
    페이스북 개발자 홈페이지를 둘러보니까 로그인을 연동하려면 Android같은 환경에서 연동시키는 것 처럼 보여서 질문드립니다.

    그렇다면 게임개발은 개발대로하고 API연동을 할 때에는 android나 IOS의 언어를 꼭 알고있어야 하는 것인지 궁금합니다
  3. egoing
    윈도우에선 ./ 없이 하셔야 합니다~
    대화보기
    • 초보코딩
      아래에 댓글 남겼다가 다시 씁니다.

      제가 새롭게 시도하면 또 똑같은 에러가 뜨더라구요.
      저는 우분투 사용자인데요

      지금 이고잉님께서 ./mysql -hlocalhost -uroot -p 라고 하셨는데 항상 ./ 를 치면 에러가 났네요

      그냥 /opt/lampstack-7.2.0-0/mysql/bin$ mysql -u root -p 치고 들어가면 잘 들어가집니다....

      문제 해결해서 기쁘네요
    • 초보코딩
      저 같은 분 있을지 모르겠네요.

      ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

      이 에러가 계속 나서 방법을 찾다가 https://help.ubuntu.com......set 여기서 위의 방법은 복잡해서 안 했고 아래 방법으로 purge를 하게 되었습니다. 그랬더니 hlocalhost 를 치지 않고 그냥
      mysql -uroot -p
      이렇게 했더니 들어가지네요 ...! 어떻게 된 건지는 모르겠습니다..

      제가 bitnami를 여러번 설치하게 되면서 localhost:8080을 사용중이었는데 이거랑 관계가 있나요 ?

      근데 hlocalhost, hlocalhost:8080 다 실패했습니다... 전 어디로 접속한걸까요?
    • 코딩잘하고싶어요 ㅎ
      예전에 SQL을 억지로 공부했던 적이 있었는데, 다시 재밌게 공부해보려 합니다.ㅎㅎ SQL에 대해 관심이 생기게 되었습니다.
    • 이현규
      항상 잘보고잇습니다. 궁금한점이 잇어서 질문해보겟습니다
      비트나민설치할때 mysql패스워드를 까먹엇는데 변경하거나 다시 찾는 방법은 어떻게 하나요 ㅠㅠ
    • 슝태
      20180117
    • Keanue
      94번 정리2 동영상을 보다 아래와 같이 mysql_fetch_assoc 오류를 만나신 분 혹시 계시나요?

      PHP Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\\Bitnami\\wampstack-7.0.23-0\\apache2\\htdocs\\practice1\\index.php on line 6

      구글링을 하다가 우연히 답을 찾게 되었는데, 아래가 제가 무턱대고 따라했던 코드들의 원본입니다.
      <?php
      $conn=mysqli_connect('localhost','root','XXXXXX');
      mysqli_select_db($conn,'opentutorials2');
      $sql="SELECT*FROM 'topic'";
      $result=mysqli_query($conn,$sql);
      $row=mysqli_fetch_assoc($result);
      print_r($row);
      ?>
      6번째 라인 $row=mysqli_fetch_assoc($result); 는 해석에 따르면 boolean 은 결국 값이 참이냐 거짓이냐를 말하는 건데, 이 경우는 답이 거짓이라는 거구요. $result값이 거짓으로 나오는 이유는 그 위에 위에 $sql="SELECT*FROM 'topic'"; 에 있었습니다.

      제가 이 문장을 어떻게 수정했냐면 아래와 같이 싱글 quote, 즉 한개 따옴표를 제거했더니 제대로 돌아가기 시작했습니다.
      $sql="SELECT*FROM topic";

      세상에 quote 하나 때문에 며칠을 헤매다가 겨우 답을 찾았는데요... ㅠㅜ
      SQL문에서 ' 한개 따옴표 안에 있는 경우는 문자를 text로 인식해서 그렇다고 하는데요.
      왜 동영상에서는 문제 없이 돌아가던데.. 제가 했을 때는 안됬을까요?
      아무튼 혹시나 저와 동일한 문제로 고민하시는 분 계신다면 도움이 됬으면 합니다.
    • 쪼꼬우유
      끝에 세미콜론 붙이세요ㅋㅋ
      뭐 잘못 치고 엔터쳤다가 새로 입력할라면 \c 치고 엔터 친 다음에 입력하세요
      \c는 잘못입력했다고 친거 없애라고 하는 거예요
      대화보기
      • 1/10 -29일째
        감사합니다.^^
      • PassionOfStudy
        18-01-05 9일차 - 1번째 강의

        수강완료!


        DATABASE mysql 시작~!
      • ㅇㅇ
        저는 ./mysql -hlocalhost -uroot -p하고 비밀번호 제대로 입력했는데 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 이 에러가 떳어요.
        그때 옛날에 따로 깔아둔 mysql다 지우니까 바로됐습니당...
      • mysql을 하려는데 어느순간부터 mysql이 실행이 안됩니다...어떻게 해결할 수 있을까요?
        비트나미 사용중이고 비트나미 매니저에서
        MySQL Database를 start하면 starting...이 뜨다가 응답 없음 상태가 됩니다.
        그러다가 다시 stopped로 돌아가집니다...어쩌면 좋을까요?
      • 황성찬
        D에 있던 bitnami를 삭제하고 C에 다시 깔았더니 변경이 됐습니다.
        cmd로는 드라이브간의 이동은 불가능한가 보군요
        대화보기
        • 황성찬
          혹시 cmd에서 cd를 할 때 cmd는 C드라이브에 있고 bitnami는 D드라이브에 있으면 디렉토리 변경이 불가한가요?
          똑같이 cd하고 위치 복사도 해보고 자동완성으로 해봐도 오류는 안뜨는데 디렉토리는 변경되지 않습니다.
          관리자 권한으로 실행해보기도 했구요. 저는 탭키로 자동완성을 하면 해당 텍스트에 "" 가 붙는데 혹시 해결 하는 방법이 있을까요?
        • 2017년 12월 21일 수강완료
          오랜만이네요
        • 문외한
          데이터 삽입 예시에 'id'는 없는 게 좋겠네요 강의에도 id는 뺐는데 id가 있으니 INSERT할 때 기존 내용과 충돌하네요.
        • 김현태
          아! 여기있어구나!!!
        • 헬프
          저도 안되었는데 cmd 관리자모드로 여닌까 성공했어요
          대화보기
          • ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ENGINE=InnoDB DEFAULT CHARSET=utf8' at line 2

            이런오류가 나는데 오타는 아닌거같은데 무슨이유죠??
          • 결국다시깔아서 다시 공부시작했어요. 제가 어리버리해서 결국해내진못했지만 답글주신분들께 감사드립니다ㅠ
          • 네 다시 까세요~~~ 그 땐 기억 잘하시구요~
            대화보기
            • 비번을 찾느라 링크해주신대로 이것저것 시도해봤는데 잘 안되네요..ㅠ 처음에는 그래도 Enter password라도 나왔는데.. 이것저것 건드린 이후로... mysql -hlocalhost -uroot -p 엔터해도 [ERROR] unknown option'--skip-grant-tables'만 뜨네요...ㅜ 지우고 다시 깔면 해결될까요?ㅜ
            • hanulsso
              비번을 찾았습니다.
              하루만에 다시 진도 나가겠습니다.
              감사합니다~~
            • 이근환
              2017-12-7 수강 9일차

              수강완료하였습니다!!:)
            • hanulsso
              <아래> 내용을 어디서 찾아서 따라하는데,
              mysql정지 시키고, 명령프롬프트 프로세스에서 제대로 안넘어가네요..
              아무래도 저는 mysql은 포기해야 할듯 합니다...

              <아래>

              명령 프롬프트가 화면에 표시되면 이후 아래의 명령어를 입력합니다.
              인증 없이 MySQL에 진입할 수 있도록 MySQL 데몬을 띄우는 내용입니다.
              cd C:\Bitnami\wampstack-5.6.25-0\mysql\bin
              mysqld --skip-grant

              ③ 비밀번호 재설정
              이제 명령 프롬프트 새로 하나 더 띄우고 아래의 명령어를 입력합니다.
              SQL을 이용해서 root 계정의 비밀번호를 변경하는 내용입니다.
              아래 명령어에서 '1q2w3e4r' 부분에는 원하는 비밀번호를 입력하시면 됩니다.
              cd C:\Bitnami\wampstack-5.6.25-0\mysql\bin
              mysql.exe
              use mysql;
              update user set password=password('1q2w3e4r') where user='root';
              flush privileges;
              대화보기
              • hanulsso
                근데 제 컴에서는 왜 관리도구 -> 서비스 내에 MySQL server가 없을까요......
                MySQL server를 정지하고 다음으로 넘어가라는데.. 할수가 없습니다.
                ㅠㅠ
                대화보기
                • egoing
                  검색어 추천해드릴께요~
                  https://www.google.co.kr......wIA
                  대화보기
                  • 멘붕
                    비밀번호를 잊어버려서 자꾸 오류가 납니다. 비밀번호 변경이나 비밀번호를 알수는 없을까요??ㅠ 아님 Bitnami를 다시 깔아야 하는 건지..ㅠ이것때문에 진도나가기가 어려운 상황입니다..ㅠㅠ
                  • hanulsso
                    비밀번호 오류가 자꾸 나는데요 저는 입력 비밀번호가 기억이 안나는데 어쩌죠?
                    ERROR 1045 <28000> Access denied ~~~
                    이렇게 계속 뜹니다.
                    도움을 부탁드립니다.
                  • 김준범
                    초등학교때 MS도스 명령어 배우던 생각이 나네요. 그 시절의 호기심과 재미가 되살아나는 것 같습니다.
                  • 박인호
                    11-25
                    수강완료.
                    SELECT (데이터를 가지고 올 칼럼 명) FROM (테이블명);
                    건지고 가겠습니다.
                  • 박신우
                    와!! 정말 감사합니다!! 덕분에 해결했어요 정말 감사합니다!!
                    대화보기
                    • 주찬시
                      혹시 Bitnami 설치중 MySQL 포트를 3306 이 아닌 다른 것으로 하셨나요?
                      예를 들어 3307 이라던지.. (이전에 MySQL이 설치된 상태에서 Bitnami를 설치하셨다면 이런 상황이 발생합니다.)
                      그러시면 소스에서
                      mysqli_connect('localhost', 'root' ~~
                      대신
                      mysqli_connect('localhost:3307', 'root' ~
                      요렇게 해보세요.
                      대화보기
                      • 박신우
                        Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in C:\Bitnami wamp\apache2\htdocs\index.php on line 2

                        계속 이런 오류가 나네요 ㅠㅠㅠ 도와주세요 뭐가 문제일까요?
                      • atnskynst
                        11/20
                      • 서성진
                        환상적이네요. 너무 재미있습니다.
                      • 유상원
                        2017-11-11 완료!
                      • 드라이브가 달라서 그런 것 같습니다.
                        cd /d [주소]로 해보세요.
                        대화보기
                        • sooony
                          정확히 어떤 에러가 나는지 말씀을 안해주셔서 모르겠지만... dir C:\Bitnami\...(생략) 으로 치셔야합니다. cmd 명령어인 dir를 빠뜨리신 것 같네요.
                          대화보기
                          • sql초짜
                            윈도우 10 쓰는데 명령프롬프트에서 주소를 아무리 쳐도 디렉토리가 안 바뀝니다.
                            어떻게 해야되는 거죠 ??
                          • SQL초보
                            마지막에

                            ;

                            를 입력하셔야 명령이 완료가 됩니다!
                            대화보기
                            • 김지원
                              혹시 MysqL 로그인 안되시는 분들 있으신가요? 저도 분명 비밀번호를 똑같이 했는데 안되서 대소문자 확인하고 비밀번호를 변경해야 되나 막 방법 알아보고 그랬었는데 그럴 필요 없었네요

                              맥의 경우 시스템이 꺼졌다 켜지면 서버가 stop되어서 작동을 안하더라고요 혹시나 해서 봤더니 상태가 stop...
                              start하고 비밀번호 치니깐 로그인 잘 되더라고요!
                              안되시면 한번 확인 해 보세요!
                            • 리브
                              잘 들었습니다~ 우리가 원하는 웹을 만들 수 있는 그날이 오기를 빌면서 오늘도 열심히 달려갑니다
                            • 토픽이 오류 났다고 하는데 이거 어떻게 해결해용?
                            • Theo Lee
                              혹시 테이블 만들다가 실수하셔서 이것도 저것도 안되시는 분들을 위해서 댓글을 답니다.
                              우선 먹통인 명령 프롬프트를 걍 꺼주세요. 그리고 다시 실행하셔서

                              show databases; 까지 이고잉님과 동일하게 진행합니다.

                              테이블 만들다 종료를 했기 때문에 opentutorials라는 데이터베이스가 남아 있는 것을 확인하실 수 있습니다.
                              그럼 명령어에

                              DROP DATABASE [IF EXISTS] opentutorials; 를 입력하여 opentutorials라는 데이터베이스를 삭제시킵니다.
                              만약 여기서 에러가 난다면, [IF EXISTS]를 빼고 DROP DATABASE opentutorials; 만 적어주시면 삭제됩니다. 그리고 다시 이고잉님 강의를 따라가면 됩니다.
                            • Theo Lee
                              저 또한 같은 문제입니다. 3개월 전이시면.... 지금은 해결 되셨나요? ㅠㅠ 해결하셨다면..... 공유 해주세요~
                              대화보기
                              • 이고잉님께서 주신 데이터 삽입 란에 보면 id도 value가 들어가 있어요! 그래서 세번째 영상 27:34분에 보면 ID를 안썼는데 Increment에 의해 ID value가 자동으로 생성된다고 하셨는데 이고잉님께서 주신 데이터 삽입 시트를 그대로 복붙하게 되면 데이터 삽입 시트에 의해 value가 표시될 것 같아요. 어차피 결과는 똑같겠지만요 ㅎㅎ
                              • 에... 세미 콜론 넣으셨나요?
                                대화보기
                                버전 관리
                                egoing
                                현재 버전
                                선택 버전
                                graphittie 자세히 보기