数据库对比
MySQL
不标准sql:自动类型转换
MySQL类型会做自动转换 例如:会将“1”先转为some_num相同的类型
select some_num from a_table where some_num="1";
年月日字串可自动转为时间,
每个数据库处理date格式有些不同,所以建议日期用字串
不标准sql:引号
MySQL表示字符串的‘’和’通用,sql标准用 ’建议用单引号
不标准sql:空格
select some_str from a_table where some_str="need ";
select some_str from a_table where some_str="need";
特有关键字:limit
作用:获取指定几行的数据,(列表切片操作)
用法:
limit n
前n行数据。
limit start,n
从下标为start开始的n条数据,下标从0开始
sql
查
查全部字段
select * from a_table;
会多一步,会先自动查一遍field list 然后转换成如下语句
select all_field_name from a_table;
为了让别人看到用到什么,建议不写*
字段名临时名
select a_field_name as new_name from a_table;
as可以省略,但建议不省略
between
select some_num from a_table where between a and b;
闭区间:between a and b <=> x>=a and x<=b
符号
通配符% 占位符_
排序
默认asc可不写
select * from a_table order by a_field_name asc;
select * from a_table order by a_field_name desc;
select all_field_name from a_table order by 5 desc;
下标排序时建议写出全部字段名,当表结构改变时第5个未必是你预设要排的字段
处理函数
Lower(字段名) :转小写
upper(字段名):转大写
substr(字段名,起始下标,字串长度):截取子串,首字母下标为1
length(字段名):取长度
trim(字串):去前后全部空格
str_to_date(字符串,格式):字串转日期,格式例如‘%Y-%m-%d’
date_format:格式化日期
format:设置千分位
round(处理的数字,保留几位小数=0):四舍五入,保留位数∈整数, 不写默认0
rand():生成随机数[0,1]
Ifnull:转null为另一个值
跨表查询
内连接:找出符合匹配条件的全部数据
1 等值连接:92版 查询次数等于笛卡尔积数
2 非等值连接:
3 自连接:
外链接:并不只显示匹配的结果,还可显示其中一张表的其他未匹配项,并将匹配值设为null。即外链接=内连接+某表未匹配
左外连接,左表列全显示, left outer 可简写为 left
右连接,右表列全显示,right outer 可简写为 right
selct
left_table.field_name_1,right_table.field_name_1
from
left_table
right outer join
right_table
on
left_table.field_name_2 = right_table.field_name_2
where
(略)