sql知识助记(未完待续)

数据库对比

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";
MySQL自动去除字串尾部空格,上边两句一样

特有关键字: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
    (略)







猜你喜欢

转载自blog.csdn.net/yup1212/article/details/81010473