2022-11-08 00:23来源:m.sf1369.com作者:宇宇
update 表名 set 列名=修改后的值 ORDER BY id limit 50;这里的order by 没指明就是默认升序,如是order by 列名 desc即为降序排列,使用时需清楚你要修改哪一部分
"order by ITEM_AUTO_ID desc LIMIT "+nowRowNumber+","+DATANUMBERS; desc 降序;asc升序(默认升序) limit 参数一,参数二;参数一为起始偏移量,参数二为最大行数
在数据库查询时,常常需要排序,而有时排序条件可能有多个。
如数据库: a b
1 103 1 101
2 201 2 203 1 102 2 202 排序后: a b 1 103 1 102 1 101 2 203 2 202 2 201 语句: SELECT A.a , A.b FROM TABLE A ORDER BY A.a ASC , A.b DESC 其中ASC连接多条排序,且与后一条查询之间有逗号隔开!
索引的顺序要遵循三个规则
1.要遵循最左前缀 无论是多个还是一个列的索引 都不应该跳过最左列 如果在查询语句当中 没有使用最左前缀的字段 就不会使用索引
2.不能跨越索引列
3.索引进行模糊查询 范围查询 ,右边的所有列都无法使用索引优化
但是遗憾的是,很多人编译安装MySQL的时候没有指定这两个参数,大多数人更是通过二进制程序的方式安装,那 么这时候MySQL的默认字符集是latin1。而这时候我们仍然可以指定MySQL的默认字符集,通过my.cnf文件增加 两个参数: 1.在[mysqld]下添加 default-character-set=utf8(mysql 5.5 版本添加character-set-server=utf8) 2.在[client]下添加 default-character-set=utf8 这样我们建数据库建表的时候就不用特别指定utf8的字符集了。配置文件里的这种写法解决了数据存储和比较的问题 ,但是对客户端的连接是没有作用的,客户端这时候一般需要指定utf8方式连接才能避免乱码。也就是传说总的set names命令。事实上,set names utf8命令对应的是服务器端以下几个命令: SET character_set_client = utf8; SET character_set_results = utf8;
直接将两个字段都加入order by中即可:order by toptime desc, eidttime desc;
开始之前,先确认排序规则(或大小写是否敏感)
1
2
3
4
5
6
7
8
9
10
--查看服务器排序规则(安装时指定的排序规则)
SELECT SERVERPROPERTY('COLLATION') AS ServerCollation
,DATABASEPROPERTYEX('tempdb','COLLATION') AS TempdbCollation
,DATABASEPROPERTYEX(DB_NAME(),'COLLATION') AS CurrentDBCollation
--查看数据库排序规则
SELECT name, collation_name FROM sys.databases
--当前数据库是否大小写敏感
SELECT CASE WHEN N'A'=N'a' THEN N'不敏感' ELSE N'敏感' END
此环境实例中:
服务器排序规则为 Chinese_PRC_BIN
当前数据库排序规则为 Chinese_PRC_CI_AS
若当前数据库创建的所有对象和执行脚本时,如果用到了变量、临时对象等,大小写不一致则出现问题。二进制(_BIN)排序规则是区分大小写的。
安装实例时指定的排序规则,就是 master 数据库的排序规则,同时 model 和 msdb 的排序规则也保持一致,而 tempdb 和用户数据库的排序规则都是参照 model 数据库一样的。
系统数据库是不能直接更改排序规则的,因此只能重建系统数据库,且让系统数据库的排序规则都一致。
重建实例排序规则和系统数据库排序规则:
1、备份系统数据库!必要的,失败了或者以后要使用当前环境时,还可以回退!
2、记住所有数据库及文件路径,保持到 excel 中。如果记得住所有数据库位置的话就不用了。
1
select DB_NAME(database_id) as name,physical_name from sys.master_files
3、导出服务器配置(sp_configure)到 excel。因为重建系统数据库后配置会被初始化。
4、导出账号信息到 txt。数据库重建,账户信息都会丢失,除了备份也要单独备份账号。(SQL Server 中登录账号与数据库用户迁移)
5、导出链接服务器生产脚本到 txt ,如果有的话。
6、导出代理作业到 txt 。
7、(如果还有其他配置,如审核、邮件配置、策略等,都保存出来,后续再重建)
8、分离所有用户数据库。
1
2
3
select 'ALTER DATABASE ['+name+'] SET SINGLE_USER WITH ROLLBACK IMMEDIATE'+char(10)+'go'+char(10)
+'EXEC master.dbo.sp_detach_db @dbname = N'''+name+''''+char(10)+'go'+char(10)
from sys.databases where name not in('master','model','msdb','tempdb')
9、停止所有数据库相关服务。
10、重建数据库并制定新的排序规则。打开命令行,进入安装目录。
1
2
cd D:\Software\en_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_520517
setup /QUIET /ACTION=REBUILDDATABASE /instancename=mssqlserver /SQLSYSADMINACCOUNTS=服务器账号 /sapwd=密码 /sqlcollation=Chinese_PRC_CI_AS
11、启动 SQL Server 引擎服务,其他暂不启动。
12、创建登录账户(之前导出的脚本)
13、附加所有用户数据库。
14、创建代理作业、链接服务器、更配置等!
完成!~
如果重建系统数据库后,还原 master 数据库,那么服务器排序规则和 master 数据库排序规则都还原和以前一样,所以不能还原,除非恢复到以前的环境。
如果还原 msdb 或 model ,该数据库排序规则也会还原,所以系统数据库备份都不要还原,重建系统数据库之后只能重新配置。
更改用户数据库排序规则
1
ALTER DATABASE test COLLATE Chinese_PRC_CI_AS
更改数据库排序规则时,需要更改下列内容:
>> 将系统表中的任何 char、varchar、text、nchar、nvarchar 或 ntext 列更改为使用新的排序规则。
>> 将存储过程和用户定义函数的所有现有 char、varchar、text、nchar、nvarchar 或 ntext 参数和标量返回值更改为使用新的排序规则。
>> 将 char、varchar、text、nchar、nvarchar 或 ntext 系统数据类型和基于这些系统数据类型的所有用户定义的数据类型更改为使用新的默认排序规则。
对于数据库内字段定义的排序规则,参考下面的 设置或更改列排序规则。
设置或更改列排序规则:
1
2
3
4
5
6
7
8
--示例
CREATE TABLE dbo.MyTable(
PrimaryKey INT PRIMARY KEY,
CharCol VARCHAR(10) COLLATE French_CI_AS NOT NULL
);
GO
ALTER TABLE dbo.MyTable ALTER COLUMN CharCol VARCHAR(10) COLLATE Latin1_General_CI_AS NOT NULL;
GO
如果下列其中之一当前正在引用一个列,则无法更改该列的排序规则:
>> 计算列
>> 索引
>> 自动生成或由 CREATE STATISTICS 语句生成的分发统计信息
>> CHECK 约束
>> FOREIGN KEY 约束
select * from tab order by date DESC,table_id DESC。
在数据库中,输入这些就可以按时间排序。
MySQL 是一个关系型数据库,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策(本词条"授权政策"),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP ,Linux和 Apache 可组成良好的开发环境,经过多年的web技术发展,在业内被广泛使用的一种web服务器解决方案之一,称之为LAMP。
1.什么是sql
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
2. 数据视图与数据模型
数据抽象共有三个层次:物理层、逻辑层和视图层。在逻辑层使用的数据模型包括两类:一类是概念数据模型,主要用于数据库设计,它能被一般的用户理解,与人的思维表达方式比较接近。这样的模型有实体-联系模型(ERM);另一类是逻辑数据模型,按计算机系统的观点对数据建模,使得数据更适合用计算机加以表示。
3.数据库语言
根据功能不同,可以将数据库系统提供的语言分成三种类型:1)数据定义语言(DDL),用于定义数据库模式;2)数据操纵语言(DML),用于对数据库进行查询和更新;3)数据控制语言(DCL),用于对数据进行权限管理。
4.数据库模式
根据数据的不同抽象层次,数据库有三级模式:物理模式(内模式)在物理层描述数据库中全体存储结构和存取方法,而逻辑模式(概念模式)则在逻辑层描述数据库中全体数据的逻辑结构和特征。在视图层也可分为若干模式,称为子模式(外模式),它描述了数据库用户能够看见和使用的局部数据的逻辑结构和特征。通常一个数据库只有一个物理模式和一个逻辑模式,但是子模式有若干个。
5. E-R图
E-R图由以下元素构成:1)矩形,代表实体型;2)椭圆,代表属性;3)菱形,代表联系;4)线段,将属性和实体性相连,或将实体型和联系相连。
6.关系模型
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分构成。在关系模型中,现实世界实体以及实体间的联系均用关系来表示。关系模型允许定义三类完整性约束:实体完整性、参照完整性和用户定义完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件。实体完整性规则是:关系的主码不能取空值。参照完整性规则是:外码必须是另一个表中主码的有效值,或者是“空值”。
7.连接运算
连接运算是从两个关系的乘运算结果中选取属性间满足一定条件的元组,构成新的关系。连接运算有两种:等值连接和自然连接。自然连接要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。
8.SQL基本语法
数据库创建、表的创建、对表的增删查改等。
9.视图
视图能够简化用户的操作
视图是用户能以多种角度看待同一数据
视图对重构数据库提供了一定程度的逻辑独立性
视图能够对机密数据提供安全保护
10.事务
事务是一系列的数据库操作,是数据库应用程序的基本单元,是反映现实世界需要以完整单位提交的一项工作。事务是用户定义的一个数据库操作序列。
事务的四个特征:原子性、一致性、隔离性和持久性。
11. 触发器
一个触发器用来定义一个条件以及在该条件为真时需要执行的动作。通常,触发器的条件以断言的形式定义。动作以过程的形式定义。
12.索引
帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。
基本的sql学习基础如上
进阶学习
(1)sql执行顺序。当sql逻辑复杂后,sql的执行顺序就会非常重要。
sql执行顺序 - qanholas
(2)SQL ROW_NUMBER() OVER函数。用作分组排序,比如各个省份税收排名前20的企业。
SQL ROW_NUMBER() OVER函数的基本用法用法
(3)case when then else end。用作条件判断,比如将10、11、12、13……19、20岁的人群新生成一个字段‘年龄段’取值为10-20岁;聚合函数分别计算,如sum(case when 性别=‘男’ then 收入 end) as 收入_男,sum(case when 性别=‘n女’ then 收入 end) as 收入_女
SQL中的case when then else end用法
(4)select时加标签。例如select出某一特征user_id时新建一个tag字段作为用户的标签。
select user_id,'白领' as tag
(5)差集运算。例如取A集合中不包含在B集合的用户,做差集。
最基本的知识,设置主控索引。 方法一 在浏览或编辑记录窗口状态下,会增加一 个“表”菜单,此菜单的是第一项是“属性”,打开此窗口后,在“索引顺序”中中选择用课程名建的那个索引。 方法二 直接在命令窗口输入 set order to 课程名 &&你的索引标识必须是“课程名” 如果又想按学号排序了,那就输入: set order to 学号