作者: @向三
学习 QQ 群: 1021386120
自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0
文章结构:
- 前言
- 本文目标
- 如何使用本文
- 本文目标
- 正文
- SQL 是什么
- 环境搭建
- 创建数据
- 查询数据
- 删除数据
- 改动数据
- 联结
更新日志:
2019年05月1日 v1.0 更新
前言
SQL 作为互联网技术不可舍弃的一环,但市面上少有足够简明精要的高质量 step by step 的教程,市面上的教程要么信息太多,初学者无法快速消化大量的知识,要么知识点太少没有覆盖到一些核心的概念导致工作中不够用,还有一些用很晦涩的词语来解释一些本来很简单的概念,白费初学者精力。
本文旨在用尽量精简的知识点和朴素的语言,帮助各位初学者掌握 SQL 这门语言。
只要你认真动手,学完之后就可以真正开始使用 SQL 完成工作。
如果你没有 SQL 的基础,请记住,这是一篇 "step by step" 的教程。请不要随便看两眼就说看不懂(以这种态度写成什么样你也看不懂)。当我用了 “简明核心” 这四个字时,并不意味着这是随便扫两眼就可以从无到有掌握的东西。
所以,如果你遇到了问题并愿意具体地说明你的问题,我很愿意帮助你。但是如果你只是模糊地说看不懂,谁也帮不了你。
你可以加入QQ群 1021386120,和朋友们一起交流,你也可以在群里尝试向我提问,但请遵照以下方式:
1,描述你需要完成的需求以及目的(目的就是为什么要做这个需求)
2,描述你的想法或思路
3,描述具体的实现过程
4,描述遇到的问题,包括正确信息,报错信息或得到的不正确的信息
5,有条件则贴出具体实现代码
有时间我会解答的。
本文目标
- 30分钟内让你对 SQL 有一些基本的了解,让你可以在自己的程序里使用最常用的一些特性。
- 除了作为入门教程之外,本文还试图成为可以在日常工作中使用的 SQL 语法参考手册。
如何使用本教程
最重要的是: 装好环境后请给我30分钟,如果你没有使用 SQL 的经验,请不要想把30分钟变成30秒钟。
当然,看完了这篇教程之后,如果你发现自己好像懂了很多,又好像什么都记不得,那也很正常,没接触过 SQL 的人在看完这篇教程后,能把提到过的用法记住 80% 以上的可能性为零。这里只是让你明白核心的原理和操作方式,三十分钟学习后还是需要多练习,多使用,才能熟练掌握(就像学习其他任何事情一样)。
正文
SQL 是什么
SQL(Structured Query Language) , 也就是 结构化查询语言,是用于操作数据库的语言。最简单的理解方式是将数据库想象成 excel 表。他们都有表,行,列这样的概念并且十分相似。
环境搭建
全文的测试环境均为 MySQL, 但核心概念适用于所有其他关系型数据库。
本文默认你已经通过教程装好了 MySQL 环境,并能看到如下界面:
![f99d404f19cbdd65983049521dd88f30.png](https://i-blog.csdnimg.cn/blog_migrate/8beee32fceae7ec9349caa29c1017fba.jpeg)
如果你的环境没有搭好,请停止往下继续,这篇教程是写给真正愿意动手练习的人看的,光看不做你学不到任何东西。
创建:
首先使用 CREATE DATABASE 创建一个数据库,执行以下代码:
CREATE DATABASE study;
这个语句创建了一个叫 study 的数据库,用我们上文举过的 Excel 表的例子来说, 这一步操作就像创建了一个 Excel 文件。
然后使用 CREATE TABLE 创建一个表,执行以下代码:
CREATE TABLE customers
(
cust_id int NOT NULL AUTO_INCREMENT,
cust_name char(50) NOT NULL ,
cust_address char(50) NULL ,
cust_city char(50) NULL ,
cust_state char(5) NULL ,
cust_zip char(10) NULL ,
cust_country char(50) NULL ,
cust_contact char(50) NULL ,
cust_email char(255) NULL ,
PRIMARY KEY (cust_id)
) ENGINE=InnoDB;
这个语句创建了一个叫 customers 的表,表就像 Excel 中的一个 sheet, 在创建表的时候,你需要指定表的结构,这张表里有 cust_id, cust_name,cust_address 等 9 个字段,在第三行 cust_id 后跟着的 int 代表 cust_id列只能保存整数类型的值,同理,cust_name 保存定长为50的字符串类型的文本,cust_state 保存定长为5的字符串类型的文本,在 SQL 中,保存文本除了char ,还可以使用 varchar ,varchar 和 char 的主要区别在于前者不必指定长度,由此产生了一些性能上的差异,具体目前还不必深究。
回到上文 cust_id 列:
其中 NOT NULL 表示 cust_id 列不能为空,NULL 则表示可