什么是数据库
数据库(database)是用来组织、存储和管理数据的仓库
为了方便管理互联网世界中的数据,就有了数据库。用户可以对数据库中的数据进行增删改查等操作
传统类型数据库(关系类型数据库或者SQL数据库) 比如:MySQL、Oracle、SQL Server,这三者的设计理念相同,用法比较类似
新型数据库(非关系数据库或NoSQL数据库) 比如:Mongodb,它在一定程度上弥补了传统型数据库的缺陷
我们这里主要讲解传统类型数据库,以下都是一些概念性的东西
1.在传统的类型的数据库中,数据的组织结构分为数据库(database)、数据表(table)、数据行(row)、字段(field) 这 4 大部分组成.
数据库类似于 Excel 的工作簿
数据表类似于 Excel 的工作表
数据行类似于 Excel 的每一行数据
字段类似于 Excel 的列
每个字段都有对应的数据类型
实际开发中库、表、行、字段的关系
在实际项目开发中,一般情况下,每个项目都对应独立的数据库
不同的数据,要存储到数据库的不同表中,例如:用户数据存储到 users 表中,图书数据存储到 books 表中
每个表中具体存储哪些信息,由字段来决定,例如:我们可以为 users 表设计 id、username、password 这 3 个字段
表中的行,代表每一条具体的数据
SQL是 结构化查询语言,专门用来访问和处理数据库的编程语言。能够让我们以编程的形式,操作数据库里面的数据
三个关键点:
SQL
是一门数据库编程语言
使用 SQL
语言编写出来的代码,叫做 SQL 语句
SQL
语言只能在关系型数据库中使用(例如 MySQL
、Oracle
、SQL Server
)。非关系型数据库(例如 Mongodb
)不支持 SQL
语言
SQL 能做什么
从数据库中查询数据
向数据库中插入新的数据
更新数据库中的数据
从数据库删除数据
可以创建新数据库
可在数据库中创建新表
可在数据库中创建存储过程、视图
首先SQL语句对大小写不敏感.返回的数据集合叫做结果集
-- 通过 * 把 jager 表中的所有的数据查询出来 (* 这个符号代表所有列) SELECT * FROM jager --从指定的表中,查询指定的列的数据 SELECT username FROM jager -- 获取名为username和password的列的内容 多列之间,使用英文逗号进行分隔 select username, password from users
-- 往指定的表中,增加新的数据,值要使用英文引号包裹,多个列之间使用逗号分隔 -- 方法1: INSERT INTO 表名 SET 列名1="值1",列名2="值2" -- 方法2: 这种方法要注意列和值之间要一一对应 INSERT INTO jager (列名1,列名2) VALUES ("值1","值2")
--用于修改表中的数据 set后面跟的是要修改的结果,where语句后面跟的是修改的条件 UPDATE 表名 set 列名="值" WHERE 列名=值 -- 示例:UPDATE jager set username="lux" WHERE id=27 --翻译过来就是把id为27的那一列里面的username改为lux
信息栏提示如下信息就表示操作成功了.
注意:
多个更新的列之间使用英文逗号隔开
where 后面跟的是限制条件,不提供的话,会更新整个表的数据,长点心!!!
-- 根据where条件删除指定的数据 值为字符串时加引号包裹 DELETE FROM 表名 WHERE 列名=值
信息栏提示如下信息就表示操作成功了.
注意
跟UPDATE语句一样,where语句后面不写条件会删除整个表里面的数据!!!!千万注意
WHERE子句可用于以上三种语句中来限定条件,在WHERE语句中可以使用运算符,下面列举了一些常用的运算符的用法:
示例:
-- 查询id大于20的用户 SELECT * FROM jager WHERE id>20 --LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 --查询id以2开头的用户 %用于定义通配符,匹配缺少的字符 SELECT * FROM jager WHERE id LIKE '2%' --查询id以2结尾的用户 SELECT * FROM jager WHERE id LIKE '$1'
AND和OR可以把WHERE子语句中的多个条件合起来
AND类似于&&运算符(逻辑与),需要同时满足所有的条件
OR类似于 || 运算符(逻辑或),多个条件满足一个即可
示例:
-- 查询id大于15且小于24的所有用户 SELECT * FROM jager WHERE id>15 AND id<24 -- 查询id大于15且status等于1的所有用户 SELECT * FROM jager WHERE id>15 OR status=1
ORDER BY子句可以根据指定的列的搜索结果进行升序或者降序排列
ASC 表示升序 DESC 表示降序
当不指定字段时,默认按照升序排列
示例:
-- 语法 SELECT * FROM 表名 ORDER BY 列名 ASC(DESC) -- 可以把通过where子句指定条件的数据按序排序,如下 -- 查询id大于15且status等于1的所有用户 并且把结果集按照username字段进行升序排列 SELECT * FROM jager WHERE id>15 OR status=1 ORDER BY username ASC
对表中的数据,先按照password字段进行降序排序,再按照 username的字母顺序,进行升序排序
SELECT * FROM jager ORDER BY password DESC , username ASC
COUNT(*) 函数返回在给定的选择中被选的行数
SELECT COUNT(*) FROM 表名 -- 示例 如下图 SELECT COUNT(*) FROM jager --本例返回"jager"表中的行数:
-- 示例 返回id大于20的用户 SELECT COUNT(*) FROM jager WHERE id>20
使用AS为count(*)查询出来的列设置名称
SELECT COUNT(*) AS 要设置的名称 FROM 表名 WHERE 条件 -- 示例: -- 查询id小于20的用户,并把返回的列名称改为elk SELECT COUNT(*) AS elk FROM jager WHERE id>20