mysql排序

数据库MYSQL的查询

时光毁灭记忆、已成空白 提交于 2020-01-31 10:34:45
一、排序查询 语法:order by 字句 order by 排序字段1 排序方式1 ,排序字段2 排序方式2, …; 排序方式有两种: 升序:ASC(默认) 降序:DESC 来源: CSDN 作者: qq_43573743 链接: https://blog.csdn.net/qq_43573743/article/details/104121486

mySql分组排序

左心房为你撑大大i 提交于 2020-01-31 02:01:40
mysql 排序学习---mysql 1、建表语句 CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '姓名', `score` int(11) NOT NULL COMMENT '成绩, `classid` int(11) NOT NULL COMMENT '班级', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='学生'; 2、插入数据 insert into student(Name, Score, ClassId) values("lqh", 60, 1); insert into student(Name, Score, ClassId) values("cs", 99, 1); insert into student(Name, Score, ClassId) values("wzy", 62, 1); insert into student(Name, Score, ClassId) values("zqc", 88, 2); insert

MySQL语句整理(二)

旧时模样 提交于 2020-01-30 00:56:34
数据库操作前的准备 -- 创建数据库 -- create database python_test_1 charset=utf8; -- 使用数据库 -- use python_test_1; -- students表 -- create table students( -- id int unsigned primary key auto_increment not null, -- name varchar(20) default '', -- age tinyint unsigned default 0, -- height decimal(5,2), -- gender enum('男','女','中性','保密') default '保密', -- cls_id int unsigned default 0, -- is_delete bit default 0 -- ); -- classes表 -- create table classes ( -- id int unsigned auto_increment primary key not null, -- name varchar(30) not null -- ); -- 查询 -- 查询所有字段 -- select * from 表名; select * from students; -- 查询指定字段 --

select与limit使用方法

浪尽此生 提交于 2020-01-29 02:53:56
MySQL中,select与limit的用法说明 1.limit使用简介: limit关键字可以接受一个或者两个参数,且这个参数需是整数常量,如果两个参数,第一个表示返回记录行的偏移量,第二个表示返回记录行最大的数目;一个的数的话,默认初始记录行为0。 基本用法: SELECT * FROM table LIMIT [ offset , ] rows | rows OFFSET offset 简单实例: 显示5到10行的记录,即查询6行记录 select * from tablename limit 4,6; 显示第6行的记录 select * from tablename limit 5,1; 查询前n行记录 select * from tablename limit n; 把表通过降序排序,查询前n行记录(可理解成表中最大的n个数) select * from tablename order by id desc limit n; limit与子查询 子查询的子查询支持limit,不支持子查询 select * from table where id in (select t.id from (select * from table limit 10)as t); as表示名一个别名 limit 优化 limit 0 的使用: 根据Limit关键字的定义,如果参数为0的话

Mysql的utf8与utf8mb4区别,utf8mb4_bin、utf8mb4_general_ci与utf8mb4_unicode_ci的选择

ε祈祈猫儿з 提交于 2020-01-27 00:08:56
utf8 与 utf8mb4 标准的 UTF-8 字符集编码是可以用 1~4 个字节去编码21位字符,是一种变长的编码格式,这几乎包含了是世界上所有能看见的语言了。然而在MySQL里实现的utf8最长使用3个字节,节省空间但不能表达全部的UTF-8,只支持到了 Unicode 中的“基本多文种平面”(U+0000至U+FFFF,Basic Multilingual Plane,BMP),包含了控制符、拉丁文,中、日、韩等绝大多数国际字符,但并不是所有,最常见的就算现在手机端常用的表情字符 emoji和一些不常用的汉字,如 “墅” ,这些需要四个字节才能编码出来。 MySQL在 5.5.3 之后增加了 utf8mb4 字符编码,mb4即 most bytes 4,使用4个字节来表示完整的UTF-8。简单说 utf8mb4 是 utf8 的超集并完全兼容utf8,能够用四个字节存储更多的字符。 注:QQ里面的内置的表情不算,它是通过特殊映射到的一个gif图片。一般输入法自带的就是。 当你的数据库里要求能够存入这些表情或宽字符时,可以把字段定义为 utf8mb4,同时要注意连接字符集也要设置为utf8mb4,否则在 严格模式 下会出现 Incorrect string value: /xF0/xA1/x8B/xBE/xE5/xA2… for column 'name'这样的错误

mysql(2):索引

假如想象 提交于 2020-01-26 00:08:10
索引基础 索引介绍 定义 索引是满足某种特定查找算法的数据结构。这些数据结构会以某种方式指向数据,从而实现高效查找。 优势 提高了查询速度 劣势 降低更新表的速度,因为更新表时,MySQL不仅要保存数据,还要保存索引文件。 建立索引会占用磁盘空间的索引文件。 索引分类 主键索引 根据主键pk_column(length)建立索引, 不允许重复,不允许空值 。 ALTER TABLE 'table_name' ADD PRIMARY KEY pk_index('col'); 唯一索引UNIQUE 用来建立索引的列的值必须是 唯一的,允许空值 。 ALTER TABLE 'table_name' ADD UNIQUE INDEX index_name('col'); 普通索引 用 普通列 构建的索引,没有任何限制。 ALTER TABLE 'table_name' ADD INDEX index_name('col'); 组合索引 用多个列组合构建的索引,这多个列中的值不允许有空值。 ALTER TABLE 'table_name' ADD INDEX index_name('col1','col2','col3'); 遵循“最左前缀”原则,把最常用作为检索或排序的列放在最左,依次递减,组合索引 相当于建立了col1,[col1,col2],[col1,col2,col3]三个索引

mysql必知必会--排序检索数据

烈酒焚心 提交于 2020-01-21 16:16:39
排序数据 其实,检索出的数据并不是以纯粹的随机顺序显示的。如果不排 序,数据一般将以它在底层表中出现的顺序显示。这可以是数据最初 添加到表中的顺序。但是,如果数据后来进行过更新或删除,则此顺 序将会受到MySQL重用回收存储空间的影响。因此,如果不明确控 制的话,不能(也不应该)依赖该排序顺序。关系数据库设计理论认 为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有 意义。 子句(clause) SQL语句由子句构成,有些子句是必需的,而 有的是可选的。一个子句通常由一个关键字和所提供的数据组 成。子句的例子有 SELECT 语句的 FROM 子句 为了明确地排序用 SELECT 语句检索出的数据,可使用 ORDER BY 子句。 ORDER BY 子句取一个或多个列的名字,据此对输出进行排序 通过非选择列进行排序 通常, ORDER BY 子句中使用的列将 是为显示所选择的列。但是,实际上并不一定要这样,用非 检索的列排序数据是完全合法的 按多个列排序 经常需要按不止一个列进行数据排序。例如,如果要显示雇员清单, 可能希望按姓和名排序(首先按姓排序,然后在每个姓中再按名排序)。 如果多个雇员具有相同的姓,这样做很有用。 为了按多个列排序,只要指定列名,列名之间用逗号分开即可(就 像选择多个列时所做的那样)。 重要的是理解在按多个列排序时,排序完全按所规定的顺序进行。

MySQL 按首字母排序

為{幸葍}努か 提交于 2020-01-21 03:57:53
如果,mysql字段中的内容是全英文的,那么排序直接常规排序ASC DESC ASC 正序 DESC倒叙 ,就可以。 如果想要排中文的汉字,其实是按着拼音排序 通常我们在查询书籍时,会出现按照书籍的名称进行排序,由于一般数据库编码大都为utf-8 ,他的排序方式为按英文字母规则排序 "a,b,c… " 由上表看出,只要我们在排序时将需要排序的字段转化为GBK编码再进行排序,就可以实现按照书籍名称的首字母进行排序了, 怎样才能将编码转化为GBK呢?在MySQL中提供了函数CONVERT() ,该函数可用来获取一个类型的值 该函数的使用方式为 CONVERT(字段 USING GBK) 例如: SELECT * FROM table ORDER BY CONVERT(field USING GBK) ASC 如果表字段使用的GBK编码的话,我们可以直接order by value ,因为GBK本身就是按照拼音字母排序ABCDEFGHIGK…,当第一位相同的时候会比较第二位,以此类推。 如果表字段使用的UTF-8编码的话,通常我们都会的编码,这样我们可以使用MySQL的convert方法开转换gbk进行排序。 SELECT * FROM TEST ORDER BY CONVERT(value USING GBK) ASC/DESC 来源: CSDN 作者: dxyzhbb 链接:

mysql中的utf8mb4、utf8mb4_unicode_ci、utf8mb4_general_ci

早过忘川 提交于 2020-01-20 07:58:24
1.utf8与utf8mb4(utf8 most bytes 4) MySQL 5.5.3之后增加了utfmb4字符编码 支持BMP(Basic Multilingual Plane,基本多文种平面)和补充字符 最多使用四个字节存储字符 utf8mb4是utf8的超集并完全兼容utf8,能够用四个字节存储更多的字符。 标准的UTF-8字符集编码是可以使用1-4个字节去编码21位字符,这几乎包含了世界上所有能看见的语言。 MySQL里面实现的utf8最长使用3个字符 ,包含了大多数字符但并不是所有。例如emoji和一些不常用的汉字,如“墅”,这些需要四个字节才能编码的就不支持。 2.字符集、连接字符集、排序字符集 utf8mb4对应的排序字符集有utf8mb4_unicode_ci、utf8mb4_general_ci. utf8mb4_unicode_ci和utf8mb4_general_ci的对比: 准确性: utf8mb4_unicode_ci是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序 utf8mb4_general_ci没有实现Unicode排序规则,在遇到某些特殊语言或者字符集,排序结果可能不一致。 但是,在绝大多数情况下,这些特殊字符的顺序并不需要那么精确。 性能 utf8mb4_general_ci在比较和排序的时候更快 utf8mb4

mysql自定义排序

只愿长相守 提交于 2020-01-18 15:01:31
场景 业务需要,优惠券列表要求按类型进行排序,但是,类型并不是顺序的,即 order by 是解决不了问题的 建表 CREATE TABLE `custom_sort` ( `id` int(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NOT NULL, `type` tinyint(1) NOT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `so`(`type`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_german2_ci ROW_FORMAT = Dynamic; 插入数据 INSERT INTO `custom_sort` VALUES (1, '刘一', 1); INSERT INTO `custom_sort` VALUES (2, '陈二', 2); INSERT INTO `custom_sort` VALUES (3, '张三', 3); INSERT INTO `custom_sort` VALUES (4, '李四', 2);