当前位置:首页 » 编程语言 » sql表的默认排序
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql表的默认排序

发布时间: 2022-10-04 04:49:53

‘壹’ sql查询语句默认排序规律

select
a.*,b.*
(可以选择字段名称,注意两个表中重名的字段一定要加a.或b.,其他不重名的可以不加,但是为了以后的拓展,最好都加)
from
[表A]
as
a
left
join
[表B]
as
b
on
a.$key=b.key
order
by
b.cid
desc
(这样的话当b表中的b.key不在a表中的时候,b.*的字段都是空的,如果想改成你期望的类型,可以使用isnull函数,比如isnull(b.key,0)或
isnull(b.key,'无').

‘贰’ mysql默认排序问题

参考mysql官方的回答:
当你的表示myisam时:
SELECT * FROM tbl -- this will do a "table scan". If the table has never had any DELETEs/REPLACEs/UPDATEs, the records will happen to be in the insertion order, hence what you observed.
大致意思为,一个myisam引擎表在没有任何的删除,修改操作下,执行 select 不带order by,那么会按照插入顺序进行排序。

If you had done the same statement with an InnoDB table, they would have been delivered in PRIMARY KEY order, not INSERT order. Again, this is an artifact of the underlying implementation, not something to depend on.
对于innodb引擎表来说,在相同的情况下,select 不带order by,会根据主键来排序,从小到大

‘叁’ SQL查询语句默认排序规律

select a.*,b.*
(可以选择字段名称,注意两个表中重名的字段一定要加a.或b.,其他不重名的可以不加,但是为了以后的拓展,最好都加)
from [表A] as a left join [表B] as b
on a.$key=b.key
order by b.cid desc
(这样的话当b表中的b.key不在a表中的时候,b.*的字段都是空的,如果想改成你期望的类型,可以使用isnull函数,比如isnull(b.key,0)或 isnull(b.key,'无').

‘肆’ sql中没有order by,是否存在默认排序

oracle数据库是没有默认排序的 要排序必须加上order by 因为oracle是按块进行读取数据的 如果数据按顺序存储,则可能使读取出来的数据是按顺序的,给用户误解为默认排序 oracle没有进行任何排序操作,rowid表示的是数据存放的数据块内部地址,如果没有要求排序,oracle会顺序的从数据块中读取符合条件的数据返回到客户端,不过看起来好像是按照rowid排序似的 如果数据量足够大,即使相同的语句,都有可能不同的结果。 一般而言表是堆表所以是无序的 他是按照也即物理存放顺序来读取的

‘伍’ sql中默认为升序

1、选择tools->window list。

‘陆’ SQL查询语句默认排序规律

select
a.*,b.*
(可以选择字段名称,注意两个表中重名的字段一定要加a.或b.,其他不重名的可以不加,但是为了以后的拓展,最好都加)
from
[表A]
as
a
left
join
[表B]
as
b
on
a.$key=b.key
order
by
b.cid
desc
(这样的话当b表中的b.key不在a表中的时候,b.*的字段都是空的,如果想改成你期望的类型,可以使用isnull函数,比如isnull(b.key,0)或
isnull(b.key,'无').

‘柒’ SQL SERVER 2008 如何更改默认的排序规则

请问怎么更改排序规则呢

1.sp_helpsort
SELECT SERVERPROPERTY ('Collation')
查看你的排序规则.
不过你的这个应该和字符集有关.

2.更改服务器排序规则
更改 SQL Server 2005 实例的默认排序规则的操作可能会比较复杂,包括以下步骤:

确保具有重新创建用户数据库及这些数据库中的所有对象所需的全部信息或脚本
使用工具(例如大容量复制)导出所有数据。
删除所有用户数据库。
重新生成在 setup 命令的 SQLCOLLATION 属性中指定新的排序规则的 master 数据库。例如:
复制代码
start /wait setup.exe /qb INSTANCENAME=MSSQLSERVER REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=test SQLCOLLATION=SQL_Latin1_General_CP1_CI_AI
有关重新生成 master 数据库的详细信息,请参阅如何重新生成 SQL Server 2005 的 Master 数据库。
创建所有数据库及这些数据库中的所有对象。
导入所有数据。
注意:
可以为创建的每个新数据库指定默认排序规则,而不更改 SQL Server 2005 实例的默认排序规则。

3.设置和更改数据库排序规则
创建新数据库时,可以使用下列内容之一指定排序规则:
CREATE DATABASE 语句的 COLLATE 子句。
SQL Server Management Studio.
SQL 管理对象 (SMO) 中的 Database.Collation 属性。
如果未指定排序规则,则使用服务器排序规则。
可以使用 ALTER DATABASE 语句的 COLLATE 子句来更改在用户数据库中创建的任何新对象的排序规则。使用此语句不能更改任何现有用户定义的表中列的排序规则。使用 ALTER TABLE 的 COLLATE 子句可以更改这些列的排序规则。
更改数据库排序规则时,需要更改下列内容:
数据库的默认排序规则,这一新的默认排序规则将应用于数据库中后续创建的所有列、用户定义的数据类型、变量和参数。根据数据库中定义的对象解析 SQL 语句中指定的对象标识符时,也使用新的默认排序规则。
将系统表中的任何 char、varchar、text、nchar、nvarchar 或 ntext 列更改为使用新的排序规则。
将存储过程和用户定义函数的所有现有 char、varchar、text、nchar、nvarchar 或 ntext 参数和标量返回值更改为使用新的排序规则。
将 char、varchar、text、nchar、nvarchar 或 ntext 系统数据类型和基于这些系统数据类型的所有用户定义的数据类型更改为使用新的默认排序规则。

SQL code :

1.将数据库的字符集修改为:
alter database dbname collate Chinese_PRC_CI_AS

2.

--1. 为数据库指定排序规则
CREATE DATABASE db COLLATE Chinese_PRC_CI_AS
GO

ALTER DATABASE db COLLATE Chinese_PRC_BIN
GO

/*====================================*/

--2. 为表中的列指定排序规则
CREATE TABLE tb(
col1 varchar(10),
col2 varchar(10) COLLATE Chinese_PRC_CI_AS)
GO

ALTER TABLE tb ADD col3 varchar(10) COLLATE Chinese_PRC_BIN
GO

ALTER TABLE tb ALTER COLUMN col2 varchar(10) COLLATE Chinese_PRC_BIN
GO

/*====================================*/

--3. 为字符变量和参数应用排序规则
DECLARE @a varchar(10),@b varchar(10)
SELECT @a='a',@b='A'

--使用排序规则 Chinese_PRC_CI_AS
SELECT CASE WHEN @a COLLATE Chinese_PRC_CI_AS = @b THEN '@a=@b' ELSE '@a<>@b' END
--结果:@a=@b

--使用排序规则 Chinese_PRC_BIN
SELECT CASE WHEN @a COLLATE Chinese_PRC_BIN = @b THEN '@a=@b' ELSE '@a<>@b' END
--结果:@a<>@b

3.

ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS
--不区分大小写
ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CS_AS
--区分大小写
数据库
ALTER DATABASE database
COLLATE Chinese_PRC_CS_AS
--区分大小写

ALTER DATABASE database COLLATE Chinese_PRC_CI_AS --不区分大小写

方法一.安装SQL时选择区分大小写
或安装完以后重建mastar,选择区分大小
C:\Program Files\Microsoft SQL Server\80\Tools\Binn\rebuildm.exe

方法二.sql server 8.0以上的版本才可以,7.0及其以下不支持
alter database 数据库 COLLATE Chinese_PRC_CS_AS
修改排序规则,改成大小写敏感的排序规则
如果只修改一个表,用alter table语句
如果修改一个库的默认排序规则,用alter datebase语句
如果修改整个服务器的默认排序规则,用Rebuildm.exe重建master库
--指定排序规则就可以了

--示例
select replace('AbacB' collate Chinese_PRC_CS_AS_WS,'B','test')

--如果你是要求表支持,则可以建表时指定排序规则,这样replace就不用写排序规则了

--示例
create table tb(a varchar(20) collate Chinese_PRC_CS_AS_WS)
insert tb values('Abac')

select replace(a,'a','test') from tb

drop table tb

指定排序规则即可

Windows 排序规则名称
在 COLLATE 子句中指定 Windows 排序规则名称。Windows 排序规则名称由排序规则指示器和比较风格构成。

语法
< Windows_collation_name > :: =

CollationDesignator_ <ComparisonStyle>

< ComparisonStyle > ::=
CaseSensitivity_AccentSensitivity
[_KanatypeSensitive [_WidthSensitive ] ]
| _BIN

参数
CollationDesignator

指定 Windows 排序规则使用的基本排序规则。基本排序规则包括:

当指定按字典排序时应用其排序规则的字母表或语言

用于存储非 Unicode 字符数据的代码页。
例如 Latin1_General 或法文,两者都使用代码页 1252,或土耳其文,它使用代码页 1254。

CaseSensitivity

CI 指定不区分大小写,CS 指定区分大小写。

AccentSensitivity

AI 指定不区分重音,AS 指定区分重音。

KanatypeSensitive

Omitted 指定不区分大小写,KS 指定区分假名类型。

WidthSensitivity

Omitted 指定不区分大小写,WS 指定区分大小写。

BIN

指定使用二进制排序次序。

如果你只是目前查询区分,那么还是不要这样改,免得又反悔,如此查询:
select * from a
/*
a_nam a_add
---------- ----------
1 aa
1 bb
2 cc
2 vv
2 kk
3 dd
3 ee
4 dd
5 ee
6 yy
6 yy

(11 row(s) affected)
*/
现在我们查询a_add = 'aa'的,'Aa'等等不行!
Example 1:

select * from a
where a_add collate Chinese_PRC_CS_AS_WS = 'aa'
/*
a_nam a_add
---------- ----------
1 aa

(1 row(s) affected)
*/

Example 2:

select * from a
where a_add collate Chinese_PRC_CS_AS_WS = 'Aa'
/*
a_nam a_add
---------- ----------

(0 row(s) affected)
*/

方法三.上面的记不住,那么就用最笨的方法,转化为ascii
select * from a
where
ascii(substring(a_add,1,1)) = ascii(substring('Aa',1,1))
and
ascii(substring(a_add,2,1)) = ascii(substring('Aa',2,1))
/*
a_nam a_add
---------- ----------

(0 row(s) affected)
*/

方法三:任何版本都可以
select * from a
where cast(a_add as varbinary(10))= cast('aa' as varbinary(10))

‘捌’ sql 2005 怎么修改表中字段默认排序规则

select
c
from
a
order by
case when right(c,1)='R' then cast(left(c,len(c)-1) as int)
when right(c,1)='K' then cast(left(c,len(c)-1) as int)*1000
when right(c,1)='M' then cast(left(c,len(c)-1) as int)*1000*1000 end;

‘玖’ sql中表的数据的排序方式如何修改

系统默认是以聚集索引排序,主键默认是聚集索引,也可手动改成非聚集索引,你可以添加一列标识列,就是自增列,然后把聚集索引给这列,系统就会默认按添加顺序排了

‘拾’ 如何修改SQL数据库默认排序

在网上查了一些关于更改SQL SERVER2012数据库安装后的默认排序规则(Server Collation)的方法。经过实践测试,把成功的方法记录于此,方便大家查阅。具体的操作还是比较简单的:1.首先打开命令提示符,即win+r,在弹出的窗口中输入cmd即可进入命令提示符窗口;2.在命令提示符窗口中定位在你的SQL SERVER 2012安装包的根目录(注意:是SQL SERVER 2012的安装包哟)如我的安装在D盘的Download文件夹下的SQLSERVER2012SP1文件夹下,那么就进行到SQLSERVER2012SP1这个目录下3.最后运行如下命令:D:DownloadSQLServer2012SP1>Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=account /SAPWD=xxxxxxxx /SQLCOLLATION=Chinese_PRC_CI_AS
即可更改SQL SERVER 2012的默认排序规则(Server Collation)。第三步中的参数说明:INSTANCENAME:数据库的实例名,默认的就是:你的数据库管理账号SAPWD:sa账户的密码,可选SQLCOLLATION:需要修改成的排序规则