博主首页

mysql语法

查询数据库所有外键关系

select concat(fks.constraint_schema, '.', fks.table_name) as foreign_table,
       '->' as rel,
       concat(fks.unique_constraint_schema, '.', fks.referenced_table_name)
              as primary_table,
       fks.constraint_name,
       group_concat(kcu.column_name
            order by position_in_unique_constraint separator ', ') 
             as fk_columns
from information_schema.referential_constraints fks
join information_schema.key_column_usage kcu
     on fks.constraint_schema = kcu.table_schema
     and fks.table_name = kcu.table_name
     and fks.constraint_name = kcu.constraint_name
            where fks.constraint_schema = 'nacos_config'
group by fks.constraint_schema,
         fks.table_name,
         fks.unique_constraint_schema,
         fks.referenced_table_name,
         fks.constraint_name
order by fks.constraint_schema,
         fks.table_name;

1.时间类的语法

//这里是将日期格式化  ,其作用可以按这个时间分组。从而统计每天的信息
DATE_FORMAT(t1.end_time,'%Y-%m-%d %h:%i:%s') days,

2.将字符串类型结果转为数值型

//mysql查询结果   字符串转int   select 字段+0    例如 
 select MAX(menu_id+0) MID FROM sys_menu

--将数值转为字符串

 CAST(t.`super_unit` AS CHAR))

select  CONCAT(usf.STAFF_ID,'') personId 

 

3.如果为空则用其他值代替

//如果为空的时候就用1代替
IFNULL(t1.starte,'1') `starte`,

4.mysql中如果使用到关键字报错;可以加上 `` 这个符号,这不是单引号。是键盘左上角数字键1前面的那个符号

5.mybatis的mapper文件中,如果直接使用大于小于号会报错;可以使用转义

//大于符号案例
and t1.entry_time >=#{pd.lastLoginStart}
//小于符号案例
and t1.entry_time <=#{pd.lastLoginEnd}

 6.将内容整合在一起的语法。用于模糊查询

//将两边的值合并在一起
and t1.name like concat('%',#{pd.name},'%')


like '%${cabinetInfo.keyword}%'

 7.mysql  添加表注释

alter table test1 comment '修改后的表的注释';

8.mysql  添加字段注释

alter table tb_coupon_pool modify column `id` varchar(32) NOT NULL comment '主键id'; 
//注意字段原有的类型加上

 9.mysql  查询判空,mybatis中int类型判断,mybatis中xml判断int,   0认为是空字符串,

<if test="pd.ewm !=null and pd.ewm !='' and pd.ewm == 1 ">
            and t1.positive_ocde_url is not null
            </if>
            
            <if test="pd.ewm !=null and pd.ewm !='' and pd.ewm ==2 ">
            and t1.positive_ocde_url is null
            </if>

 10.查询结果整合到一起(默认会以逗号分隔)(默认限制结果长度1024,太长会丢失数据)

select t1.id  ,    GROUP_CONCAT(t1.id) marks

from tb_driver t1 
GROUP BY t1.id

 11、根据时间查询案例(处理起始时间和结束时间为同一天查询为空的问题)

            <if test="pd.endtime !=null and pd.endtime !='' ">
                and t1.create_time &lt;=concat('','${pd.endtime}',' 23:59:59')
            </if>

 12.获取最小值、最大值,进行分组

 <!--根据起点终点分组,分别查询价格最低的两个站点  -->
  <select id="getLineShiftsMoneyMin" parameterType="pd" resultType="pd">
    select min(t1.money) money from tb_shifts t1
    where t1.lineId =#{lineId} GROUP BY t1.type
  </select>

 13 mysql运算保留两位小数

       format(SUM(t1.platmoney/100),2) platmoney,

 

  15、 mysql设置时间默认值

设置数据创建时间默认值,mysql会自动填充当前时间,不用代码处理          

             CURRENT_TIMESTAMP

 数据最后修改时间、勾选    根据当前时间戳更新即可,mysql会在数据修改时根据当前时间修改

16、合并结果、合并多张表的结果,整合

SELECT t1.id,t1.`name` from sys_admin t1 
UNION
SELECT t2.id,t2.`name` from sys_role t2 

 17   if用法

SELECT 
  id ,
    if(phone ='' , 'a',phone) b
    FROM sys_admin 

条件成立显示前面代替的字符串,条件不成立 ,显示后面的

 

 

 

18、删除字段

ALTER  TABLE  tb_quality_inspect_day  DROP    content;

 19、删除记录、删除数据

DELETE FROM tb_quality_inspect_day where is_deleted !='0'

 20、修改字段名、修改字段类型、修改字段注释

alter table tb_quality_inspect_day change floor_num floor_num VARCHAR(50) comment "楼层";

 21、添加字段语法

ALTER TABLE tb_job ADD COLUMN `is_deleted` varchar(11) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '0' COMMENT '是否删除(0、正常;其他、删除)';
ALTER TABLE tb_job ADD COLUMN `created_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '创建人id';
ALTER TABLE tb_job ADD COLUMN `create_time` datetime DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间';
ALTER TABLE tb_job ADD COLUMN `last_update_time` datetime DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '最后修改时间';
ALTER TABLE tb_job ADD COLUMN `last_update_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '最后修改人id';

 22、修改表名

rename  table  bim_question_log  to  tb_bim_question_log;

 23、mysql获取表字段名称、获取字段注释、获取数据库字段类型

SELECT table_name, COLUMN_NAME dbName, DATA_TYPE dbType, COLUMN_COMMENT label FROM INFORMATION_SCHEMA.COLUMNS where table_name=表名 AND table_schema =数据库名称

 24、更改性别面试题sql、修改性别面试题sql

UPDATE test02 
        set sex=if(sex='1','2','1');

 25、mysql时间相隔,获取指定时间到当前时间差,mysql获取两个时间相差天数

DATEDIFF(now(),t3.import_date)

 

mysql向上取整、向下取整和四舍五入

1.mysql向上取整
SELECT CEIL(1.2)

2.mysql向下取整
SELECT FLOOR(1.2)

3.mysql四舍五入
SELECT ROUND(1.355, 2)

取绝对值绝 对值函数 abs(x) 返回x的绝对值

 包含 

FIND_IN_SET(str,strlist)
strlist 字段名 参数以”,”分隔 如 (1,2,6,8,10,22)
查询字段(strlist)中包含(str)的结果

 查询建表语句

SHOW CREATE TABLE "+name

 删除表

DROP TABLE t_ssc_dept_ag;

 重置主键自增

ALTER TABLE sys_dept2表名    AUTO_INCREMENT = 21000000重置值;

 mybatis的主键自增采用数据库的自增生成

@TableId(value="`id`",type = IdType.AUTO)

 

posted @ 2018-05-31 17:52  笑~笑  阅读(1449)  评论(0编辑  收藏  举报