一.数据库管理系统
1.关系型数据库管理系统
采用关系模型来组织数据,借助于集合 代数等数学概念和方法来处理数据,通过二维表来表示数据之间的联系。二维表的每一行表示一条数据,每一列表示一个字段,也就是记录某个属性,不同的表之间通过关联字段来建立联系。
以下是示意图
释义:
1)用户操作关系型数据库客户端,实现数据库相关操作。
2.)关系数据库客户端借助网络使用SQL语言和关系型数据库服务端进行数据通信
3.)关系型数据库服务端管理着不同的数据库,每个数据库会有一系列的数据文件,数据都保存在数据文件里面,每个数据库可以理解成是一个文件夹。
##通过上面的效果图我们可以得知,数据库客户端和数据库服务器想要通信需要使用SQL
2.非关系型数据管理系统
非关系型数据库:不像关系数据库那样使用行和列的表格模式的数据库。相反,它的存储模型是针对它所存储的数据类型进行优化的。不只有使用SQL语句作为操作指令,可以使用其他类型的查询语言,也被称为NoSQL(Not only SQL)数据库, 不需要预先定义关键数据的模式,比SQL数据库更加灵活。主流的 NoSQL 数据库有 Redis、MongBD、Hbase、CouhDB 等。
3.区别
扩展方式不同
SQL和NoSQL数据库最大的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展。为了支持更多并发量.
SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来客服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。
而NoSQL数据库是横向扩展的。因为非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。
二.SQL(Structured Query Language)结构化查询语言
1、SQL基本分类:
根据不同的功能,将SQL语句基本分为分成数据库查询语言(DQL)、数据库操作语言(DML)、数据库定义语言(DDL)、事务控制语言(TCL)和数据控制语言(DCL)五个种类。
1) DQL(data query language)数据查询语言:针对表中数据的查询操作,select作为关键字SELECT ? FROM **?? ** WHERE ???;
2) DML(data manipulation language)数据操作语言:用户通过它可以实现对数据库的基本操作,针对表中的数据进行更新,更新包含了添加、修改、删除!insert、update、delete,call是其关键字!
3) DDL(data definition language)数据定义语言:创建数据库中的各种对象,创建、删除、修改表的结构,比如表、视图、索引、同义词、聚簇等…针对数据库或者表结构的创建、删除、修改,通俗来说就是定义数据存储结构的sql语句!create、drop、show、alter是其关键字!
4)TCL(transaction control language)事务控制语言:事务在数据库操作中,尤其是代码层面是一个很重要的机制!TCL主要是事务操作的语句,一般用于快速原型开发、脚本编程、GUI和测试等方面。主要关键字为commit、rollback。
5) DCL(data control language)数据控制语言:数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等…针对数据库访问时用户及权限的设置!主要关键字为grant、revoke。
2.SQL基本语句
1)SQL 基本语法
1.一般来说SQL语句并不区分大小写,但为了提高可读性,通常会把关键字进行大写,把表名,列名和其他名称小写
2.每条SQL表达式结束之后都以;结束
3.SQL关键字之间都以 空格进行分割
4.SQL之间可以不限制换行(可以有空格的地方就可以有换行)
2.)基本语句
分页语句
#select * from table limit m,n 语句
获取连续数据,
table表名
m是指读取区域的起始情况,下标从0开始
n是指读取的数量,即从m行后的n行
例如输入命令
SELECT * FROM school.student limit 0,;
表示读取数据从零行开始的第四行
limit前面可以加上where检索功能以及order排序
#select … where 语句
从数据库中选取数据,WHERE子句用于提取那些满足指定条件的记录。
格式:
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;
opertor :操作
其中,以上语句的select,from,where是不区分大小写的,一般分行写select,from,where语句。select一般是查询结果要展示的字段,from后一般是要查询的表名,where是进行数据筛选的条件。
用法有:对比:=,!=,>,<
包含:in,not in,exists,not exists
模糊匹配:like
空值判断:is null, is not null
范围匹配:between ... and ...
多条件且、或:and,or
1.对比
=是精确匹配的意思,比如:where name='zhangsan'则是筛选出所有name='张三'的行,除数字外必须带引号。(!=就是除了=之外的所有行)
>和
#从games表格中查找yr=2004的数据显示其yr及city
2.包含
in和not in分别是包含和不包含的意思,用法:where name in('zhangsan', 'lisi'),可筛选出name='zhangsan'和'lisai'的所有行。
exists和not exists等同于in和not in,不同的是使用时服务器使用效率不同,一般在多表匹配的时候会区别一下。可以先看以下例子:
1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ;
2) select * from T1 where T1.a in (select T2.a from T2) ;
T1数据量小而T2数据量非常大时,T1 exits 效率高
T1数据量非常大而T2数据量小时,T1>>T2 时,2) in 的查询效率高。
#从world表格中查找包含Brazil Russia India China的数据显示其name及 population
3.模糊匹配
如果你只想匹配字段值的一部分,则要用like:where name like '%zhang%'或where name like 'zhang_'
%代表不限数量的匹配字符数,_代表单个字符的匹配。比如zhang%可以匹配出zhangsan, zhangsi等,而zhang_只能匹配出如zhangx这种的字符。
#从world表格中查找所有名称以'G'开头的数据显示其
LENGTH(name) | continent | LENGTH(contin.. | capital | LENGTH(capita.. |
---|
国家或地区的名称、这些名称的长度、它们所在的大陆、大陆名称的长度以及它们的首都和首都名称的长度
#从world表中查询所有以字母'B'开头且名称中不包含字母'a'的国家或地区的名称。
4.空值判断
null是数据为空时的一种状态,not null是不为空的状态,这两种状态可以用来做筛选:where name is null,筛选出name为空的行,where name is not null,筛选出name不为空的行。
5.范围判断
BETWEEN x1 AND x2 是指筛选出值在x1到x2之间的数据行,如:where id between 1 and 95,筛选出id为1~95的行。需要注意的是,不同的数据库对于between的用法有一点点差异,有的是[1,95],有的是(1,95)等,这点知道就行了,我用的Mysql是[]形式的。
#从world表格中查找在250000和300000之间的数据显示其name,area
6.多条件且、或
and 用来连接条件,表示多条件必须满足。or用来连接条件,表示满足任一即可。如:where name='zhangsan' and number=94,只会筛选出name和number同时满足了条件的数据行。而:where name='zhangsan' or number=94 则会筛选出name='zhangsan' 或者number=94满足任一条件的数据行。
那么多个and和or一起使用时怎么办呢,一般优先级是and>or,如:name='zhangsan' and number=94 or number=95,就会解析为(name='zhangsan' and number=94) or (number=95)。因此,为了避免不确定性,我们可以在查询条件中加入括号来对条件进行组合。例如:where (name='zhangsan' or name='lisi') and number = 100 。
#select … order by 语句
1.功能:SELECT语句用于从数据库中选取数据,用于对一列或者多列数据进行升序(ASC)或者降序(DESC)排列。
# 默认为升序排列,如果要对某元素按降序排列则在对应关键字后添加参数DESC。
2. 语法:
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
#从school.student表中以sage为顺序进行排列
#select … group by 语句
1.功能:SELECT语句用于从数据库中选取数据, GROUP BY 语句用来对相同的数据进行分组。2.语法:
SELECT column-list
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2....columnN
ORDER BY column1, column2....columnN
#从ganes表格中列出特定大陆记录的赛事次数或其他相关活动的次数。
(列表中,其中每一行包含一个大陆的名称以及该大陆在games
表中对应的yr
字段值的数值)
参考资料:
https://blog.csdn.net/weixin_46072106/article/details/109905674
https://blog.csdn.net/qq_51392112/article/details/131353186
https://blog.csdn.net/weixin_62540487/article/details/129269108