-
sql对大小写不敏感
-
sql可以分2个部分:数据操作语言(DML)和数据定义语言(DDL):
DML:查询和更新的指令,即增删改查(CRUD)
DDL:创建和删除表格,定义索引(键),规定表之间的链接,已经施加表间的约束:
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
-
select distinct 选取唯一的不同的值
-
order by 排序,默认是升序排列,DESC降序
1.中文排序:如果数据表tbl的某字段name的字符编码是latin1_swedish_ci
select * from tbl order by birary(name) asc ;
如果数据表tbl的某字段name的字符编码是utf8_general_ci
SELECT name FROM tbl ORDER BY CONVERT( name USING gbk ) COLLATE gbk_chinese_ci ASC
2.只按日期排序,忽略年份:
select date, description from table_name order by month(date),dayofmonth(date);
注意:单纯使用dayofyear来排序会导致错误,如2-29与非闰年的3-1日同等级
3.排序点分式IP
select ip from table_name order by inet_aton(ip);
或者在设计表时就使用 int unsigned 来表示ip。
4.将某列中特定值排在最前
例如想把表中lulu的名字排在最前显示,其他按字母排序
select name from table_name order by if(name='lulu',0,1),name ;
也可以把if的条件根据需要换成相应的语句。
5.将某列内容按照用户自定义的顺序排序
例如想把表中的名字按lulu,xixi,baba,mama的非常规顺序排序输出:
select name from table_name order by field(name,'lulu','xixi','baba','mama');
6.对枚举类型排序
枚举类型默认为数字排序,如果希望以字符串形式排序。
select name from table_name order by cast(name as char);
如果希望更改enum的排序默认顺序,可以alter table
alter table table_name modify name enum('lulu','xixi','mama','baba');
7.按csv类型的字符串的某字串排序
例如某列m_str内容是形如abc-321-mno-jkl的形式,希望对第二列进行排序
select m_str from table_name order by substring_index(substring_index(m_str,'-',2),'-',-1);
-
top/limit 规定要返回的记录的条数
-
like 包含,跟where同时出现,配合通配符一起使用,like n打头:‘n%’, n结尾:’%n’, 中级包含nn:’%nn%’ ;加上not关键字, not like,不包含
通配符 描述 % 替代一个或多个字符 _ 仅替代一个字符 [charlist] 字符列中的任何单一字符 [^charlist]或者[!charlist] 不在字符列中的任何单一字符 -
in 在where中规定多个值,类似于“=”
-
as 可以为表名和列名指定别名
-
JOIN: 如果表中有至少一个匹配,则返回行,INNER JOIN 与 JOIN 是相同的。
-
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
-
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
-
FULL JOIN: 只要其中一个表中存在匹配,就返回行,在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。
-
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。如果允许重复的值,请使用 UNION ALL。
08-08
360