主要是对数值型进行处理。
-- 绝对值
select ABS(-4) 4的绝对值,ABS(-1.1);
-- 向下取整,向上取整,四舍五入
select CEILING(4.1),FLOOR(1.1),ROUND(-4.4)
-- 取余
select MOD(60,11);
-- 随机数
select RAND(),RAND(),RAND()
-- 截断
select TRUNCATE(2.33999999,2);
对字符串进行处理。
select LEFT('abcdefg',2);
select RIGHT('abcdefg',2);
select REVERSE('hijklmn');
select REPLACE('abcdefg','abc','x');
date,time,datetime,timestamp,year。
select CURRENT_DATE();
select CURTIME();
select now();
select UNIX_TIMESTAMP();
select FROM_UNIXTIME(1660785720);
select MONTH(SYSDATE());
select MONTHNAME(SYSDATE());
select DAYNAME(SYSDATE());
select DAYOFWEEK(SYSDATE());
select WEEK(SYSDATE());
select DAYOFMONTH(SYSDATE());
select YEAR(SYSDATE());
-- 日期加法
select DATE_ADD(SYSDATE(),INTERVAL 70 DAY);
-- 日期减法
select DATE_SUB(SYSDATE(),INTERVAL 10 DAY);
-- 时间间隔
select DATEDIFF('2023-01-01',SYSDATE());
-- 日期格式化
select DATE_FORMAT(SYSDATE(),'%W %M %D %Y');
-- 把传入的参数的字符串按照md5算法进行加密,得到一个32位的16进制的字符串
select MD5('123456');
md5算法是不可逆的。
可以进行条件判断,用来实现SQL语句的逻辑。
select IF(2 > 1,'a','b');
select IFNULL(sal,0);
select NULLIF(age,0);
对一系列的值进行判断:
-- 输出学生的各科的成绩,以及评级,60以下D,60-70是C,71-80是B,80以上是A
SELECT
*,
CASE
WHEN score < 60 THEN 'D' WHEN score >= 60
AND score < 70 THEN 'C' WHEN score >= 70
AND score < 80 THEN 'B' WHEN score >= 80 THEN
'A'
END AS '评级'
FROM
mystudent;
-- 行转列
SELECT
user_name,
max( CASE course WHEN '数学' THEN score ELSE 0 END ) '数学',
max( CASE course WHEN '语文' THEN score ELSE 0 END ) '语文',
max( CASE course WHEN '英语' THEN score ELSE 0 END ) '英语'
FROM
mystudent
GROUP BY
user_name
不符合第一范式表结构:
| id | name | 联系方式 |
|---|---|---|
| 1001 | aaa | [aaa@163.com , 13314569878](mailto:aaa@163.com , 13314569878) |
| 1002 | bbb | [bbb@163.com , 13245678945](mailto:bbb@163.com , 13245678945) |
| 1003 | ccc | [ccc@163.com , 15000456987](mailto:ccc@163.com , 15000456987) |
符合第一范式的表结构:
| id | name | 邮箱 | 手机号 |
|---|---|---|---|
| 1001 | aaa | aaa@163.com | 12321321321 |
| 1002 | bbb | bbb@163.com | 32132654654 |
| 1003 | ccc | ccc@163.com | 45654654654 |
必须有主键,这是数据库设计的基本要求,一般情况下我们采用数值型或定长字符串,列不能再分,比如:联系方式。
关于第一范式,保证每一行的数据是唯一,每个表必须有主键。
建立在第一范式的基础上,要求所有非主键字段完全依赖于主键,不能产生部分依赖。
| 学号 | 性别 | 姓名 | 课程编号 | 课程名称 | 教室 | 成绩 |
|---|---|---|---|---|---|---|
| 1001 | 男 | a | 2001 | java | 301 | 89 |
| 1002 | 女 | b | 2002 | mysql | 302 | 90 |
| 1003 | 男 | c | 2003 | html | 303 | 91 |
| 1004 | 男 | d | 2004 | python | 304 | 52 |
| 1005 | 女 | e | 2005 | c++ | 305 | 67 |
| 1006 | 男 | f | 2006 | c# | 306 | 84 |
解决方案:
学生表:学号是主键
| 学号 | 性别 | 姓名 |
|---|---|---|
| 1001 | 男 | a |
| 1002 | 女 | b |
| 1003 | 男 | c |
| 1004 | 男 | d |
| 1005 | 女 | e |
| 1006 | 男 | f |
课程表:课程编号是主键
| 课程编号 | 课程名称 | 教室 |
|---|---|---|
| 2001 | java | 301 |
| 2002 | mysql | 302 |
| 2003 | html | 303 |
| 2004 | python | 304 |
| 2005 | c++ | 305 |
| 2006 | c# | 306 |
成绩表:学号和课程编号为联合主键
| 学号 | 课程编号 | 成绩 |
|---|---|---|
| 1001 | 2001 | 89 |
| 1002 | 2002 | 90 |
| 1003 | 2003 | 91 |
| 1004 | 2004 | 52 |
| 1005 | 2005 | 67 |
| 1006 | 2006 | 84 |
建立在第二范式基础上,非主键字段不能传递依赖于主键字段。
不满足第三范式:
| 学号 | 姓名 | 课程编号 | 课程名称 |
|---|---|---|---|
| 1001 | a | 2001 | java |
| 1002 | b | 2002 | mysql |
| 1003 | c | 2003 | html |
| 1004 | d | 2004 | python |
| 1005 | e | 2005 | c++ |
| 1006 | f | 2006 | c# |
解决方案:
学生表:学号是主键
| 学号 | 姓名 | 课程编号 |
|---|---|---|
| 1001 | a | 2001 |
| 1002 | b | 2002 |
| 1003 | c | 2003 |
| 1004 | d | 2004 |
| 1005 | e | 2005 |
| 1006 | f | 2006 |
课程表:课程编号是主键
| 课程编号 | 课程名称 |
|---|---|
| 2001 | java |
| 2002 | mysql |
| 2003 | html |
| 2004 | python |
| 2005 | c++ |
| 2006 | c# |
学生信息表分为基本信息表和信息信息表。
两张表,外键在多的一方。
索引,视图,存储过程,触发器,函数....
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
我看到这个错误:translationmissing:da.datetime.distance_in_words.about_x_hours我的语言环境文件:http://pastie.org/2944890我的看法:我已将其添加到我的application.rb中:config.i18n.load_path+=Dir[Rails.root.join('my','locales','*.{rb,yml}').to_s]config.i18n.default_locale=:da如果我删除I18配置,帮助程序会处理英语。更新:我在config/enviorments/devolpment
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我正在尝试用ruby中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
如果我使用ruby版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更
大家好!我对我的:username字段进行了一个小的验证,它应该是4到30个字符。我写了一个验证::length=>{:within=>4..30,:message=>I18n.t('activerecord.errors.range')-我想显示一个错误各种错误的消息(不像,太长或太短),但这里有一个问题-我可以将最小值和最大值都传递给翻译,以便有类似的东西:用户名应该在4到30个字符之间。目前我有:range:"shouldbebetween%{count}and%{count}characters",这显然不起作用(只是为了检查)。是否可以从范围中获取这些值?谢谢大家的指教!
如何在Ruby中按名称传递函数?(我使用Ruby才几个小时,所以我还在想办法。)nums=[1,2,3,4]#Thisworks,butismoreverbosethanI'dlikenums.eachdo|i|putsiend#InJS,Icouldjustdosomethinglike:#nums.forEach(console.log)#InF#,itwouldbesomethinglike:#List.iternums(printf"%A")#InRuby,IwishIcoulddosomethinglike:nums.eachputs在Ruby中能不能做到类似的简洁?我可以只
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co