SQL基础

一.数据库管理系统

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)continentLENGTH(contin..capitalLENGTH(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字段值的数值)

参考资料:

http://t.csdnimg.cn/yoqQ4

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

  • 21
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值