快捷搜索:  汽车  科技

sql语句基础教程汇总(如何书写第一条SQL语句)

sql语句基础教程汇总(如何书写第一条SQL语句)Sex字段来表示性别,故意选择了tinyint(1)类型,而不是字符的“男”或者“女”表示,其实这是一种惯例,一般在设计表之处,如果当其中内容非黑即白,非男即女,非奇即偶,又或者定量类型中某一个时,或考虑用数字去替代,这样的好处在于节省了大量字符所需的空间。这里可以规定,1是男,2是女,3是东方不败,呃!Username和phone分别指代用户的姓名和手机号,这里我选择数据类型是char(定长字符串类型) 因为考虑到中国人名字和手机号长度都有上限,所以选择定长以节省计算机空间。另外,之所以没有将手机号定义成INT(数字类型)是考虑到,万一日后手机号第一位出现0,如果选择数字,则完全有可能被省略。首先使用了InnoDB引擎,假设这是一个数据非常重要的表,那么用这个引擎可以对其之后的所有操作进行日志保存,即便是遭遇到黑客攻击或者恶意删除还是硬件损坏,都可以通过日志进行还原。字符集的选择则需要考

如果说编程算法强调的是一种从目标到结果逻辑上的最优解,那么数据库要做的就是如何将庞大,繁杂,甚至冗余的数据以一种高效率的方式存储起来,并且实时提供给用户们进行“增删改查”(增加、删除、修改、按照条件查询,这是数据表的基础操作)的操作。就在“编程进校园”,编程教学日益年轻化,低龄化的今天,我们既要时刻强调任何技术的学习和进步都不可能一蹴而就,但同时又得明白,或许一两本足够简洁明快的书籍可以帮助读者最快速度的进入到某个全新领域的学习。要知道,绝大多数IT技术的学习曲线往往都呈现U字型,即开头上下求索,无迹可寻;而后渐入佳境,初通精要;再到后头方才发现,眼界一开,别有洞天。可偏偏很多学习者会在初学之时,因为不得其门而入被迫放弃,又或者找来一些不太适合的教程最终悻悻而归。

所以,选择一部合适的书籍,在这时尤为重要,它得符合以下几个条件,一是,足够通俗易懂,爱因斯坦说:“如果你不能用最简单的语言来描述,那你就是没有真正领悟。”放在这里分外贴切。任何一本试图在初学期就告知学习者其内部运行原理的技术书籍都是别有用心的劝退。其二,要足够的涵盖广博,虽然书要广博,学要专精,但是初学者得先要高屋建瓴方能各取所需,所以但凡入门书秉持的核心价值就得是“观其大略,不求甚解”。只有当学习者知道“有什么”的时候,才会更加在意要“怎么做”。其三,要与时俱进,原理可以“经典咏流传”,但技术实现一定要迭代更新,往远地说,君不见VFP被微软收购后兵败如山倒,往近的说,如今光手机APP前端技术更是“城头变幻大王旗,你方唱罢我登场”。总之一本老少咸宜又紧跟时事还在某个领域内多方涉猎的书,才是最适合不过技术入门好书。

好吧,聊了那么多,想推荐下这本《图解SQL:数据库语言轻松入门》,大概是我近些日子来遇到过的比较符合我以上说到几个条件的入门书籍。本书最大的特点是,作者尝试将数据库存储这种逻辑工作的进程用一种漫画的方式表达出来,以达到让读者理解的目的。同时,又不抛弃最基础的代码编程,学习者只需要跟随作者梳理出来的进阶流程,就可以学会掌握那些数据库的基本操作,其中包括不限于数据库、数据表的建立,增删改查SQL语句的书写,索引、函数、视图、内外连接的数据表复杂操作以及如何与编程语言联动。可以这么说,如果读者所要处理的数据级别还未到达千万级,那么本书就可以帮助读者解决其百分之八十以上的工作问题。

如何创建一个数据表

sql语句基础教程汇总(如何书写第一条SQL语句)(1)

一个设计合理的数据表是后面所有操作的基础。我以此人员表(user)为例。

首先使用了InnoDB引擎,假设这是一个数据非常重要的表,那么用这个引擎可以对其之后的所有操作进行日志保存,即便是遭遇到黑客攻击或者恶意删除还是硬件损坏,都可以通过日志进行还原。

字符集的选择则需要考虑和前端B/S页面显示上的统一,不然就需要多做一层字符串转义的工作。

再看表内容,一个合理的表必须要有一个主键,权可以当做这条数据的唯一标识码,并且即便日后数据到达了上亿级,如果搜索名字,其所需要的时间和计算机资源会呈几何式上升,但是只要知道对应的主键是什么,就可以轻而易举的找寻到该条记录的所在。

Username和phone分别指代用户的姓名和手机号,这里我选择数据类型是char(定长字符串类型) 因为考虑到中国人名字和手机号长度都有上限,所以选择定长以节省计算机空间。另外,之所以没有将手机号定义成INT(数字类型)是考虑到,万一日后手机号第一位出现0,如果选择数字,则完全有可能被省略。

Sex字段来表示性别,故意选择了tinyint(1)类型,而不是字符的“男”或者“女”表示,其实这是一种惯例,一般在设计表之处,如果当其中内容非黑即白,非男即女,非奇即偶,又或者定量类型中某一个时,或考虑用数字去替代,这样的好处在于节省了大量字符所需的空间。这里可以规定,1是男,2是女,3是东方不败,呃!

Date字段表示出生日期,之所以类型设置成date,而不是字符模式,这样的一大好处是当某一天想要以出生日期排序时,只需要对该字段做操作即可。

Address字段表示家庭住址,由于无法预估它可能出现的长度,比如某人住在“内蒙古自治区乌兰察布市察哈尔右翼后旗白音查干镇……”但是又大概知道不会长到非常非常离谱,所以考虑将其字段设置成是varchar(255),我想255个汉字应该足够了吧!这时候有人就要问,能不能存更长的,当然可以,langtext类型了解下,十四亿个汉字妥妥的。

在此,以过来人的身份着重提醒下,切记!切记!所有字段后面一定要写好备注,程序员甚至可以用拼音缩写来描述字段名,但是一定一定要在备注里写清楚这些字段到底指代的是什么内容。当你某天工作时,看着前人留下来毫无备注的单表,整整一百五十个字段,还都是用拼音缩写,比如xm nl rzsj等等,欲哭无泪时,甚至会对生而为人产生某种怀疑!

sql语句基础教程汇总(如何书写第一条SQL语句)(2)

于是,我们将一个人员名单表做好了!

如何书写一段SQL语句

先看一段SQL语句

SELECT username FROM `user` WHERE sex=1 AND address LIKE "%大街%" AND `date`>'1994' order by `date` LIMIT 0 10

稍微解读下SQL语句,

SELECT username FROM `user` 表示对一个名叫user的表进行搜索,但只显示username字段,如果你想要让所有字段全部显示可以将username替换为*。

WHERE后面表示想要搜索的条件,如果不存在where那么这句语句会显示该表的所有数据。

一共有三个条件,其一是sex为1,这个之前说过,1代表男性,第二个条件address LIKE "%大街%",这是一种字符串的匹配方法,其意思就是该字段中有“大街”两个字的语句全部符合要求,当然如果你能确定“大街”两个字只会出现在这个字段的最后面,就可以把条件改为address LIKE "%大街",这样的好处是节省搜索所要耗费的计算机资源,提高检索效率。第三个条件是出生在1994年之后的数据,此地就可能看出,当时设计表是把该字段选择date类型的好处,可以使用这种方式进行检索。

之后有两个后缀,一个是order by,它的功能就是按照date升序排列,如果想要降序,则可以写成 ORDER BY `date` DESC。另一个LIMIT 0 10是用来显示从第一到第十条的数据,如果想要显示从第二十一到第四十五条数据,就要写成LIMIT 20 25。前一个数字表示起始点,切记计算机的起始点不是0,是1,后一个数字表示个数。

好的,通过这句SQL,我们能够完成简单的数据查询。

那么再来个增加的操作吧!

INSERT INTO `user` (`username` `phone` `sex` `date` `address`) VALUES('李七' '16666666666' '2' '1988-07-15' '南大街') ;

有没有发现插入中缺少一个ID字段,这是因为该字段在建表之初,设置成主键的同时,又被我设置成了自增字段,这就意味着每插入一条数据,其内容就是在之前对应的ID字段数字加一,这样的好处是既可以知道数据进入的先后顺序,又可以保证每条主键数据的唯一性。

sql语句基础教程汇总(如何书写第一条SQL语句)(3)

那么我们又得如何修改和删除数据呢?

比如当我知道4号赵六搬家了,于是更新数据为

UPDATE `user` SET address='东大街' WHERE id = 4

同时当我知道3号王五离职了,于是删除属于为

DELETE FROM `user` WHERE id = 3

这里就可以看到我选择where的条件是ID号,而不是 username=”赵六” 或者 username=“王五”。其原因有二,当数据无限增大时,这个没有做过索引的字段会导致数据表进行全盘搜索,这就意味着这个表有一千条数据,它就得检索一千条,有一亿条数据,它就得检索一亿条。而如果使用主键ID为判定条件,则可以在最快时间找寻到对应的记录进行操作!

于是所得分别为:

sql语句基础教程汇总(如何书写第一条SQL语句)(4)

sql语句基础教程汇总(如何书写第一条SQL语句)(5)

这时候要问个问题,如果在操作中意味忘了写WHERE后头的代码会怎样?

哈哈,是个好问题,这会导致表内所有的数据全部更新或者全部被删除。是不是很惨,于是你就得庆幸在建表的时候选择了InnoDB引擎,binlog日志会帮助你恢复到这个表的任何一个时间点。

什么?当时选了MyISAM引擎?好吧,恭喜你,你完成了一个DBA终极任务——从删库到跑路。

综上所述,我简单的介绍了数据库的增删改查,而本书所涵盖的内容远远超过我所描述的那些内容。如何在语句中运用函数,如何统计数量,如何累加某个字段,如何让两个表的数据相互衔接,如何分类,如何进行多表操作还能预防中途中断导致数据不统一,甚至于如何把数据库来替代程序语言做简单的业务逻辑处理,都在本书中有所涉猎和使用介绍。

再次强烈推荐本书作为你入门SQL的第一本书,

祝各位开卷有益,学有所成!

sql语句基础教程汇总(如何书写第一条SQL语句)(6)

猜您喜欢: