
接下来,我们将使用员工相关的四张样本数据表,来学习SQL,建议你在学习过程中多动手练习,理解才会更深刻。表和字段含义,如下图:
如何利用SQL语句来 *** 作以上数据呢?我们必须将样本数据导入MySQL客户端(如:Navicat)中。可以在客户端 *** 作数据,或者在终端窗口。工作中经常在客户端 *** 作,所以本文所有SQL语句将在Navicat中学习。
首先将sql脚本保存到桌面(获取方式:关注"Python之每日一课"公众号,后来回复"sql基础数据",即可。),导入SQL脚本的具体 *** 作流程如下:
现在数据准备完成。这里是导入sql脚本;导出同理,选择”转储SQL“文件。当然了,Navicat也支持将当前表或查询结果导出Excel、CSV等文件类型。
下面可以写SQL语句了(每个sql脚本可以保存,下次直接使用),如下:
类似于Python中 :print(要打印的东西)
①通过select查询完的结果 ,是一个虚拟的表格,不是真实存在
② 要查询的东西 可以是常量值、表达式、字段、也可以是函数
补充:可以给字段起别名,好处是提高可读性,更方便理解;多表连接时,区分字段。用AS 或 空格来实现。如下:
2、 条件查询
条件查询:根据条件过滤原始表的数据,查询到想要的数据
1)语法
2)分类
①条件表达式
②逻辑表达式
③模糊查询
⭐ 注意:where 一定要放到 from 后面。NULL 不是假,也不是真,而是"空";任何运算符,判断符碰到NULL,都得NULL;NULL的判断只能用is null,is not null;NULL 影响查询速度,一般避免使值为NULL。exists查询可以与in型子查询互换,它们之间区别以后语句优化时会详细讲解。
3、 排序查询
1)语法
2)举栗
⭐ 注意:order by 一定要放到 语句最后(limit前面)
4、分组查询
1)语法
2)特点
①可以按单个字段分组
②和分组函数一同查询的字段最好是分组后的字段
③分组筛选(where 和 having区别)
④可以按多个字段分组,字段之间用逗号隔开
⑤可以支持排序
⑥having后可以支持别名
3)举栗
⭐ 注意:关键字顺序是where —>group by—>having—>order by—>limit( having不能单独使用,需结合group by ,表示对分组后的结果进行筛选;而 group by 必须结合分组聚合函数一起使用 ,比如:count()、max()等)
5、 常见函数
1)单行函数
2)分组函数
3)分组函数特点
①以上五个分组函数都忽略null值,除了count()
②sum和avg一般处理数值型,max、min、count可以处理任何数据类型
③都可以搭配distinct使用,用于统计去重后的结果
④count的参数可以支持:字段、、常量值,一般放1
6、连接查询(多表查询)
单个表不能满足需求时,需要结合多张表,去除有关联的数据。这时就需要用连接查询,连接查询有三种,通常join使用的最多。
①等值连接的结果 = 多个表的交集
②多个表不分主次,没有顺序要求
③一般为表起别名,提高阅读性和性能
①语法
②好处
语句上,连接条件和筛选条件实现了分离,简洁。
⭐ 注意:左右连接可互换 A left join B 等价于B right join A;内连接是左</pre>
右连接的交集;mysql没有外连接。
自连接相当于等值连接,但是等值连接涉及多个表,而自连接仅仅是它自己。如下:在员工信息表里,查询员工名和直接上级的名。
7、子查询
一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或内查询。在外面的查询语句,称为主查询或外查询。
①子查询都放在小括号内
②子查询可以放在from后面、select后面、where后面、having后面,但一般放在条件的右侧
③子查询优先于主查询执行,主查询使用了子查询的执行结果
④子查询根据查询结果的行数不同分为以下两类:
2)举栗
8、分页查询 (可选)
实际web开发中,当显示的数据,一页显示不完时,需要分页提交sql请求。
2)特点
①起始条目索引默认从0开始
②limit子句放在查询语句的最后
③公式:select from 表 limit (page-1)sizePerPage,
3)举栗
9、union联合查询
union用于把涉及多个表的SELECT语句的结果组合到一个结果集合中。适用于查询条件较多,多个表之间没有连接关系的场景。</pre>
2)特点
①多条查询语句的查询的列数必须是一致的
②多条查询语句的查询的列的类型几乎相同
③union 代表去重,union all 代表不去重
3)举栗
UNION 和 UNION ALL 运行结果的区别如下:
⭐ 注意:在多个 SELECT 语句中,第一个 SELECT 语句中被使用的字段名称将被用于结果的字段名称。当使用 UNION 时,MySQL 会把结果集中重复的记录删掉,而使用 UNION ALL ,MySQL 会把所有的记录返回,且效率高于 UNION
好,今天学习到这里。工作中用的最多就是查询。如果能消化本文涉及到的所有内容,大概能解决80%的工作需求。本文更多的是原理介绍,例子不多,只有先知道是什么,才能知道怎么学。那么,接下来最重要的是要多练习实践。因为实际的业务场景要复杂很多,给大家推荐两个刷题的网站,力扣和牛客网,里面有大量的sql面试题。能进一步提高我们sql的水平。这篇文章主要是SQL的常用查询。明天继续学习SQL的DML增删改。一起加油!
方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低
方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法
方法三: Java SE 60 才开始提供的办法, 效率和方法二基本上相等, 但出于兼容性考虑, 推荐使用方法二或方法四
方法四: 这是种最直观,简便的方法,而且效率也非常的高,与方法二、三的效率差不多
以下代码在我机器上的运行结果: (机器性能不一, 仅供参考)
function 1 use time: 140ms
function 2 use time: 47ms
function 3 use time: 47ms
function 4 use time: 47ms
Java代码
public class TestEmptyString {
String s = "";
long n = 10000000;
private void function1 {
long startTime = SystemcurrentTimeMillis();
for (long i = 0; i < n; i++) {
if (s == null || sequals(""))
;
}
long endTime = SystemcurrentTimeMillis();
Systemoutprintln("function 1 use time: " + (endTime - startTime)
+ "ms");
}
private void function2 {
long startTime = SystemcurrentTimeMillis();
for (long i = 0; i < n; i++) {
if (s == null || slength() <= 0)
;
}
long endTime = SystemcurrentTimeMillis();
Systemoutprintln("function 2 use time: " + (endTime - startTime)
+ "ms");
}
private void function3 {
long startTime = SystemcurrentTimeMillis();
for (long i = 0; i < n; i++) {
if (s == null || sisEmpty())
;
}
long endTime = SystemcurrentTimeMillis();
Systemoutprintln("function 3 use time: " + (endTime - startTime)
+ "ms");
}
private void function4 {
long startTime = SystemcurrentTimeMillis();
for (long i = 0; i < n; i++) {
if (s == null || s == "")
;
}
long endTime = SystemcurrentTimeMillis();
Systemoutprintln("function 4 use time: " + (endTime - startTime)
+ "ms");
}
public static void main(String[] args) {
TestEmptyString test = new TestEmptyString();
testfunction1;
testfunction2;
testfunction3;
testfunction4;
}
注意:s == null 是有必要存在的
如果 String 类型为 null, 而去进行 equals(String) 或 length() 等 *** 作会抛出javalangNullPointerException
并且s==null 的顺序必须出现在前面不然同样会抛出javalangNullPointerException
如下代码:
Java代码
String str= = null;
if(str=equals("") || str= == null){//会抛出异常
Systemoutprintln("success");
}
// ""equales(str);后置确保不会遇null报错。
原文出自比特网,转载请保留原文链接:>
sql语句中if判断条件是结合select语句使用的。IF函数也能通过判断条件来返回特定值,它的语法如下:IF(expr,result_true,result_false)。
expr是一个条件表达式,如果结果为true,则返回result_true,否则返回result_false。在一些场景中,IF函数和CASE WHEN是有同样效果的,前者相对简单,后者能应对更复杂的判断。另外,IF函数还可以和聚合函数结合。
SQL其他情况简介。
SQL是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
<% dim admin_name,admin_pwd,rs
admin_name=trim(request("name"))
admin_pwd=trim(request("pwd"))
set rs=servercreateobject("adodbconnection")
sql="select from user where user='"&admin_name&"'and password='"&admin_pwd&"'"
rsOpen sql,conn,1,1
<%if isnull(rs(user))=false then
Responseredirect(index1)
else
responsewrite "非法登陆"
rsclose
end if
%>
说上面那个判断语句缺少语句
怎么回事
解析:
if isnull(rs(user))=false then
这句中user应该加双引号
if isnull(rs("user"))=false then
还有
Responseredirect(index1)
这句的index1是不是也要加双引号?
Responseredirect "index1"
先调用它的last()方法把指针放到最后,在用getRow();获得所在行行标就是一共得记录条数~
即:
rslast();
int rowCount=rsgetRow();
以上就是关于数据库基础篇(二)—— SQL之数据查询全部的内容,包括:数据库基础篇(二)—— SQL之数据查询、JAVA 查询数据库判断是否为空问题、sql语句中if判断条件怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)