sql

  • 定义别名方法

  1):表达式 as 别名;

  2):表达式  空格  别名

  3):别名=表达式

  • 字符串拼接函数 :concat(str1,str2...)
  • 升序倒序:order by 字段 默认asc 升序; desc 降序
  • like 
  • 查询指定数据库中含有指定字段的所有表
SELECT DISTINCT
    TABLE_NAME
FROM
    INFORMATION_SCHEMA. COLUMNS
WHERE
    COLUMN_NAME IN ('site_id')
AND TABLE_SCHEMA = 'lxserver';
  • 分支结构:

case when  条件  then 值  when 条件  then 值  else 值 end 例:select (case t.sex when 1 then 男 end ) as  '性别';select if(filed >10,0,1) newFiled from test 当字段filed值大于10的时候是0,否则是1;

  • left join table on 后面 多个条件的时候,不管条件结果错与对,left表都出现在结果集中,join表中匹配到的数据才会出现在结果集中。即最少的结果集的个数是left表的数目。
  • exists ,not exists,in,not in

where exists (select 1 form t where t.id = 1), 查出结果则为true,not exists相反。

以下没有特殊说明,均是Mysql下的合法操作,其他数据库并未测试

  • mysql模糊查询

like %:替代一个或多个字符;_:仅替代一个字符

regexp: .:匹配一个多个字符 ?:匹配前面子表达式0|1次; +:匹配前面子表达式>0次; *:匹配前面子表达式>-1次; {}:表示重复的次数例 6{6},匹配666666; []:匹配括号里面的字符例:^[张].  匹配张姓的人; ^ $:开始结束。

注:匹配默认是不区分大小写的,如果想区分大小写使用 BINARY 例where name like BINARY "%l";要匹配特殊符号,使用转意符

  • DISTINCT 去重
  • limit n,m 效果是从第n行取m条数据,计数始:0,MySQL5后也可以这样写limit m offset n,效果和limt n,m一样
  • order by 后面跟多个字段并且这些字段都需DESC的时候需要给每个字段指定DESC关键字。
  • BETWEEN n  AND m 所包含区间[n,m]
  • null值 用is null和is not null
  • AND OR 组合使用这两个操作符的时候,要使用小括号明确的分组操作符,否则其默认的计算次序会查出意想不到的结果。
  • not 支持对 in between exists条件取反。
  • union 组合查询 效果是和多个where子句相同,如果需要返回符合条件的每一条数据(包括重复的)则需要使用union all。使用条件union连接的多个select 字段必须一致,列数据类型方面必须兼容。
  • foreign key 外键约束(主表,从表)从表约束主表 语法 例:ALTER TABLE student add CONSTRAINT fk_teacher_student FOREIGN KEY (t_id) REFERENCES teacher(id),删除ALTER TABLE student drop FOREIGN KEY fk_teacher_student
  • 触发器 对操作 update,insert,delete,触发时机 after 或 before。
例:
DELIMITER $
create trigger newStudent after insert
on student for each row
begin
declare c int;
set c = (select stuCount from teacher t where t.id=new.t_id);
update teacher t set stuCount = c+1 where t.id = new.t_id;
end$
DELIMITER ;


DROP TRIGGER newStudent;

  

原文地址:https://www.cnblogs.com/mao-yan/p/6628124.html