网站logo做h1标签,招聘网站怎么做吸引人,网络基础架构,购买一个域名能建几个网站应用经常需要处理用户的数据#xff0c;并将用户的数据保存到指定位置#xff0c;数据库是常用的数据存储工具#xff0c;数据库是结构化信息或数据的有序集合#xff0c;几乎所有的关系数据库都使用 SQL 编程语言来查询、操作和定义数据#xff0c;进行数据访问控制…应用经常需要处理用户的数据并将用户的数据保存到指定位置数据库是常用的数据存储工具数据库是结构化信息或数据的有序集合几乎所有的关系数据库都使用 SQL 编程语言来查询、操作和定义数据进行数据访问控制作为测试人员掌握SQL语言是必要的。
我们一般对数据库的数据表进行增删改查的操作以下是一些常用的SQL命令。
数据表增加数据
我们可以通过insert into语句向表中插入新记录 使用该命令有2种方式
命令形式描述INSERT INTO table_name VALUES (value1,value2,value3,...),(value1_2,value2_2,value3_2,...),...,(value1_n,value2_n,value3_n,...);无需指定要插入数据的列名只需提供被插入的值即可但需要注意被插入的表中有多少个字段即列则值就必须有多少个且需要按照表字段排序进行赋值INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...),(value1_2,value2_2,value3_2,...),...,(value1_n,value2_n,value3_n,...);需要指定列名及被插入的值 column与value一一对应即column1value1column2value2 数据表删除数据
可以用DELETE命令删除指定的数据工作中慎用即使使用必须检查where语句是否正确 命令DELETE FROM table_name WHERE xxx;
数据表修改数据
如果需要修改表中一些数据可以使用UPDATE命令
UPDATE table_name
SET column1 value1, column2 value2, ...
WHERE condition;数据表查询数据
数据表操作最多的就是查询了即SELECT语句
命令形式描述SELECT column1, column2, ... FROM table_name [where xxx];查询table_name表符合xxx条件的数据的指定字段值SELECT * FROM table_name [where xxx];查询table_name表符合xxx条件的数据的所有字段值 函数
在SELECT语句中经常会用一些函数对数据进行统计常用函数如下
函数说明COUNT()返回符合条件的数据量MAX()返回最大值MIN()返回最小值DISTINCT()在表中一个列可能会包含多个重复值该函数返回所在列去重后的所有值ROUND()把数值字段四舍五入入为指定的小数位数
COUNT() COUNT(column_name) 函数返回指定列的值的数目NULL 不计入 函数说明SELECT COUNT(*) FROM table_name[where xxx];返回表中符合where条件的数据的总量SELECT COUNT(column_name) FROM table_name[where xxx];返回表中符合where条件的且列column_name的值不为NULL的总量类似于 SELECT COUNT(*) FROM table_name where column_name is not NULL[ and xxx];SELECT COUNT(condition) FROM table_name[where xxx];返回表中符合where条件且满足condition!null的数据量SELECT COUNT(condition or NULL) FROM table_name[where xxx];返回表中符合where条件且满足condition的数据量
COUNT(*)和COUNT(column_name) COUNT(condition)
前面说了COUNT()函数是统计指定条件不为NULL的数据所以对于SELECT COUNT(condition) FROM table_name[where xxx];语句只要符合where条件的数据在condition不为NULL就会被统计进去有几种比较常用的用法 我们有时会碰到COUNT(数字)的用法因为统计指定条件不为NULL的数据而数字肯定不是NULL所以COUNT(数字)相当于统计符合where条件的数据量 另一种就是条件表达式我们需要统计的数据量除了要符合where条件外还需要符合指定条件 如下图所示在COUNT()函数里加上了条件表达式但是条件表达式需要注意的一点是COUNT()函数是根据值是否为NULL去统计的所以条件表达式要根据结果为NULL去判断即如果条件表达式得到的结果是true或false对于COUNT()函数来说都是可统计的因为true和false都不是NULL所以如果需要统计符合条件的可以在条件表达式后加上or NULL如果前面的条件表达式为true时不会走后面为NULL的设置如果为false时则会走后面为NULL的设置
注意可能有人会有疑问如果还需要符合指定条件为什么不在where条件中加上而是在count()函数中指定因为有些查询可能比较复杂比如需要从不同的维度去查询的时候where条件会将数据范围固定在某些条件中count()则可以在指定的符合where条件的数据范围中去统计不同维度的数据具体按照实际需要去使用即可如下 如统计男性中grade20和grade20的数据量
MAX()和MIN()
命令使用说明SELECT MAX(column_name) FROM table_name[where xxx];传入的是列名结果是返回指定列的最大值SELECT MIN(column_name) FROM table_name[where xxx];传入的是列名结果是返回指定列的最小值 DISTINCT() 命令行SELECT DISTINCT column1, column2, ... FROM table_name[ where xxx]; 描述将column1, column2, …等字段值均不重复的数据返回即去重 有时候DISTINCT()函数会和其他函数如COUNT()、SUM()一起使用
ROUND() 命令SELECT ROUND(column_name,decimals) FROM TABLE_NAME; 说明将column_name列的数值按照指定小数位decimals四舍五入 LIMIT 命令行select * from table_name [where xxx] limit [offset] rows 描述用于限制查询结果返回的数量常用于分页查询 offset偏移量即从哪个位置开始如果未提供则默认从0开始数据表查询结果的位置从0开始算如果offset超过了符合where条件的数据量或表的总数据量则结果返回为空rows取行数量即最多取多少行 注意并不是所有的数据库都支持LIMIT也不是所有支持LIMIT语法的数据库其LIMIT的用法都一致 ORDER BY 命令行SELECT column1, column2, ... FROM table_name [where xxx] ORDER BY column1, column2, ... ASC|DESC; 描述对结果集按照一个列或者多个列进行排序默认升序排序 ASC表示按升序排序。DESC表示按降序排序。 分组查询GROUP BY和HAVING 子句
分组即按照指定特征列将特征相同字段值相同的分为同一个组不同的特征分为不同组在数据表中可以理解为按照某些列中每一行数据的指定列的值进行区分若这些列的值相同则分为同一组不相同则不在同一个组。在用来分组的列上我们可以使用 COUNT()、 SUM()、MAX()等函数进行数据统计。 命令行SELECT column1, aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1; 注意如果SQL语句里有where子句GROUP BY是对where子句筛选后的数据进行分组不是对整张表进行分组
有时候我们需要对分组后的数据进行过滤则可以使用HAVINGHAVING是对分组后的数据进行过滤 命令行SELECT column_1, aggregate_function(column_2) FROM table_name WHERE condition GROUP BY column_1,...,cloumn_n HAVING aggregate_function(column_xx)xxx; EXISTS 运算符 命令行SELECT xx FROM table_name WHERE [not] EXISTS (SELECT xxx); 描述EXISTS用于判断查询子句是否有记录如果有至少一条记录存在返回 True否则返回 False如果where子句返回True则显示该数据行如果where子句返回False则不显示该数据行 如下图所示select 12和select NULL都会返回1行记录根据EXISTS子句如果有至少1条记录返回True得到where子句一直为True所有数据行被返回由于select * from demo;返回了空集合即1条记录都没有所以EXISTS子句返回了False即where子句一直为False所以数据行都没有被返回。 根据上面的例子可以很容易理解以下的例子
JOIN子句
JOIN相关子句是用于将两个或者多个表结合起来再进行相关操作
函数说明inner join内连接以连接条件(on t1.column1t2.column1)作为判断如果column1对应的值在2个表中都有数值则进行数据行连接并返回如果在其中一个表中没有对应值则不返回left join左连接以左表为核心进行连接即以连接条件(on t1.column1t2.column1)作为判断如果左表的column1字段值在右表column1字段中有同样的值则进行数据行连接并返回如果在右表column1字段中有没有同样的值则以右表所有字段值为NULL与左表对应数据行进行连接然后返回right join右连接以右表为核心进行连接即以连接条件(on t1.column1t2.column1)作为判断如果右表的column1字段值在左表column1字段中有同样的值则进行数据行连接并返回如果在左表column1字段中有没有同样的值则以左表所有字段值为NULL与右表对应数据行进行连接然后返回 操作符
IN和NOT IN
命令说明SELECT/UPDATE/DELETE xxx WHERE column IN (value1, value2, ...);指定列(column)的值要在IN指定的范围内SELECT/UPDATE/DELETE xxx WHERE column NOT IN (value1, value2, ...);指定列(column)的值要不在IN指定的范围内 LIKE 命令SELECT/UPDATE/DELETE xxx WHERE column LIKE pattern; 描述column列的值要模糊匹配指定模式 模式设置的有2个较常用的符号
命令说明%匹配0个或多个字符_匹配一个字符 AS别名
别名是为了让列名称或表名称的可读性更强而给字段名称或表取的名称 给列名称取别名命令SELECT column_name1 AS 别名1, column_name2 AS 别名2,... FROM table_name; 有时候一个SQL执行语句中有多张表这个时候就需要给表取别名来增强可读性 给表取别名命令SELECT 别名.column_name1, 别名.column_name2,... FROM table_name [as] 别名;
嵌套子查询
嵌套子查询可以简单理解为在where语句中嵌套了select语句 命令行SELECT/UPDATE/DELETE xxx WHERE column IN//like (select column from xxx [where xxx]); 注意嵌套的select语句查询的结果集必须是指定列column的结果集