是的,在HTMl没有写完的时候,我又好死不死的开始学SQL,作为一个不会写代码的数据分析师(员),我也很无奈啊。
一、什么是 SQL?
SQL 指访问数据库的结构化查询语言,是一种 ANSI (美国国家标准化组织)的标准计算机语言。可以用来查询、取、插入、更新、删除数据,也可以创建数据库中的表、视图等等。说人话:写代码告诉数据库应该干点什么的让电脑能听懂的语言。想象一下自己在跟电脑对话吧。
然后因为世界上存在很多数据库,比如:MySQL、Oracle等等,所以SQL语言有很多不同的版本,就像中文一样,大家都讲中国话,可是不同地方有不同地方的方言。
如果要创建网站的话,我们需要以下能力:RDBMS 数据库程序(比如Access, Mysql等)、服务器端脚本语言(比如 PHP 或 ASP)、SQL、HTML / CSS语言能力。其中,RDBMS(Relational Database Management System)是关系型数据库管理系统的意思。
二、SQL关键词
一个数据库通常包含一个或多个表,数据存储在表(tables)中,表由列和行组成,每个表由一个名字标识,一行数据也叫一个记录。SQL语句主要是用来操作数据库中的对象,比如表、记录等等。每个SQL语句可以用分号分割,不区分大小写。
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。下面对一些关键词做笔记。
DML部分,主要是查询和更新数据:
(1)SELECT - 从数据库表中获取数据
(2)UPDATE - 更新数据库表中的数据
(3)DELETE - 从数据库表中删除数据
(4)INSERT INTO - 向数据库表中插入数据
SQL 的数据定义语言 (DDL) 主要是对表、库的定义
(1)CREATE DATABASE - 创建新数据库
(1)ALTER DATABASE - 修改数据库
(3)CREATE TABLE - 创建新表
(4)ALTER TABLE - 变更(改变)数据库表
(5)DROP TABLE - 删除表
(6)CREATE INDEX - 创建索引(搜索键)
(7)DROP INDEX - 删除索引
三、具体SQL语法
以下例子是使用Access做的实验(是的,我就是这么low)。
表是这个:
1.SQL SELECT 语句
select语句用于从表中选取数据,结果被存储在一个结果表中(称为结果集)。语法如下:
(1)select列名称 from 表名称
(2)select * from 表名称
星号(*)代表选取所有列。
比如我们写了一个:SELECT 姓名 from 表1,出来是这样的结果;
写SELECT * from 表1,结果就是这样:
2. SELECT DISTINCT
这个语句用来选取唯一不同值,还是表1的例子,如果写成:SELECT distinct 身份 from 表1,结果就是这样,也就是说会反馈唯一值。
至于我为什么混着写,是为了说明SQL确实不区分大小写啊!(实际是懒)。
3.WHERE
WHERE是用来选择条件的,语法是:
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
运算符有:= 等于,<>不等于,>大于,<小于,>=大于等于,<=小于等于,BETWEEN在某个范围内,LIKE搜索某种模式。在某些方言中: <> 可以写为 !=。
比如我们写:SELECT * from 表1 where 姓名=”李四”结果是这样,就是翻译成人话就是在表一中筛选出姓名=李四的所有列。
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号,数值的意思是:要进行加减等运算的数字。
4.AND和OR
AND 和 OR 用来结合多个条件
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
例如:select * from 表1 where (城市='北京' or 身份='学生') and 年龄<20
显示的结果是这样,翻译成人话是:在表1中查找所有列显示出城市在北京或者身份是学生的并且年龄小于20的人。此处需要注意,数值不加引号,文本要加引号。
5. ORDER BY
ORDER BY 语句用于根据指定的列对结果集进行排序,默认按照升序对记录进行排序。如果想降序排列,可以使用DESC关键字。
比如,以年龄顺序显示记录:SELECT 姓名,城市,年龄 from 表1 order by 年龄
结果是这样的,可以看到是按年龄升序排列。翻译成人话:从表1选择姓名,城市,年龄三个字段同时按年龄升序顺序输出。
SELECT 姓名,年龄 from 表1 order by 姓名,年龄 desc
这个就是先按姓名升序排列,如果姓名相同,则按年龄降序排列。原表和结果如下,把上面用的表1加了一个李四的字段,还叫他表1吧,因为懒。
6. INSERT INTO
INSERT INTO表示插入,语法INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)。
(1)插入新行,insert into 表1 values ("8","二麻子","40","工程师","海南"),结果是这样:
(2)指定列插入指定字段:
insert into 表1(姓名,年龄)values('张飞','70')
select * from 表1,显示如下图,插入的数据,要重新select才能显示。
7.Update
Update语句用于修改、更新表中的数据。语法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
比如:update 表1 set 城市="上海" where 姓名="张飞"
就是将姓名是张飞的记录的城市更新为上海。结果这样:
如果想换很多的话也可以,update 表1 set 城市="上海" where 姓名="张飞",像这样:
8. DELETE
Delete是删除的意思,主要用来删除表中的行,语法是:
DELETE FROM 表名称 WHERE 列名称=值
比如,delete from 表1 where 姓名="李四",这样姓名=李四的行就会被删除啦。
再打开就变成了这样:
也可以在不删除表的情况下删除所有的行,语法是:DELETE FROM table_name或DELETE * FROM table_name,删除行之后表的结构、属性和索引都还是完整的。