我们知道,关系数据库通过表来管理数据,数据库中可以同时存储多张表,数据库管理的是表,那么谁来管理数据库呢?


数据库由数据库管理系统(DBMS)来操纵和管理,终端用户通过dbms访问数据库中的数据,数据库管理员也是通过dbms进行数据库的维护工作。



【干货】SQL基础快速入门_java


数据库管理系统管理数据库,包括创建数据库,修改数据库,查询数据,更改数据等等。


【干货】SQL基础快速入门_java_02


数据库管理员维护数据库,不是直接操作,而是通过SQL语言来操作。其中客户端通过书写SQL语句调取数据库的数据,数据库管理系统将取出的数据发送到客户端。


【干货】SQL基础快速入门_java_03


了解了什么是SQL之后,再来看SQL有哪些特点?


特点1:SQL不是某个特定数据库专有的语言。


也就是说,学习此语言几乎能与所有数据库打交道,无论是MY SQL,还是sql  server,还是其它数据库。


【干货】SQL基础快速入门_java_04


特点2:SQL语言简洁,易学易用


SQL功能极强,完成核心功能只用了9个动词,可以看到,数据定义,数据查询,数据操纵,数据控制,总共才9个描述性动词,全都是由描述性很强的英语单词组成。但是这9个动词却能完成SQL90%的功能。


【干货】SQL基础快速入门_java_05


特点3:可以进行非常复杂和高级的数据库操作。


SQL尽管看上去很简单,但它实际上是一种强有力的语言,灵活使用这些语言,可以进行非常复杂和高级的数据库操作。包括数据更新,子查询,复杂查询,分组统计,多表查询...



【干货】SQL基础快速入门_java_06


SQL语言的分类


SQL是用于访问和处理数据库的标准的计算机语言,SQL语言包含三部分:包括数据定义语言,数据操纵语言,数据控制语言。


【干货】SQL基础快速入门_java_07


【数据定义语言】主要用来创建数据库中各种表,视图,或者索引,它的操作对象是一张表或者一个视图,不直接对表中的数据进行操作。


【数据操作语言】主要用来实现对数据库的基本操作,包括查询,插入,修改数据,也就是我们平时说的增删改查它的操作对象是数据表中的某一行数据或者某几行数据。


【数据控制语言】是用来授权或者回收权利的,并且能控制数据库操纵发生的时间和效果,对数据库实行监视。


首先来看数据定义语言:DDL


它的操作语言包括表,视图,索引。它针对的是数据的逻辑结构,不涉及具体的数据。数据定义语言常见的关键动词是creat 创建,drop,删除,alter修改。


【干货】SQL基础快速入门_java_08



SQL的数据定义包括数据库定义,表的定义,索引的定义和视图的定义


【干货】SQL基础快速入门_java_09


这是SQL 中最重要的 DDL 语句


SQL语言还包括【数据操纵语言DML】


数据操纵语言的操作对象是表中的一行数据或者几行数据,它涉及的是具体的数字。数据操纵语言常用的关键动词有insert (插入),update(更新),delete(删除)Select(查询)。


【干货】SQL基础快速入门_java_10



简单来说,SQL的数据操纵语言包括增,删,改,查四项功能,


【干货】SQL基础快速入门_java_11


其中,增,删,改这三项都属于对数据库进行更新操作,查询和更新指令共同构成了SQL的DML部分。另外,SQL 主要是用于执行查询,或者说查询是数据操作语言最常用的功能。


数据控制语言DCL


数据控制语言的操作对象是整个数据库,它主要的功能是权限管理。数据控制语言常用的关键动词有grant  ,授权,和revoke撤回这两种。


【干货】SQL基础快速入门_java_12


权限是系统内定的一些“名词”(单词),比如在mysql中,大约30个权限,每个权限表示“可以做什么工作”。 


【干货】SQL基础快速入门_java_13


分配权限就是相当于让某个用户可以做哪些工作。这些主要权限我们简单了解一下就可以了,因为对权限的管理更多的是由数据库管理员DBA来使用。


数据控制语言 (DCL)


包括:增加权限GRANT,撤回权限REVOKE,它是针对数据库的操作。


【干货】SQL基础快速入门_java_14


SQL的这三类语言有哪些区别呢,我们再来总结一遍:


【干货】SQL基础快速入门_java_15


(1)DDL:数据定义语言

DDL主要用来定义表或者改变表结构,数据类型,表之间的链接和约束等初始化工作。常用的数据操作有CREATE,ALTER,DROP等,CREATE,可以创建数据库或者数据库中的一些对象。ALTER,修改数据定义或属性,如字段的类型,大小等等。


DROP,删除表结构及数据属性DDL的操作对象包括表,视图索引等等。DDL主要是对表的属性进行约束,或者说他针对的是表格结构的操作,不会对数据内容进行操作。


(2)DML:数据操作语言

包括增删改查(INSERT,DELETE,UPDATE,SELECT),对数据进行操作的语言。DML的操作单位是记录(RECORD)。INSERT,即插入一条或多条记录。DELETE,即删除一条或者多条记录。


UPDATE,即更新表中记录的内容。SQL 主要是用于执行查询,或者说查询是数据操作语言最常用的功能.


(3)DCL:数据控制语言


常用的有GRANT,REVOKE,DENY等,用来控制数据库用户和角色的权限的语句。


GRANT,授权;REVOKE,回收权限;


总结:简单来说,DDL(data definition language)是对数据对象和对象属性进行操作的语言,它的操作会改变表结构,表类型等等数据属性,但是不会改变数据内容。DML(data manipulation language)是对数据内容进行操作的语言,它的最小操作单位是行;DCL(data control language)数据控制语言,用于限定数据库用户的权限。


刚才我们提到,SQL的数据操纵语言可以用增,删,改,查四个字来概括,我们首先来了解下这4种操作的语法,


  1. 增指的是SQL 可在数据库中插入新的记录

【干货】SQL基础快速入门_java_16


比如使用insert关键词插入单行数据:它的语法是insert [into] <表名> [列名] values <列值> ,insert 在英文中是插入的意思,values在英文中是数值的意思。

例如,有一个学生表students,有3个字段,姓名,性别,出生日期,我们想在这张表中增加一行记录,这行记录的姓名是王伟华,性别是男,出生日期是1983/6/15,

Sql语句可以这样写:insert into Students (姓名,性别,出生日期) values ('王伟华','男','1983/6/15')


再比如:使用insert,select语句将现有表中的数据添加到已有的新表中。


【干货】SQL基础快速入门_java_17

具体语法是insert into <已有的新表> <列名> ,select <原表列名> from <原表名>,这个语句可以理解为分成两部,第一步select <原表列名> from <原表名>,它的意思是将原表的几行数据选出来,第二步,insert into <已有的新表> <列名> ,将选出的数据插入到新表中。比如这个案例insert into addressList ('姓名','地址','电子邮件')


select name,address,email from  Students


它所表达的意思就是将学生表Students中的姓名,地址和电子邮箱查询出来,然后插入到新表中,这个新表的表名是addressList,新表的字段有3个,分别是 (中文的 '姓名','地址','电子邮件')。


删指的是SQL 可从数据库中删除记录


例1:比如下面这个案例就是使用delete删除表中某行数据


它的语法是:delete from <表名> [where <删除条件>] ,


【干货】SQL基础快速入门_java_18


它所表达的意思是先把符合删除条件的行找出来,然后再表中删除它。比如上面这个案例是delete from a where name=“王伟华”,它的意思是删除表a中列值为王伟华的行) 


需要大家注意的是:删除整行不是删除单个字段,包括我们所讲的增删改查,都是针对表中某一行数据或者几行数据,不是只删除半行或只删除几个字段。


所以在delete后面不能出现字段名,比如我们想删除王伟华,不能直接写delete王伟华,应该先把王伟华所在的行找出来,然后再删除它。


数据操作语言第三种:【改】:指的是SQL 可更新修改数据库中的数据

例1 我们使用的update关键词来更新修改数据 ,

【干货】SQL基础快速入门_java_19


具体语法是update <表名> set <列名=更新值> [where <更新条件>],它所表达的意思是首先把需要更新的行或者满足更新条件的行选出来,然后重新设置它的列名。例如下面这个案例语法是update addressList set 年龄=18 where 姓名='王伟华'。它的意思是首先把姓名=王伟华的行选出来,然后修改它的年龄为18岁。


数据操作语言第四种查


【查】指的是SQL可查询数据库中的数据,我们使用的是select关键词来查询数据 

【干货】SQL基础快速入门_java_20


具体语法是select <列名> from <表名>

例如,SELECT  city  FROM students

(它所表达的意思是查询学生表中学生所在的城市) 


需要注意的一个重要事项是:


一定记住,在windows操作系统中,SQL 对大小写不敏感!


也就是说sql对大写和小写不区分,无论是对关键字还是操作对象都不区分,执行结果是一样的,但是对引号内的字符串大小写会敏感,也就是说字符串这个不能随意转换大小写,改是大写就大写,改小写就小写。


最后,推荐一门由我和爱数圈团队共同打磨的精品课【漫画SQl】,这门课设计的通俗易懂,画风幽默,适合一些没什么学历,又不爱学习的朋友,哈哈


部分学员评价:



【干货】SQL基础快速入门_java_21


最后隆重介绍下:


【干货】SQL基础快速入门_java_22


【干货】SQL基础快速入门_java_23