DAY6-我的SQL

前言:

上一篇文章中,我们最後完成了一个简单的网页留言版,主要是使用php的GET方法来进行资料的抓取与传递,但是由於我们没有给他一个用来储存资料的地方,所以每当我们重新整理这个网站就会发现前一次的留言不见了,也就是说这个留言版没办法真正起作用。

那我们接下来几天的目标就是将php和Mysql这个资料库搭上线,让我们可以储存每个访客留下的资料,完成一个真正的留言版!

什麽是SQL?

SQL( Structured Query Language )的中文就是「结构化查询语言」,诞生於 1970 年代後期,是专门用於关联式资料库的一种查询语言,其可以定义资料库结构、建立表格、指定栏位型态与长度,也能新增、异动或查询资料。

也就是说,SQL 是一种用来从资料库读取与储存资料的电脑语言,让使用者可以顺利达到资料库之间的沟通,且更有组织的管理资料。且由於是共同的语法,不论在 MS-SQL、ORACLE、DB2、ACCESS、MySQL、T-SQL、NoSQL 等资料库系统中,都可以通用。

而今天因为我们先前装的xampp内建的资料库系统是Mysql,所以我们就以Mysql为主,来做更进一步的介绍。

打开MYSQL:

要打开电脑里的mysql其实有个很快的方法,就是先开启之前提到的XAMPP control panel,之後在mysql右边的按键选admin。

像这样:

之後应该会自动跳出一个叫phpMyAdmin的东西:

接下来我们点开资料库旁边的SQL按钮:

在里面就可以输入SQL指令了哦!

SQL常用指令介绍:

在介绍一些常用指令前,这里阿森先来讲解一下Mysql的大致结构,首先最外层会是你的database,也就是资料库,再来每一个资料库中可以有很多个资料表(table),而这些资料表中又可以存放很多变数,可以想像成自己设定行名称的excel,如果画出来大概是长这样:

来源:https://lucidar.me/fr/web-dev-class/lesson-5-01-introduction-to-mysql/

再来使用SQL时会有几个比较常用到的指令,而这些指令其实非常直观,这里阿森就先介绍几个之後可能会用到的语法,让大家比较好理解。

新增资料库:

//新增一个资料库,这里取名为ithelps
create database ithelps;

新增资料表:

//使用资料库
use ithelps;
//新增一个含有以下元素的资料表,我们叫做msg好了:
//会自动增加(auto_increment)的id
//字串最多长度20的name
//字串最多长度50的mail
//字串最多长度250的messages

create table msg(
id integer auto_increment primary key,
name VARCHAR(20),
email VARCHAR(50),
messages VARCHAR(250)
);

删除资料表:

//这里只是举例,不要真的删除阿!!
Drop Table `msg`;

新增资料:

//接着我们来新增一笔资料
INSERT INTO `msg`(`name`, `mail`, `msg`) VALUES 
('Sen','[email protected]','test test hello~');
//这里没有写id,但因为他是auto increment,所以系统会自动从1开始计

查询资料:

//当要查询一笔或多笔资料时我们会用以下指令:
SELECT `name`, `mail`, `msg` FROM `msg` WHERE id = 1;
//或是今天我们要查同一个email留过的所有言并以先後顺去排序我们会用:
SELECT `name`, `msg` FROM `msg` WHERE email = `mail` ORDER BY id ASC;
//此时资料就会由id小到id大排序,如果要大到小就须使用DESC代替ASC
//如果要限制资料的比数可以使用limit这个指令:
SELECT `name`, `msg` FROM `msg` WHERE email = `mail` ORDER BY id ASC Limit 5;
//这样就只会显示前五笔资料罗!

而当牵扯到多个资料库的时候,再使用select语句时可能还会用到JOIN等指令,但因为目前还不会那麽复杂,之後有用到再介绍吧!

删除资料:

//接着来把上一笔资料删除
DELETE FROM `msg` WHERE id = 1;
//这里是透过选id的方式来删除,当然也可以透过选name或是mail等table内资料的方式来删除!

更新资料:

//透过下面的指令我们可以对id=1的资料做任意更改。
UPDATE `msg` SET `name`='Alu',`mail`='[email protected]',`msg`='test2 test2' WHERE id = 1

小结:

如果大家都跟着阿森的步伐现在应该已经创好一个资料库叫ithelps,并且里面有一个叫msg的资料表,而这资料表中又含有id, name, mail, msg等资料格,这同时就表示我们的资料库已经建立好啦。

这样一个资料库算是最简单架构的资料库,主要也是因为这次留言版的制作不太复杂,在之後可能会有更复杂的资料架构,需要用到像是foreign key等连结方式,如果有兴趣可以在网路上找找看资料,我相信在不久的将来应该也会介绍到这一块,但旧今天的进度而言我相信这样就够了!

接下来会介绍如何透过php中的pdo将网页和资料库做连线,达成一个完整功能的留言版。

那今天就先这样,我们明天见!


<<:  Day3 AR其实在生活中很常见?他们又有那些好处哩(成为史莱姆猎人的萌新)

>>:  当Expection发生时, 如何显示完整的CallStack和位置 (Traceback应用)

Day27 - HTML 与 CSS (9) - head

<head> <head>:只有 1 个,主要说明一些资讯,如编码、标题,使...

新新新手阅读 Angular 文件 - pathMatch(4) - Day30

本文内容 本文内容为阅读有关 Angular Route 的 pathMatch 设定的笔记内容。 ...

Day16. 老鼠,老虎傻傻分不清楚?- Mouse(上)

昨天最後说了,我们要帮弹珠台最後加上滑鼠的操控效果,所以今天读的文件会是 Mouse 这个模组。 M...

【LeetCode】Array

本文会提到做 array 常犯错误、如何避免,与常见的技巧。 此系列 Leetcode 篇不介绍基本...

赌场线仙 - K棒与移动平均线的华尔滋

最近研究K棒,跟着某知名投顾分析师看盘後解析,「站上五日线买,跌破五日线卖,投信看十日」各种台词朗朗...