首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【MySQL】MySQL基础知识详解(一)

日期时间,字符串类型的变量需要使用时使用一对 ’ '单引号 去除重复行 SELECT DISTINCT personage FROM employees 只显示出一种年龄,比如有两个相同的年龄,经过此词语后只会留下一个年龄...空值:NULL 空值不等同于0 或者 ‘ ’ 空值参与运算时结果也一定为NULL 那么当字段中有NULL时怎么计算呢?...解决方法就是加上一对`` SELECT *FROM `order` 查询常数 就是在SELECT查询结果中增加一列固定的常数列,这列的取值是我们规定的,不是从数据表中动态取出的、作为常量出现 SELECT...ORDER BY 中使用,不能在WHERE 中使用 比如 SELECT age*12 agee FROM person WHERE agee > 10; #会报错 那么·当同时出现WHERE 和ORDER...注意:LIMIT子句一定要放在整个SELECT语句的最后面。 使用LIMIT句子好处 约束返回结果的数量可以减少数据表的网络传输量,也可以提升查询效率。

17820

《SQL必知必会》万字精华-第1到13章

主键 表中每一行都应该都有一列或者几列来唯一标识自己。主键用来表示一个特定的行。 主键:一列或者几列,其值能够标识表中每行。...2、单引号用来限定字符串。如果将值和字符串类型的比较,需要使用限定符号 3、用来与数值列进行比较的值,则不用括号。...AND...联合使用 空值检查 当我们创建表的时候,可以指定其中的列是否包含空值。在一个列不包含值时,称其包含空值NULL。...) 将字符串转换为大写 SOUNDEX是一个将任何文本串转成描述其语音表示的字母数字模式的算法。...BY子句中列出的每一列都是检索列或者有效的表达式(但是不能是聚集函数) 如果在SELECT中使用表达式,则必须在GROUP BY子句中使用相同的表达式,而不是使用别名 除了聚集函数外,SELECT语句中的每列都必须在

7.1K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一场pandas与SQL的巅峰大战(二)

    在pandas中,我们可以将列转换为字符串,截取其子串,添加为新的列。代码如下图左侧所示,我们使用了.str将原字段视为字符串,从ts中截取了前10位,从orderid中截取了前8位。...-”为空,在pandas中可以使用字符串的replace方法,hive中可以使用regexp_replace函数。...我定义了两个函数,第一个函数给原数据增加一列,标记我们的条件,第二个函数再增加一列,当满足条件时,给出对应的orderid,然后要对整个dataframe应用这两个函数。...这样的结果中会有一个空行,这是因为用逗号分隔的时候,最后一个元素为空。...我们的目标是将原始以字符串形式存储的数组元素解析出来。 ? ? 先来看pandas中如何实现,这里我们需要用到literal_eval这个包,能够自动识别以字符串形式存储的数组。

    2.3K20

    MySQL 的索引查询以及优化技巧

    当表中某列字符串类型的数据长度差别较大时适合使用varchar。 char的实际占用空间是固定的,当表中字符串数据的长度相差无几或很短时适合使用chart类型。...先用第一列排序,然后是第二列,最后是第三列。 查询的使用应该尽量从左往右匹配,另外,如果左边列范围查找,右边列无法使用索引;还有就是不能隔列查询,否则后面的索引也无法使用到。...,创建的索引也很大,这时可以使用前缀索引,即:只针对字符串前几个字符做索引,这样可以缩短索引的大小,不过,显然,此类索引在执行order by和group by时不起作用。...不使用的索引 不使用的索引徒然增加insert、update和delete的效率,应该及时删除 索引使用总结 索引的三星原则: 索引将查询相关的记录按顺序放在一起则得一星 索引中的数据顺序和查询结果的排序一致则得一星...索引不是万能的,当数据量巨大时,维护索引本身也是耗费性能的,应该考虑分区分表存储。

    1.2K00

    10 分钟掌握 MySQL 的索引查询优化技巧

    当表中某列字符串类型的数据长度差别较大时适合使用varchar。 char的实际占用空间是固定的,当表中字符串数据的长度相差无几或很短时适合使用chart类型。...先用第一列排序,然后是第二列,最后是第三列。 查询的使用应该尽量从左往右匹配,另外,如果左边列范围查找,右边列无法使用索引;还有就是不能隔列查询,否则后面的索引也无法使用到。...,创建的索引也很大,这时可以使用前缀索引,即:只针对字符串前几个字符做索引,这样可以缩短索引的大小,不过,显然,此类索引在执行order by和group by时不起作用。...不使用的索引 不使用的索引徒然增加insert、update和delete的效率,应该及时删除 索引使用总结 索引的三星原则: 索引将查询相关的记录按顺序放在一起则得一星 索引中的数据顺序和查询结果的排序一致则得一星...索引不是万能的,当数据量巨大时,维护索引本身也是耗费性能的,应该考虑分区分表存储。

    97820

    看完这篇文章,99%的人都会使用Mysql Explain工具

    如果你不定义为您的表的主键 时,MySQL取第一个唯一索引(unique)而且只含非空列(NOT NULL)作为主键,InnoDB使用它作为聚集索引。...当有 union 时,UNION RESULT 的 table 列的值为,1和2表示参与 union 的 select 行id。...具体例子可参考,上面第二张图的table列 4.type列 这一列表示关联类型或访问类型,即MySQL决定如何查找表中的行,查找数据行记录的大概范围。...关于下图中,给出优化的sql,显示查询的是dual表,这个是mysql的自带的空表,像我们上面的sql,mysql会直接将数据解析到空表中,查询返回出去,所以效率才会高 ?...8.ref列 这一列显示了在key列记录的索引中,表查找值所用到的列或常量 9.rows列 这一列是mysql估计要读取并检测的行数,注意这个不是结果集里的行数。

    55210

    10分钟掌握数据类型、索引、查询的MySQL优化技巧

    当表中某列字符串类型的数据长度差别较大时适合使用varchar。 char的实际占用空间是固定的,当表中字符串数据的长度相差无几或很短时适合使用chart类型。...先用第一列排序,然后是第二列,最后是第三列。 查询的使用应该尽量从左往右匹配,另外,如果左边列范围查找,右边列无法使用索引;还有就是不能隔列查询,否则后面的索引也无法使用到。...,创建的索引也很大,这时可以使用前缀索引,即:只针对字符串前几个字符做索引,这样可以缩短索引的大小,不过,显然,此类索引在执行order by和group by时不起作用。...8、索引使用总结 索引的三星原则: 索引将查询相关的记录按顺序放在一起则得一星 索引中的数据顺序和查询结果的排序一致则得一星 索引中包含了查询所需要的全部列则得一星 第一个条原则的意思是where条件中查询的顺序和索引是一致的...索引不是万能的,当数据量巨大时,维护索引本身也是耗费性能的,应该考虑分区分表存储。

    81220

    数据查询语言QL

    SELECT SNAME AS STUDENT_NAME FORM S AS STUDENT 集合的并、交、差操作: 当两个子查询的结构完全一致时,可以将这两个子查询进行并、交、差等操作。...字符串匹配操作: 字符串匹配操作符是“LIKE", 在表达式中可以使用两个通配符: 百分号:与零个或多个字符组成的字符串匹配; 下划线:与单个字符匹配。...转义字符紧靠特殊字符并放在前面,表示该特殊字符将被当作普通字符。在LIKE中使用ESCAPE关键字来定义转义字符。...SQL中规定,涉及+,-,*,/的算术表达式中有一个值是空值时,表达式的值也是空值。涉及空值的比较操作的结果认为是”false“。...在聚合函数中遇到空值时,除了COUNT(*)外,都跳过空值去处理非空值。 集合成员资格的比较: 判断元组是否在查询的结果(即集合)中的操作,叫做”集合成员资格的比较“。

    2.3K00

    【Day21】LeetCode算法题

    于是我就很自信地遍历字符串的每一个字符: 当遇到左括号‘(’,就记录左括号数量left++; 当遇到右括号‘)’,就记录左括号数量right++; 最后返回差值… 结果提交结果是: 我忽略了一类重要的情况...栈中没有元素,也就是栈长度为0时,我们记录右括号')'的数量right++ ②当栈中存在元素左括号(,我们将栈顶元素弹出,代表两个括号对应,抵消了。...其中 answer[i] 是球放在顶部的第 i 列后从底部掉出来的那一列对应的下标; 如果球卡在盒子里,则返回 -1 ; 为了得到大小为 n 的数组 answer,我们就需要使用循环,从第一列的顶端开始遍历...,都会掉到下一行当中,也就是行数:row++ ④当然,上面所有的情况都需要建立在: 移动后格子的值不变的情况下 以及 移动后位置不越界的情况下 当出现 移动后格子的值改变 或者 移动后位置越界 的情况时...,球在最后一行对应的列数col 当记录完从每一列顶部放入球后最终的落点位置时,我们直接返回记录数组answer 提交代码: class Solution { public int[] findBall

    48740

    大佬都在用的数据库设计规范!你不点进来看看嘛?

    和double在存储的时候,存在精度损失的问题,很可能在值比较时,得到不正确的结果 如果存储的数据范围超过decimal的范围,建议将数据拆分成整数和小数分开存储 如果存储的字符串长度几乎相等,使用char...不是频繁修改的字段 不是varchar超长字段,更不能是text字段 商品类目名称使用频率高,字段长度短,名称基本一成不变,可在相关联的表中冗余存储类目名称,避免关联查询 单表行数超过500万行或者单表容量超过...索引文件具有B-Tree的最左前缀匹配特性,如果左边的值未确定,无法使用此索引 如果有order by的场景,要注意利用索引的有序性 .order by最后的字段是组合索引的一部分,并且放在索引组合顺序的最后...offset行,而是取offset+N行,然后返回放弃前offset行,返回N行 当offset特别大的时候,效率就非常低下,要么控制返回的总页数,要么对超过特定阈值的页数进行SQL改写 先快速定位需要获取的...,注意 count(distinct col1, col2) 如果其中一列全为NULL, 那么即使另一列有不同的值,也返回0 当某一列的值全是NULL时, count(NULL)的返回结果为0,但sum

    48320

    oracle基础|oracle排序用法|order by用法|where用法

    column.... from .... order by ... 1) Order by子句在整个 select语句中的位置: 始终位于最后 2) order by后可以跟什么...: 列名,列的别名,表达式, 列出现在select关键字后的 顺序(列号); 3) order by后可以跟多列, 表示先按第一列排序, 如第一列有相同值再按...升序排序的时候,空值放在最后 降序排序的时候,空值放在最前面的 如果降序的时候,null在全前面,你不想要null在前面,可以加上null last eg:order by column null...by dept_id; 2》sql比较操作符 between and:在什么范围之内 in(list):在一个列表中 like:模糊查询,即值不是精确的值的时候使用 通配符,即可以代替任何内容的符号...is null:对null值操作特定义的操作符,不能使用= 3》逻辑操作符 当条件有多个的时候使用 and:且逻辑 or:或逻辑 注意:and逻辑比or逻辑要高 not:非逻辑 4) 需求: 1.查找员工

    3.6K10

    《深入浅出SQL》问答录

    为表插入数据时,可以使用任何一种INSERT语句。 NULL是未定义的值。它不等于0,也不是空值。值可以是NULL,但绝非等于NULL。 没有在INSERT语句中被赋值的列默认为NULL。...2、列一份关于那样事物的信息列表,这些信息都是使用表时的必要信息。 3、使用信息列表,把关于那样事物的综合信息拆分成小块信息,以便用于组织表。 原子不是很小吗?...花絮 谨慎使用DELETE和UPDATE,使用SELECT确认自己加入了非常精确的WHERE语句,可以只选出你真正想要删除/修改的行。 使用UPDATE,你可以改变单一列或所有列的值。...第二范式(2NF) 符合1NF 没有部分函数依赖性 函数依赖性 当某列的数据必须随着另一列的数据改变而改变时,表示第一列函数依赖与第二列。...---- 左外联接 LEFT OUTER JOIN 会匹配左表中的每一行及右表中符合条件的行。 当左表与右表具有一对多关系时,左外联接特别有用。

    2.9K50

    SQL必知必会总结1-第1到7章

    主键 表中每一行都应该都有一列或者几列来唯一标识自己。主键用来表示一个特定的行。 主键:一列或者几列,其值能够标识表中每行。...笔记:我们需要注意order by子句的位置,一定要保证它是select语句的最后一条子句。...如果它不是最后的子句,那么就会报错。 按多个列排序 在实际的需求中,我们经常会遇到根据多个列进行排序。比如根据员工的姓名排序,如果姓相同,再根据名字进行排序。...2、单引号用来限定字符串。如果将值和字符串类型的比较,需要使用限定符号 3、用来与数值列进行比较的值,则不用括号。...AND...联合使用 空值检查 当我们创建表的时候,可以指定其中的列是否包含空值。在一个列不包含值时,称其包含空值NULL。

    2.5K31

    MySQL数据库规约.

    5、小数类型为 decimal,禁止使用 float 和 double(存在精度损失的问题) 6、如果存储的字符串长度几乎相等,使用 char 定长字符串类型。...冗余字段应遵循: 1) 不是频繁修改的字段。 2) 不是 varchar 超长字段,更不能是 text 字段。...说明: MySQL 并不是跳过 offset 行,而是取 offset+N 行,然后返回放弃前 offset 行,返回N 行,那当 offset 特别大的时候,效率就非常的低下,要么控制返回的总页数,要么对超过特定阈值的页数进行...order by 最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现 file_sort 的情况,影响查询性能。 正例: where a=? and b=?...3、当某一列的值全是 NULL 时, count(col)的返回结果为 0,但 sum(col)的返回结果为NULL,因此使用 sum()时需注意 NPE 问题。

    1.4K50

    MySQL学习笔记(长期更新)

    ,原因是MySQL采用二进制存储数据,如果尾数不是0或5,就需要使用四舍五入的方式来表达,定点数类型:DECIMAL(将十进制数的整数部分和小数部分拆开,分别转换成十六进制数存储)。...当操作多表时,未防止数据不一致的问题,保持操作的原子性,需要事务回滚rollback。 如何做好事务的隔离性? 会员张三是储值会员,他的会员卡⾥有100元。...行子查询:返回的结果是一个列的集合,一行N列,(N>=1)。行子查询常用于父查询的FROM字句和WHERE字句中。 列子查询:返回的 结果是一个行的集合,N行一列,(N>=1)。...标量子查询:返回的结果集是一个标量集合,一行一列。...: 一个子查询必须放在圆括号内 将子查询放在比较条件的右边以增加可读性 子查询不包含ORDER BY字句,对一个SELECT语句只能有一个ORDER BY字句,如果使用的话,只能放在主SELECT语句的最后

    96310

    mysql小结(1) MYSQL索引特性小结

    当有字符串和数字都能满足代理主键【该主键与业务无关只是添加一列主键保证记录唯一性】需求时,应当优先选择数字做主键,但是如果逻辑主键【业务中有作为主键的列,也可选为主键,即为逻辑主键】是字符串类型,那也应该选择其作为主键...,因为字符串相比数字性能差别不是很大。...,那么就可以考虑将rank列放在联合索引的最后一列。.../O,提高速度,所以当分页没有特别指定的列时,指定主键排序即可,另外不需要在联合索引最后一列添加主键,因为它本身包含主键 【非聚簇索引不存储完整记录,通过访问主键索引找到完整记录 】。...2.对于较长字符串例如200以上,可以考虑单独增加索引列,对其整体hash或者去其中一部分hash后存入其他一列,这 样将字符串查找变成数字查找,同时索引长度大大减小,可有效提高索引速度,降低索引大小。

    1.1K30

    《SQL必知必会》万字浓缩精华

    它必须放在列的前面。 不能部分使用DISTINCT关键字。...2、单引号用来限定字符串。如果将值和字符串类型的比较,需要使用限定符号 3、用来与数值列进行比较的值,则不用括号。...AND...联合使用 空值检查 当我们创建表的时候,可以指定其中的列是否包含空值。在一个列不包含值时,称其包含空值NULL。...是否必须使用 SELECT 要返回的列或者表达式 是 FROM 从中检索数据的表 仅在从表选择数据时使用 WHERE 行级过滤 否 GROUP BY 分组说明 仅在按照组计算聚集时使用 HAVING 组级过滤...注意NULL和空字符串的区别: NULL值没有值,不是空字符串 空字符串值一个有效的值,它不是无值 NULL值使用关键字NULL而不是空字符串指定 指定默认值 SQL中创建表的时候可以指定通过关键字DEFAULT

    7.5K31

    SQL简介

    by:排序永远放在最后执行 伪列 oracle独有的pl-sql的内容 rowid 根据数据在硬盘中存储的物理地址计算得来, 作用:数据的默认索引,底层使用 rownum对查询结果进行编号,与where...="king"//可能有多个数据 select * from table where part-id in(上面) 子查询使用from后面 n行n列:将子查询当做表二次查询 查询工资最高前五: tb1...(会有字段标记) 增删改数据时,不仅要维护原始表,还要维护索引,从而降低效率 大量数据表中,查询少量内容时,建议使用索引 主键与唯一列 默认提供索引 触发器 mysql> delimiter $$ mysql...=或操作符,否则引擎将放弃使用索引而进行全表扫描。...by select email from tb1 order by name desc; 当根据索引排序时候,选择的映射如果不是索引,则不走索引 特别的:如果对主键排序,则还是走索引: select

    2.7K20
    领券