目录

一、什么是数据库?

二、常见的数据库

三、SQL语句分类

四、DML (数据操作语言)基本语法

五、DQL(数据查询语言)

常用的聚合函数


一、什么是数据库?

数据库(Database,简称DB)概念:

长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库”。

作用:存放、管理数据

分类:关系型数据库、nosql数据库

二、常见的数据库

关系数据库:MySQL、Oracle、postgresql

非关系数据库:MongoDB

三、SQL语句分类


SQL语句,即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一


种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。


名词

解释

命令

DDL (数据定义语言)

定义和管理数据对象, 如数据库,数据表等

CREATE、DROP、ALTER

DML (数据操作语言)

用于操作数据库对象中所包含的数据

INSERT、UPDATE、DELETE

DQL(数据查询语言)

用于查询数据库数据

SELECT

DCL (数据控制语言)

用来管理数据库的语言,包括管理权



限及数据更改

GRANT、COMMIT、ROLLBACK

四、DML (数据操作语言)基本语法

1.增加数据

语法:



INSERT INTO `表名` [(`字段1`,`字段2`,...`字段n`)]  VALUES/VALUE ('值1','值2',...'值n')[,('值1','值2',...'值n')...];





goldendb 兼容mysql协议吗 goldendb数据库语法_goldendb 兼容mysql协议吗


goldendb 兼容mysql协议吗 goldendb数据库语法_字段_02

 注意:

其中:


•“[]” 包含的内容可以省略;


• 字段或值之间用英文逗号隔开;


• 可同时插入多条数据,values 后用英文逗号隔开;


• values和value的方式均可 。


2. 修改数据

语法:


UPDATE 表名 SET `字段名1` = '值1' [ , `字段名2` = '值2', …. ]  [ WHERE 条件];


goldendb 兼容mysql协议吗 goldendb数据库语法_mysql_03


goldendb 兼容mysql协议吗 goldendb数据库语法_数据库_04

注意:


其中:


•“[]” 包含的内容可以省略;


• `字段名`为要更改数据的字段,'值'表示字段改后的值,注意字段和值的对应;


• 可同时修改多个字段,多个字段后用英文逗号隔开;


•“WHERE”是where子句,可以给修改增加条件;


• 条件:为筛选条件,如不指定则修改该表的所有列数据。


3.删除数据

语法:


DELETE FROM 表名 [ WHERE 条件];


goldendb 兼容mysql协议吗 goldendb数据库语法_goldendb 兼容mysql协议吗_05

goldendb 兼容mysql协议吗 goldendb数据库语法_数据库_06

 注意:


其中:


•“[]” 包含的内容可以省略;


• “WHERE”可以通过where子句增加删除的条件。


五、DQL(数据查询语言)


DQL(Data Query Language 数据查询语言)。用途是查询数据库数据,如SELECT语句。是SQL语句 中最核心、最重要的语句,也是使用频率最高的语句。其中,可以根据表的结构和关系分为单表查询和多表联查。


查询语法


SELECT [DISTINCT]


{*|表1.*|[ 表1.字段1 [as 字段别名1]


[, 表1.字段2[as 字段别名2]][, …]]}


FROM 表1 [ as 表别名 ]


[ left|right|inner join 表2 on 表之间


的关系 ]


[ WHERE ]


[ GROUP BY ]


[ HAVING]


[ ORDER BY]


[ LIMIT {[ 位置偏移量,] 行数 }] ;


注意:


其中:


•“[ ]”包含的内容可以省略;


•“{ }”包含的内容必须存在;


DISTINCT


设定DISTINCT可以去掉重复记录。


AS


表名或者字段名过长时,可以用AS关键字起别名,方便操作。


GROUP BY


按组分类显示查询出的数据。


HAVING


GROUP BY分组时依赖的分组条件。


ORDER BY


将查询出来的结果集按照一定顺序排序完成。


LIMIT


限制显示查询结果的条数。


一、单表查询


针对数据库中的一张数据表进行查询,可以通过各种查询条件和方式去做相关的优化。


1. 指定字段列


SELECT * | 字段名1, 字段名2...  FROM 表名


*  表示所查询的数据库表的全部字段。


表别名和字段别名


SELECT 表别名.字段名1 AS 字段别名1, 表别名.字段名2 AS 字段别名2 FROM 表名 AS 表别名


• “.” 当前表存在的字段;


• “AS”可忽略不写,“AS”的功能如下:


        • 给字段取一个新别名;


        • 给表取一个新别名;


        • 把经计算或总结的结果用另外一个新名称来代替


DISTINCT

SELECT DISTINCT 字段名1, 字段名2...


去掉SELECT查询返回的记录结果中重复的记录(所有返回列的值都相同),只返回一条。


FROM 表名


WHERE条件子句


SELECT * FROM 表名 [ WHERE 条件];


• WHERE条件子句不是必须的;


• WHERE子句,可以给查询增加条件;


• 条件:为筛选条件,如不指定则修改该表的所有数据。


LIKE 关键字


SELECT * FROM 表名 WHERE 字段 LIKE 条件;


• 在WHERE子句中,使用LIKE关键字进行模糊查询;


• 与“%”一起使用,表示匹配0或任意多个字符;


• 与“_”一起使用,表示匹配单个字符


IN 关键字


SELECT * FROM 表名 WHERE 字段 IN (值1,值2...);


• 查询的字段的值,至少与IN 后的括号中的一个值相同;


• 多个值之间用英文逗号隔开。


NULL 值查询


SELECT * FROM 表名 WHERE 字段 IS NULL | IS NOT NULL


• NULL代表“无值”;


• 区别于零值0和空符串;


• 只能出现在定义允许为NULL的字段;


• 须使用 IS NULL 或 IS NOT NULL 比较操作符去比较。


GROUP BY和HAVING分组


GROUP BY


1、对所有的数据进行分组统计;


2、分组的依据字段可以有多个,并依次分组。


HAVING


与GROUP BY结合使用,进行分组后的数据筛选。


常用的聚合函数

函数名

返回值

AVG(col)

返回指定列的平均值

COUNT(col)

返回指定列中非NULL值的个数

MIN(col)

返回指定列的最小值

MAX(col)

返回指定列的最大值

SUM(col)

返回指定列的所有值之和

9.ORDER BY排序


SELECT * FROM 表名 ORDER BY 字段名 [DESC|ASC]


• ORDER BY 表示对SELECT语句查询得到的结果,按字段名进行排序;


• DESC表示排序的顺序为降序,ASC表示排序的顺序为升序;


•“[ ]”包含的内容可以省略。


LIMIT关键字


SELECT * FROM 表名 LIMIT [n , m ]


• LIMIT关键字是MySQL特有关键字;


• LIMIT限制SELECT返回结果的行数;


• n 表示第一条记录的偏移量,m 表示显示记录的数量;


•“[ ]”包含的内容可以省略。


二、多表查询


针对数据库中两张或者两张以上的表同时进行查询,依赖的手段有复杂查询和嵌套查询。


等值查询和非等值查询


非等值查询:SELECT * FROM 表1,表2


等值查询:SELECT * FROM 表1,表2 WHERE 表1.字段1 = 表2.字段2...


• 与单表查询类似,都是SELECT语句;


• 把多个表放到FROM后,并用逗号隔开;


• 可使用AS关键字取别名,便于引用;


• 如无重名查询字段则可省略数据表的指定。


连接查询


SELECT * FROM 表1 LEFT|right|INNER JOIN 表2 ON 条件


LEFT JOIN


从左表(表1)中返回所有的记录,即便在右


(表2)中没有匹配的行。


RIGHT JOIN


从右表(table_2)中返回所有的记录,即便


在左(table_1)中没有匹配的行。


INNER JOIN


在表中至少一个匹配时,则返回记录。


3.UNION


union 是求两个查询的并集。


select A.field1 as f1, A.field2 as f2 from <table1> A


union


(select B.field3 as f1, field4 as f2 from <table2> B)


order by 字段 desc/asc


注意:


1列名不一致时,会以第一张表的表头为准,并对其栏目。


2会将重复的行过滤掉。


3如果查询的表的列数量不相等时,会报错。


4在每个子句中的排序是没有意义的,mysql在进行合并的时候会忽略掉。


5如果子句中的排序和limit进行结合是有意义的。


6可以对合并后的整表进行排序