第4章 Schema与数据类型优化 数据类型的设定原则应该遵循更小的往往更好,越简单越好(如能用data就用data而不用字符串),尽量避免NULL。 如果数据允许NULL,对MySQL来说更难优化,因为可为NULL的列使得索引,索引统计,和值比较都比较复杂。 TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT,8,16,24,32,64位整数,还有可选的UNSIGNED属性,只保存无属性的值。 MySQL可以为整数类型指定宽度,但是对大多数应用这是没有意义的,他不会限制值的合法范围
MySQL 客户端与服务器之间的通信基于特定的 TCP 协议,本文将会详解其中的 Connection 和 Replication 部分,这两个部分分别对应的是客户端与服务器建立连接、完成认证鉴权,以及客户端注册成为一个 slave 并获取 master 的 binlog 日志。
用来处理很多数值方面的运算,使用数值函数,可以免去很多繁杂的判断求值的过程,能够大大提高用户的工作效率。
返回X 反余弦, 即, 余弦是X的值。若X 不在-1到 1的范围之内,则返回 NULL 。
情况二:当长度n大于str字符串的原始长度,小于拼接后的字符串长度后,显示原来的字符串str+pad继续补齐到n个字符串
数学学得好的大佬应该知道(本人是个数学渣。。。。),负数的绝对值是正数,正数的绝对值还是正数本身 2、 返回圆周率的函数
函数不能单独存在,需要与 select 等操作连用,否则会报错。 mysql> rand(); 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rand()' at line 1
trunc (x, y),y 为返回的小数位数,如果不传y,则默认为0,返回整数。
1、接口有多个实现类时,可以使用 @Autowired+@Qualifier 注入指定实现类。
MySQL数据库中提供了很丰富的函数,比如我们常用的聚合函数,日期及字符串处理函数等。SELECT语句及其条件表达式都可以使用这些函数,函数可以帮助用户更加方便的处理表中的数据,使MySQL数据库的功能更加强大。本篇文章主要为大家介绍几类常用函数的用法。
SQL报错注入就是利用数据库的某些机制,人为地制造错误条件,使得查询结果能够出现在错误信息中。这种手段在联合查询受限且能返回错误信息的情况下比较好用。
MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。不管 存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择。
1.数学函数 用来处理数值数据方面的运算,主要的数学函数有:绝对值函数,三角函数,对数函数,随机函数。使用数学函数过程中,如果有错误产生,该函数会返回null值。 数学函数 功能介绍 组合键 abs(x) 返回x的绝对值 整数本身 pi() 返回圆周率 返回pa的值,默认显示6位 sqrt(x) 返回非负数x的二次方根 如为负数,返回null mod(x,y) 返回x/y的模,即相除余数
随机获取数据的业务场景,想必大家都有遇到过,今天我们分析一下如何正确的显示随机消息.
http://dev.mysql.com/downloads/connector/j/
在学习常用函数之前,先来学习一些数据库的基本操作,因为在自己试下面这些函数时,按照图片中的代码敲不一定对。有kali的同学可以在docker里做,而大部分同学是用ubuntu的,这个时候搭建的mysql里可能没有库没有表,那么就需要自己来建库建表来实践。不然没有建的话根本没东西,按下面的代码敲,就会报错。
数值函数 1. 基本函数 函数 用法 ABS(x) 返回x的绝对值 SIGN(X) 返回X的符号。正数返回1,负数返回-1,0返回0 PI() 返回圆周率的值
php,基础,流程控制,函数,字符串,数组,web交互,mysql数据库,PHP数据库编程,cookie与session,日期和时间,图形图形处理,文件和目录处理,面向对象,pdo数据库抽象层,smarty模板。
最近在重新整理复现MYSQL注入天书,遇到了一条很有意思的报错注入的payload:
下载地址:https://github.com/akopytov/sysbench/archive/refs/tags/1.0.20.tar.gz
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html
1、假如只需要存0~255之间的数,无负数,应使用tinyint unsigned(保证最小数据类型) 2、如果长度不可定,如varchar,应该选择一个你认为不会超过范围的最小类型 比如: varchar(20),可以存20个中文、英文、符号,不要无脑使用varchar(150) 3、整形比字符操作代价更低。比如应该使用MySQL内建的类型(date/time/datetime)而不是字符串来存储日期和时间 4、应该使用整形存储IP地址,而不是字符串 5、尽量避免使用NULL,通常情况下最好指定列为NOT NULL,除非真的要存储NULL值 6、DATETIME和TIMESTAMP列都可以存储相同类型的数据:时间和日期,且精确到秒。然而TIMESTAMP只使用DATETIME一半的内存空间,并且会根据时区变化,具有特殊的自动更新能力。另一方面,TIMESTAMP允许的时间范围要小得多,有时候它的特殊能力会变成障碍
最近需要迁移项目,将数据库由Oracle改为MySQL。由于两者的语法有部分不一样,所以需要把Oracle中能用但MySQL中不能用的函数/类型等改为MySQL中能用的,以下是总结出的部分语法区别: 一、数据类型 1. Number类型 MySQL中是没有Number类型的,但有int/decimal 类型,Oracle中的Number(5,1)对应MySQL中的decimal(5,1),Number(5) 对应 int(5)。MySQL中的数字型类型比较多,分的也比较细,还有tinyint、smallint、mediumint、bigint等类型 2. Varchar2(n)类型 MySQL中对应Oracle Varchar2(n)类型的替代类型是varchar(n)类型。 3. Date 类型 MySQL 中的日期时间类型有Date、Time、Datetime等类型,MySQL中Date类型仅表示日期(年-月-日),Time类型仅表示时间(时:分:秒),而Datetime类型表示日期时间(年-月-日 时:分:秒),Oracle中的Date类型和MySQL中的Datetime类型一致。 二、函数 1. length(str)函数 Oracle中的length(str)是获取字符串长度的函数,MySQL 中对应的函数为char_length(str)。 2. sys_guid()函数 Oracle中可通过sys_guid()函数是生成随机序列,MySQL通过UUID()生成随机序列。 3. 时间格式化函数 将时间转换为字符串型时间 MySQL date_format(NOW(),’%Y-%m-%d’) 对应Oracle的 Oracle中的 to_char(sysdate, ‘YYYY-MM-DD’); 将字符串型时间转换为时间类型 MySQL str_to_date(‘2019-01-01′,’%Y-%m-%d’) 对应Oracle中的 to_date(‘2019-01-01’, ‘YYYY-MM-DD’); 包括时分秒的函数转换:DATE_FORMAT(NOW(),’%Y-%m-%d %H:%i:%s’),str_to_date(‘2019-01-01′,’%Y-%m-%d %H:%i:%s’)。 4. 条件函数(nvl()、nvl2()、decode()) nvl(tab.columnName, 0):如果tab.columnName值为空,则返回值取0,否则取tab.columnName;对应的MySQL函数为:ifnull(tab.columnName, 0)。 nvl2(expr1,expr2,expr3):如果expr1不为null,则返回expr2,否则返回expr3;对应的MySQL函数为:if(expr1,expr2,expr3)。 DECODE(value, val1, val2, val3):如果value等于val1,则返回val2,否则返回val3;MySQL可用IF函数表示:if(value=val1, val2, val3); DECODE(value, if1, val1, if2,val2,…,ifn, valn, val):如果value等于if1,则返回val1,如果value等于if2,则返回value2…如果value等于ifn,则返回valn,否则返回val;MySQL对于这种判断可以通过case when then else end;l来判断,即:case when value=if1 then val1 when value=if2 then val2,,,when value=ifn then valn else val end; 5. trunc()函数 TRUNC(12.123):返回整数(12);MySQL对应的函数:truncate(12.123, 0); TRUNC(12.123, 2):返回值保留2为小数(12.12);MySQL对应的函数:truncate(12.123, 2); TRUNC(SYSDATE):返回值为(2019-07-26 00:00:00);MySQL对应的为cast(now() as datetime):返回值为(2019-07-26 14:11:38); MySQL的cast函数语法为:CAST(xxx AS 类型) (可用类型为:二进制,同带binary前缀的效果:BINARY;字符型,可带参数:CHAR();日期:DATE;时间:
schema就是数据库对象的集合,这个集合包含了各种对象如:表、视图、存储过程、索引等。为了区分不同的集合,就需要给不同的集合起不同的名字,默认情况下一个用户对应一个集合,用户的schema名等于用户名,并作为该用户缺省schema。所以schema集合看上去像用户名。
SQL是结构化查询语言(Structured Query Language),是用于访问和处理数据库的标准的计算机语言。 SQL语言的功能如下: A、SQL面向数据库执行查询 B、SQL可从数据库取回数据 C、SQL可在数据库中插入新的记录 D、SQL可更新数据库中的数据 E、SQL可从数据库删除记录 F、SQL可创建新数据库 G、SQL可在数据库中创建新表 H、SQL可在数据库中创建存储过程 I、SQL可在数据库中创建视图 J、SQL可以设置表、存储过程和视图的权限 SQL是一门ANSI的标准计算机语言,用来访问和操作数据库系统。SQL语句用于取回和更新数据库中的数据。SQL可与数据库程序协同工作,比如MS Access、DB2、Informix、MS SQL Server、Oracle、MySQL、Sybase以及其他数据库系统。 每一种数据库有自己版本的SQL语言,但是为了与ANSI标准相兼容,SQL必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE等等)。 除了SQL标准之外,大部分SQL数据库程序都拥有自己的私有扩展。
Redis是一种基于键值对的NoSQL数据库,它的值主要由string(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)五种基本数据结构构成,除此之外还支持一些其他的数据结构和算法。key都是由字符串构成的,那么这五种数据结构的使用场景有哪些?一起来看看!
但存在几个问题,不能实时更新数据,制作的是静态的仪表盘,每次生成仪表盘都要调整代码,不能一运行就直接生成可视化仪表盘。
这里面学科包含了三个学科,所以学科拆分为:语文学科、数学学科、英语学科,同样的成绩也要拆分为语文成绩、数学成绩、英语成绩。这样既满足了第一范式,各列可以设计为:
MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数等。
昨天跟同事聊起数据表性能的问题,能不能仅用覆盖索引实现数据的汇总统计。找了一个开发环境已有的数据表进行测试,通过explain命令,能看到mysql通过覆盖索引就能实现sum的需求,而无须去读取实际行数据。
(3)INSERT() 替换字符串,从某个位置开始,替换某个长度,如果起始位置超过字符串长度,则返回源字符串,如: INSERT(‘我爱课工场’,1,3,‘很爱’)
https://www.cnblogs.com/poloyy/category/1765164.html
良好的逻辑设计和物理设计是高性能的基石, 应该根据系统将要执行的查询语句来设计schema, 这往往需要权衡各种因素。
不管我们是不是有身份的人,我们一定是有身份证的人,身份证上面的号码就是我们的ID,理论上这个ID是全国唯一的,而且通过这个号码,我们还可以得到一些个人信息,比如前两位可以确定我们第一次申请身份证的时候所在的省份、接下来的四位可以确定我们所在的区县,然后还可以知道我们出生的年月以及性别。
如果忽略mode参数,默认情况下WEEK函数将使用default_week_format系统变量的值。 要获取default_week_format变量的当前值,请使用SHOW VARIABLES语句如下:
数学函数 abs(n) 返回n的绝对值 mysql> select abs(2); -> 2 mysql> select abs(-32); -> 32 sign(n) 返回参数的符号(为-1、0或1) mysql> select sign(-32); -> -1 mysql> select sign(0); -> 0 mysql> select sign(234); -> 1 mod(n,m) 取模运算,返回n被m除的余数(同%操作符) mysql> select mod(234, 10); -> 4 mysql> select 234 % 10; -> 4 mysql> select mod(29,9); -> 2 floor(n) 返回不大于n的最大整数值 mysql> select floor(1.23); -> 1 mysql> select floor(-1.23); -> -2 ceiling(n) 返回不小于n的最小整数值 mysql> select ceiling(1.23); -> 2 mysql> select ceiling(-1.23); -> -1 round(n,d) 返回n的四舍五入值,保留d位小数(d的默认值为0) mysql> select round(-1.23); -> -1 mysql> select round(-1.58); -> -2 mysql> select round(1.58); -> 2 mysql> select round(1.298, 1); -> 1.3 mysql> select round(1.298, 0); -> 1 exp(n) 返回值e的n次方(自然对数的底) mysql> select exp(2); -> 7.389056 mysql> select exp(-2); -> 0.135335 log(n) 返回n的自然对数 mysql> select log(2); -> 0.693147 mysql> select log(-2); -> null log10(n) 返回n以10为底的对数 mysql> select log10(2); -> 0.301030 mysql> select log10(100); -> 2.000000 mysql> select log10(-100); -> null pow(x,y) power(x,y) 返回值x的y次幂 mysql> select pow(2,2); -> 4.000000 mysql> select pow(2,-2); -> 0.250000 sqrt(n) 返回非负数n的平方根 mysql> select sqrt(4); -> 2.000000 mysql> select sqrt(20); -> 4.472136 pi() 返回圆周率 mysql> select pi(); -> 3.141593 cos(n) 返回n的余弦值 mysql> select cos(pi()); -> -1.000000 sin(n) 返回n的正弦值 mysql> select sin(pi()); -> 0.000000 tan(n) 返回n的正切值 mysql> select tan(pi()+1); -> 1.557408 acos(n) 返回n反余弦(n是余弦值,在-1到1的范围,否则返回null) mysql> select acos(1); -> 0.000000 mysql> select acos(1.0001); -> null mysql> select acos(0); -> 1.570796 asin(n) 返回n反正弦值 mysql> select a
在刚工作的时候,发现分页场景下,当offset变大,MySQL处理速度非常慢!具体sql如下:
usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。 uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。 time_sleep_until() 函数延迟代码执行直到指定的时间。 time_nanosleep() 函数延迟代码执行若干秒和纳秒。 sleep() 函数延迟代码执行若干秒。 show_source() 函数对文件进行语法高亮显示。 strip_whitespace() 函数返回已删除 PHP 注释以及空白字符的源代码文件。 pack() 函数把数据装入一个二进制字符串。 ignore_user_abort() 函数设置与客户机断开是否会终止脚本的执行。 highlight_string() 函数对字符串进行语法高亮显示。 highlight_file() 函数对文件进行语法高亮显示。 get_browser() 函数返回用户浏览器的性能。 exit() 函数输出一条消息,并退出当前脚本。 eval() 函数把字符串按照 PHP 代码来计算。 die() 函数输出一条消息,并退出当前脚本。 defined() 函数检查某常量是否存在。 define() 函数定义一个常量。 constant() 函数返回常量的值。 connection_status() 函数返回当前的连接状态。 connection_aborted() 函数检查是否断开客户机。 zip_read() 函数读取打开的 zip 档案中的下一个文件。 zip_open() 函数打开 ZIP 文件以供读取。 zip_entry_read() 函数从打开的 zip 档案项目中获取内容。 zip_entry_open() 函数打开一个 ZIP 档案项目以供读取。 zip_entry_name() 函数返回 zip 档案项目的名称。 zip_entry_filesize() 函数返回 zip 档案项目的原始大小(在压缩之前)。 zip_entry_compressionmethod() 函数返回 zip 档案项目的压缩方法。 zip_entry_compressedsize() 函数返回 zip 档案项目的压缩文件尺寸。 zip_entry_close() 函数关闭由 zip_entry_open() 函数打开的 zip 档案文件。 zip_close() 函数关闭由 zip_open() 函数打开的 zip 档案文件。 xml_set_unparsed_entity_decl_handler() 函数规定在遇到无法解析的实体名称(NDATA)声明时被调用的函数。 xml_set_processing_instruction_handler() 函数规定当解析器在 xml 文档中找到处理指令时所调用的函数。 xml_set_object() 函数允许在对象中使用 xml 解析器。 xml_set_notation_decl_handler() 函数规定当解析器在 xml 文档中找到符号声明时被调用的函数。 xml_set_external_entity_ref_handler() 函数规定当解析器在 xml 文档中找到外部实体时被调用的函数。 xml_set_element_handler() 函数建立起始和终止元素处理器。 xml_set_default_handler() 函数为 xml 解析器建立默认的数据处理器。 xml_set_character_data_handler() 函数建立字符数据处理器。 xml_parser_set_option() 函数为 xml 解析器进行选项设置。 xml_parser_get_option() 函数从 xml 解析器获取选项设置信息。 xml_parser_free() 函数释放 xml 解析器。 xml_parser_create() 函数创建 xml 解析器。 xml_parser_create_ns() 函数创建带有命名空间支持的 xml 解析器。 xml_parse_into_struct() 函数把 xml 数据解析到数组中。 xml_parse() 函数解析 xml 文档。 xml_get_error_code() 函数获取 xml 解析器错误代码。 xml_get_current_line_number() 函数获取 xml 解析器的当前行号。 xml_get_current_column_number() 函数获取 xml 解析器的当前列号。 xml_get_current_byte_index() 函数获取 xml 解析器的当前字节索引。 xml_error_string() 函数获取 xml 解析器的错误描述。 utf8_enc
strip_whitespace() 函数返回已删除 PHP 注释以及空白字符的源代码文件。
mysql 也是从5.0 开始支持的函数,调用函数可以减少数据在数据库和应用服务器上的传输,对于提高数据处理的效率。
1、char(5) 和varchar(200) 存储'hello'的空间开销相同,使用短列有什么优势? 2、mysql会分配固定大小内存块保存内部值,尤其使用内存表临时表进行排序,操作时。因此最好只分
https://www.cnblogs.com/poloyy/p/12890763.html
ALTER TABLE old_table_name RENAME TO new_table_name;(大写为系统命令)
(1)用户猜数字 #!/bin/bash # 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了, # 猜小了或猜大了,直至用户猜对脚本结束。 # RANDOM 为系统自带的系统变量,值为 0‐32767的随机数 # 使用取余算法将随机数变为 1‐100 的随机数 num=$[RANDOM%100+1] echo "$num" # 使用 read 提示用户猜数字 # 使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于
(15)编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机
在请求达到后端之后,对需要进行缓存的接口,会先去 Redis 中找有无数据,没有的话会继续走正常的业务流程,然后将查询到的结果返回给客户端的同时也放在 Redis 中一份,下次相同请求进来后,就可以直接从 Redis中 拿到数据。
在现代数据库系统中,MySQL的InnoDB存储引擎通过精巧的数据结构设计和高效的索引算法,为海量数据提供了稳定、快速且持久化的存储服务。
Math对象 Math.random() 得到一个大于等于0,小于1之间的随机数 // 随机获取0-1之间的随机数 console.log(Math.random()); // 随机获取0-10之间的随机数[0-10) console.log(Math.random() * 10); // 随机获取0-9之间的随机整数[0-9] console.log(Math.floor(Math.random() * 10)); // 随机获取0-8之间的随机整数[0-8] console.log(Math.floor
领取专属 10元无门槛券
手把手带您无忧上云