
SQL
那些年的代码
Java工作者
展开
-
MySQL中Innodb的聚簇索引和非聚簇索引
聚簇索引数据库表的索引从数据存储方式上可以分为聚簇索引和非聚簇索引(又叫二级索引)两种。Innodb的聚簇索引在同一个B-Tree中保存了索引列和具体的数据,在聚簇索引中,实际的数据保存在叶子页中,中间的节点页保存指向下一层页面的指针。“聚簇”的意思是数据行被按照一定顺序一个个紧密地排列在一起存储。一个表只能有一个聚簇索引,因为在一个表中数据的存放方式只有一种。一般来说,将通过主键作为聚簇...原创 2020-03-28 19:06:44 · 803 阅读 · 0 评论 -
SQL中EXISTS的用法
比如在Northwind数据库中有一个查询为SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID)这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是Cus...原创 2019-12-08 10:10:01 · 487 阅读 · 0 评论 -
SQL中IN和EXISTS用法的区别
结论1. in()适合B表比A表数据小的情况2. exists()适合B表比A表数据大的情况当A表数据与B表数据一样大时,in与exists效率差不多,可任选一个使用.select * from Awhere id in(select id from B)以上查询使用了in语句,in()只执行一次,它查出B表中的所有id字段并缓存起来.之后,检查A表的id是否与B表中的...原创 2019-12-08 10:10:43 · 93 阅读 · 0 评论 -
mysql中一条sql语句中使用多个count关联查询多张表
在给公司写代码的过程中忽然发现在sql语句中碰到一些小问题,虽然最终自己解决了,但是不得不说好不容易啊,故写此博客提醒自己,以免日后再在此处浪费时间。需求:有两张表,分别是marketChannelInfo表和marketDatasourceInfo表,两张表的字段分别为: CREATE TABLE `marketChannelInfo` ( `id` ...原创 2019-08-26 14:47:12 · 2945 阅读 · 0 评论 -
为什么不推荐使用 select * ?是性能问题吗 ?
引言大家在开发中,还有很多童鞋在写查询语句的时候,习惯写下面这种不规范sqlselect * from table而不写成下面的这种规范方式 select col1,col2,...,coln from table我也知道,这些童鞋是图方便,毕竟再敲一堆的列名,嫌麻烦!你们上班可以问问自己的同事你:" xx,知道 select * 和 select 所有字段...原创 2019-08-26 14:46:24 · 849 阅读 · 0 评论 -
Mysql查询为空赋值为0
SELECTa.id AS schoolId,a. NAME AS schoolName,a.area_id as areaId,a.school_type AS schoolType,a.school_contact AS schoolContact,a.contact_telphone AS contactTelphone,a.student_number...原创 2019-09-05 11:42:58 · 5800 阅读 · 6 评论 -
SQL中的子查询的使用
这篇文章讲述了SQL中的子查询,如有错误或者不妥之处,还请各位大佬批评指正。什么是子查询?把一个查询的结果在另一个查询中使用就叫做子查询初始数据有五个表:学生表,老师表,课程表,学院表,课程成绩表。表结构初始数据学生表 老师表 课程表 学院表 课程成绩表单行子查询返回的结果集为单个的子查询,叫做单行子查询。单行比较符有 >、>=、...原创 2019-08-28 14:14:41 · 401 阅读 · 0 评论 -
MySQL:如何选取Table中的50到100行
MySQL:如何选取Table中的50到100行使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,MySql已 经为我们提供了这样一个功能。? 1 2 [sql] SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset ...原创 2019-09-03 21:48:48 · 2168 阅读 · 0 评论 -
用SQL语句,删除掉重复项只保留一条
用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select peopleId from people group by peopleId having count(peo...原创 2019-09-02 10:10:19 · 335 阅读 · 0 评论 -
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'的意思是,这版本的 MySQL 不支持使用 LIMIT 子句的 IN/ALL/ANY/SOME 子查询,即是支持非 IN/ALL/ANY/SOME 子查询的 LIMIT 子查询。也就是说,这样的语句是不能正确执行的。select *...原创 2019-09-26 16:27:00 · 139 阅读 · 0 评论 -
多表关联查询之内关联,左关联
-- 同学持有的手机记录表create table student_phone (id int primary key,stu_name varchar2(20),phone varchar2(200))insert into student_phone values (1,'小红','华为 荣耀v9');insert into student_phone values (...原创 2019-09-16 10:03:11 · 3793 阅读 · 0 评论 -
mysql中一条sql语句中使用多个count关联查询多张表
在给公司写代码的过程中忽然发现在sql语句中碰到一些小问题,虽然最终自己解决了,但是不得不说好不容易啊,故写此博客提醒自己,以免日后再在此处浪费时间。需求:有两张表,分别是marketChannelInfo表和marketDatasourceInfo表,两张表的字段分别为: CREATE TABLE `marketChannelInfo` ( `i...原创 2019-09-16 10:03:20 · 1988 阅读 · 0 评论 -
mysql查询字段为null时,返回空字符串
原始数据:第一种:使用case when判断 SELECT username AS virtualCardNum, realname AS realName, authenticated AS SMZ, ( CASE WHEN idnumber IS NULL THEN '' WHEN idn...原创 2019-09-16 10:03:52 · 5481 阅读 · 0 评论 -
java程序防止sql注入的方法
12306刚爆出sql注入的漏洞(http://hyfw.12306.cn/hyinfo/action/ClcscxAction_index?cllx=G这个页面,自重输入1'),之前一些关于sql注入的讨论大多数都是php程序的,想跟大家讨论一下java程序防止sql注入应该注意的地方。第一种采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setString方法传值即可:St...原创 2019-06-12 10:14:05 · 13020 阅读 · 0 评论 -
防止SQL注入的五种方法
一、SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。二、SQL注入攻击的总体思路1.寻找到SQL注入的位置2.判断服务器类型和后台数据库类型3.针对不通的服务器和数据库特点进行SQL注入攻击三、SQL注入攻击实例比如在一个登录界面,要求输...原创 2019-06-12 10:14:10 · 625 阅读 · 0 评论 -
JDBC编程PreparedStatement的使用
在JDBC编程中,常用Statement、PreparedStatement和CallableStatement三种方式来执行查询语句,其中Statement用于通用查询,PreparedStatement用于执行参数化查询,而CallableStatement则是用于存储过程。 1、Statement 该对象用于执行静态的 SQL 语句,并且返...原创 2019-06-12 10:15:39 · 886 阅读 · 0 评论 -
user_tab_comments 和user_col_comments 的使用
user_tab_comments 可以查看当前数据库用户的所有表;妙用:例如在业务系统中的某个功能用到那些表可以根据表的注释来检索相关的表;相关的查询语句:select * from user_tab_comments where comments like '%注释%';user_col_comments 可以查看当前数据库用户所有表的字段;妙用:业务系统用(所对应的...原创 2019-09-18 10:25:40 · 1608 阅读 · 0 评论 -
MYSQL根据日期查询
“风萧萧兮易水寒,壮士一去兮不复还”总结一下mysql的根据日期查询数据和在日期区间查询数据.首先,看数据表和表结构建表语句:CREATE TABLEdatetest(idint(11) NOT NULL AUTO_INCREMENT,brand_namevarchar(100) DEFAULT NULL COMMENT '品牌名称',model_namevarch...原创 2019-09-18 10:25:36 · 795 阅读 · 0 评论 -
mysql 时间类型查询条件写法
昨天在写一个sql查询3个月前的历史数据时,直接在时间字段上用“<2010-07-09”来过滤,结果sql执行一直报warning:Incorrect date value: '1988' for column 'gmt_create' at row 1今天再次做了验证,发现如下:表结构root@test 02:38:59>show create table xc\G*****...原创 2019-09-18 10:25:29 · 1788 阅读 · 0 评论 -
sql 时间条件查询
sql查询当天所有记录to_date()使用select * from table t where t.time >= to_date(aaaa,'yyyy-mm-dd hh24:mm:ss') and t.time<to_date(bbbb,'yyyy-mm-dd hh24:mm:ss')aaaa,bbbb是字符串类型 比如:aaaa = '2018-04-19 00:0...原创 2019-09-18 10:25:23 · 4399 阅读 · 0 评论 -
MySQL行转列与列转行
行转列例如:把图1转换成图2结果展示图1图2 1 2 3 4 5 6 7 CREATETABLE`TEST_TB_GRADE` ( `ID`int(10)NOTNULLAUTO_INCREMENT, `USER_NAME`varchar(20)D...原创 2019-09-17 13:59:36 · 173 阅读 · 0 评论 -
MySQL IFNULL() 函数
IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。IFNULL() 函数语法格式为:IFNULL(expression, alt_value)如果第一个参数的表达式 expression 为 NULL,则返回第二个参数的备用值。参数说明:参数 描述 expression ...原创 2019-09-16 10:03:57 · 145 阅读 · 0 评论 -
避免SQL注入
避免SQL注入什么是SQL注入SQL注入攻击(SQL Injection),简称注入攻击,是Web开发中最常见的一种安全漏洞。可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作,甚至有可能获取数据库乃至系统用户最高权限。而造成SQL注入的原因是因为程序没有有效过滤用户的输入,使攻击者成功的向服务器提交恶意的SQL查询代码,程序在接收后错误的将攻击...原创 2019-06-12 10:14:00 · 129 阅读 · 0 评论