sql排序

SQL 按关键字排序

冷暖自知 提交于 2019-12-06 13:57:59
SQL ORDER BY Keyword(按关键字排序) ORDER BY 关键字用于对结果集进行排序。 SQL ORDER BY 关键字 ORDER BY 关键字用于按升序或降序对结果集进行排序。 ORDER BY 关键字默认情况下按升序排序记录。 如果需要按降序对记录进行排序,可以使用DESC关键字。 SQL ORDER BY 语法 SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC; 演示数据库 在本教程中,我们将使用著名的Northwind示例数据库。 以下是 "Customers" 表中的数据: CustomerID CustomerName ContactName Address City PostalCode Country 1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany 2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico 3 Antonio Moreno Taquería Antonio Moreno

数据库字段排序规则冲突(无法解决 equal to 操作中‘ sql_latin1_general_cp1_ci_as ’和‘ chinese_prc_ci_as ’之间的排序规则冲突)

百般思念 提交于 2019-12-06 11:38:49
之前碰到了数据库排序规则冲突问题,即百度或者 Google 的老话题: “ 无法解决 equal to 操作中‘ sql_latin1_general_cp1_ci_as ’和‘ chinese_prc_ci_as ’之间的排序规则冲突 ” 。一般的方法,是在创建临时表或表连接的时候加上规则校勘语句 COLLATE “规则名”解决,如: create table #example ( EXP_Name varchar (50) collate CHINESE_PRC_CI_AS NULL ) select * from A inner join B on A.name=B.name collate Chinese_PRC_CI_AI_AS 或 select * from A inner join B on A.name collate Chinese_PRC_CI_AI_AS =B.name 但是,当一个数据库有很多触发器、存储过程或者函数需要修改的时候,这种方法显得不够显示,即使是将当中的内容导出成 .sql 文件再用替换的方法修改,也是比较麻烦的。曾经试图更改相关数据表的列,甚至数据库的排序规则,如: ALTER DATABASE 数据库名 COLLATE 排列规则,例如: ALTER DATABASE dbexp COLLATE Chinese_PRC_CI_AI ALTER

MySql学习笔记一

谁都会走 提交于 2019-12-05 12:26:11
MySql学习笔记一 1.SQL 分类 DDL(Data Definition Language)数据定义语言 DML(Data Manipulation Language)数据操作语言 DQL(Data Query Language)数据查询语言 DCL(Data Control Language)数据控制语言 TCL(Transaction Control Language)事务控制语言 2.常见指令 查看当前所有数据库: show databases 打开指定的库:use 库名 查看当前库的所有表:show tables 查看其它库的所有表:show tables from 库名 创建表:create table 表名( ​ 列名 列类型, ​ 列名 列类型, ​ ...... ); 查看表结构:DESC 表名 查看服务器版本: select version() || mysql --V 查看字符集: Show variables like '%char%' 查看当前用户:Select USER(); 3.DQL(数据查询语言) 3.1基础查询 select 查询列表 from 表名 查询列表可以是:表中字段、常量、表达式、函数 查询的结果是一个虚拟机的表格 3.1.1.常用关键字 3.1.1.1.起别名 as 或者 空格 例如 select 字段名 as a from 表名

SQL语句多个字段排序

跟風遠走 提交于 2019-12-05 09:24:15
SQL语句多个字段排序 写在前面的话: 本次迭代,分配的任务有点多啊,好在本妈妈朝10晚6的加班加点。其中一项就是列表展示啊, 展示就展示呗,还要排序。排序也可以,测试时排序字段值为啥都一样啊。结果点一下一个顺序。 就想在第一个字段排序完,是不是可以用第二个字段排序 要求:降序排列 select * from table order by column1 desc, column2 desc (两个都是降序) select * from table order by column1 ,column2 desc(一升一降) 也可以这么写,更直观 select * from table order by column1 asc, column2 desc (一升一降) 写在前面的话: 本次迭代,分配的任务有点多啊,好在本妈妈朝10晚6的加班加点。其中一项就是列表展示啊, 展示就展示呗,还要排序。排序也可以,测试时排序字段值为啥都一样啊。结果点一下一个顺序。 就想在第一个字段排序完,是不是可以用第二个字段排序 要求:降序排列 select * from table order by column1 desc, column2 desc (两个都是降序) select * from table order by column1 ,column2 desc(一升一降) 也可以这么写,更直观

Sql 对varchar格式进行时间排序

心已入冬 提交于 2019-12-05 07:21:14
使用函数进行时间排序: STR_TO_DATE(时间字段名, '%Y-%m-%d') DESC; 问题:varchar格式字段排序,没有按时间顺序排序 select * from test order by stat_date desc 解决:需将格式转换成日期格式 select * from test order by STR_TO_DATE(stat_time, '%Y-%m-%d') desc 来源: https://www.cnblogs.com/cailingsunny/p/11913457.html

【转】Oracle执行计划详解

浪子不回头ぞ 提交于 2019-12-04 17:34:45
简介: 本文全面详细介绍oracle执行计划的相关的概念,访问数据的存取方法,表之间的连接等内容。 并有总结和概述,便于理解与记忆! +++ 目录 --- 一.相关的概念 Rowid的概念 Recursive Sql概念 Predicate(谓词) DRiving Table(驱动表) Probed Table(被探查表) 组合索引(concatenated index) 可选择性(selectivity) 二.oracle访问数据的存取方法 1) 全表扫描(Full Table Scans, FTS) 2) 通过ROWID的表存取(Table Access by ROWID或rowid lookup) 3)索引扫描(Index Scan或index lookup)有4种类型的索引扫描:  (1) 索引唯一扫描(index unique scan)  (2) 索引范围扫描(index range scan) 在非唯一索引上都使用索引范围扫描。使用index rang scan的3种情况:    (a) 在唯一索引列上使用了range操作符(> < <> >= <= between)    (b) 在组合索引上,只使用部分列进行查询,导致查询出多行    (c) 对非唯一索引列上进行的任何查询。    (3) 索引全扫描(index full scan)  (4) 索引快速扫描

sql 排序

不打扰是莪最后的温柔 提交于 2019-12-04 11:24:26
排序 我们使用SELECT查询时,细心的读者可能注意到,查询结果集通常是按照 id 排序的,也就是根据主键排序。这也是大部分数据库的做法。如果我们要根据其他条件排序怎么办?可以加上 ORDER BY 子句。例如按照成绩从低到高进行排序: 直线电机选型 -- 按score从低到高 Run 如果要反过来,按照成绩从高到底排序,我们可以加上 DESC 表示“倒序”: -- 按score从高到低 Run 如果 score 列有相同的数据,要进一步排序,可以继续添加列名。例如,使用 ORDER BY score DESC, gender 表示先按 score 列倒序,如果有相同分数的,再按 gender 列排序: -- 按score, gender排序: Run 默认的排序规则是 ASC :“升序”,即从小到大。 ASC 可以省略,即 ORDER BY score ASC 和 ORDER BY score 效果一样。 如果有 WHERE 子句,那么 ORDER BY 子句要放到 WHERE 子句后面。例如,查询一班的学生成绩,并按照倒序排序: -- 带WHERE条件的ORDER BY: Run 这样,结果集仅包含符合 WHERE 条件的记录,并按照 ORDER BY 的设定排序。 小结 使用 ORDER BY 可以对结果集进行排序; 可以对多列进行升序、倒序排序。 来源: https:/

oracle中rownum的用法

我的梦境 提交于 2019-12-04 08:32:02
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀。 (1) rownum 对于等于某值的查询条件 如果希望找到学生表中第一条学生的信息,可以使用rownum=1作为条件。但是想找到学生表中第二条学生的信息,使用rownum=2结果查不到数据。因为rownum都是从1开始,但是1以上的自然数在rownum做等于判断是时认为都是false条件,所以无法查到rownum = n(n>1的自然数)。 SQL> select rownum,id,name from student where rownum=1;(可以用在限制返回记录条数的地方,保证不出错,如:隐式游标) SQL> select rownum,id,name from student where rownum =2; ROWNUM ID NAME ---------- ------ --------------------------------------------------- (2)rownum对于大于某值的查询条件 如果想找到从第二行记录以后的记录,当使用rownum>2是查不出记录的,原因是由于rownum是一个总是从1开始的伪列,Oracle 认为rownum> n

Oracle数据库的sql语句性能优化

纵饮孤独 提交于 2019-12-04 02:23:45
  在应用系统开发初期,由于开发数据库数据比较少,对于查询sql语句,复杂试图的编写等体会不出sql语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要问题之一。系统优化中一个很重要的方面就是sql语句的优化。对于海量数据,劣质sql语句和优质sql语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就行,而是要写出高质量的sql语句,提高系统的可用性。   Oracle的sql调优第一个复杂的主题,甚至需要长篇概论来介绍OracleSQL调优的细微差别。不过有一些基本的规则是每个OracleDBA都需要遵从的,这些规则可以改善他们系统的性能。   sql调优的目标是简单的:消除不必要的大表全表搜索。不必要的全表搜索导致大量不必要的磁盘I/O,从而拖慢整个数据库的性能,对于不必要的全表搜索来说,最常见的调优方法是增加索引,可以在表中加入标准的B树索引,也可以加入位图索引和基于函数的索引。要决定是否消除一个全表搜索,你可以仔细检查索引搜索的I/O开销和全表搜索的开销,它们的开销和数据块的读取和可能的并行执行有关,并将两者作对比。   另外,在全表搜索是一个最快的访问方法时,将小表的全表搜索放到缓存(内存)中,也是一个非常明智的选择。我们会发现现在诞生了很多基于内存的数据库管理系统

对于order by子句

十年热恋 提交于 2019-12-03 09:21:30
order by子句指定排序顺序 select username from user order by username; 依据username的字母顺序对于查找出来的username进行排序,默认是升序(A-Z) 也可以进行降序排序,必须指定DESC关键字 在上面的sql语句变为 select username from user order by username desc; 将会变成降序排列。 对于有多个子句的筛选条件来说,一般是先是第一个条件,如果第一个相同,才会去比较第二个。 来源: https://www.cnblogs.com/cold-windy/p/11785254.html