sql
Little Coder
向往美好生活的程序员
展开
-
SQL的子查询
SQL的子查询需要注意的几点情况子查询需要有括号;子查询可以在where,select,having,from后面使用;子查询不可以在group by 后面使用;主查询和子查询可以不是同一个表;一般不再子查询中使用排序,但是在top-N(例如是查找员工工资最高的前三名)分析问题中必须对子查询排序;select后面的子查询必须是单行子查询(子查询只返回一条数据);当多表查询和子查询能够解原创 2017-06-15 19:01:45 · 311 阅读 · 0 评论 -
Oracle之修改表结构
语句: alter table tableName rename column oldCName to newCName; – 修改字段名 alter table tableName modify (cloumnName 数据类型); – 修改数据类型例如: 1、创建表: CREATE TABLE Student( id varchar2(32) primary key,原创 2017-11-04 13:18:40 · 986 阅读 · 0 评论 -
Sql性能优化之索引
在做性能跟踪分析过程中,经常发现有不少后台程序的性能问题是因为缺少合适索引造成的,有些表甚至一个索引都没有。这种情况往往都是因为在设计表时,没去定义索引,而开发初期,由于表记录很少,索引创建与否,可能对性能没啥影响,开发人员因此也未多加重视。然一旦程序发布到生产环境,随着时间的推移,表记录越来越多 这时缺少索引,对性能的影响便会越来越大了。 这个问题需要数据库设计人员和开发人员共同关注 法则:原创 2017-09-06 17:01:18 · 425 阅读 · 0 评论 -
Sql性能优化之LIKE模糊查询
我们在写sql的时候应该尽量避免在一个复杂查询里面使用 LIKE ‘%parm1%’—— 由于parm1前面用到了“%”,因此该查询必然走全表扫描,导致相关列的索引无法使用,除非必要,否则不要在关键词前加%, 如果后台逻辑必须使用’%parm1%’,可以考虑以下解决办法:修改前台程序——把查询条件的供应商名称一栏由原来的文本输入改为下拉列表,用户模糊输入供应商名称时,直接在前台就帮忙定位到具体的原创 2017-09-06 17:25:13 · 10569 阅读 · 0 评论 -
SQL之删除重复数据
删除用户表中的id最小的用户名的重复数据delete a from user a left join (select username,count(id),Max(id) as id from user group by username having count(id) >1) b on a.username = b.username where a.id<b.id;原创 2017-08-11 15:53:47 · 268 阅读 · 0 评论 -
Sql之Oracle中的正则替换regexp_replace
regexp_replace(1,2,3,4,5,6)语法说明:1:字段 2:替换的字段 3:替换成什么 4:起始位置(默认从1开始) 5:替换的次数(0是无限次) 6:不区分大小写该函数用一个指定的 replace_string 来替换匹配的模式,从而允许复杂的”搜索并替换”操作。 例子:SELECT REGEXP_REPLACE('Joe Smith','( ){2,}', '原创 2017-09-08 15:03:48 · 22909 阅读 · 0 评论 -
Sql性能优化之UNION、UNION ALL
SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。1、SQL UNION 语法SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s原创 2017-09-06 17:17:25 · 37276 阅读 · 0 评论 -
Sql性能优化之in、exists
in 和existsin是把外表和内表作hash 连接,而exists 是对外表作loop 循环,每次loop 循环再对内表进行查询。一直以来认为exists 比in 效率高的说法是不准确的。如果查询的两个表大小相当,那么用in 和exists 差别不大。如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:例如:表A(小表),表B(大表)1:select * from原创 2017-09-06 16:57:01 · 577 阅读 · 0 评论 -
SQL之EXISTS的用法
比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHERE EXISTS( SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID) 这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是Cus原创 2017-07-20 10:16:56 · 228 阅读 · 0 评论 -
存储过程的初步认识
1、创建和删除存储过程 创建存储过程,需要有CREATE PROCEDURE或CREATE ANY PROCEDURE的系统权限。该权限可由系统管理员授予。创建一个存储过程的基本语句如下: CREATE [OR REPLACE] PROCEDURE 存储过程名[(参数[IN|OUT|IN OUT] 数据类型...)] {AS|IS} [说明部分] BEGIN 可执行部分 [EXCEPT原创 2017-08-14 15:38:16 · 316 阅读 · 0 评论 -
SQL之nvl()函数
如果你某个字段为空,但是你想让这个字段显示0,而不是空,nvl(字段名,0)就是当你选出来的时候,这个字段虽然为空,但是显示的是0,当然这个0也可以换成其他东西,如:1,2,3……原创 2017-07-27 14:28:41 · 4627 阅读 · 1 评论 -
SQL之to_date()以及关于日期处理的详解
日期例子:SELECT TO_DATE('2006-05-01 19:25:34', 'YYYY-MM-DD HH24:MI:SS') FROM DUALSELECT TO_DATE('2006-05-01 19:25', 'YYYY-MM-DD HH24:MI') FROM DUALSELECT TO_DATE('2006-05-01 19', 'YYYY-MM-DD HH24') FROM原创 2017-07-27 14:54:08 · 160188 阅读 · 0 评论 -
SQL之to_char、lpad、rpad、substr字符串处理
TO_CHAR 是把日期或数字转换为字符串,不能指定字符串长度。 使用TO_CHAR函数处理日期:TO_CHAR(number, '格式') 例如:TO_CHAR(salary,’$99,999.99’)使用TO_CHAR函数处理日期:TO_CHAR(date,’格式’); TO_CHAR(newdate,’yyyy-mm-dd’) 指定字符串的长度可以使用lpad或者rpad或者substri原创 2017-07-27 14:47:34 · 1897 阅读 · 1 评论 -
SQL之case when then else end用法
Case具有两种格式。简单Case函数和Case搜索函数。复制代码 复制代码 –简单Case函数 CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘2’ THEN ‘女’ ELSE ‘其他’ END –Case搜索函数 CASE WHEN sex = ‘1’ THEN ‘男’ WHEN sex = ‘2’ THE原创 2017-07-24 18:31:48 · 2656 阅读 · 0 评论 -
SQL之批量更新select出来的数据
举例: 有两张表t1, t2 这两张表通过id字段关联。 t1 t2 id a id b 1 beijing 1 北京 2原创 2017-12-18 15:10:06 · 6310 阅读 · 0 评论