分享编程~
 

常用sql语句操作数据库表字段查询笔记

常用sql语句,常用sql操作数据库、表、字段、查询等语句

天天特卖抢好货

使用以下sql的时候 注意{变量}整个“{变量}”替换你要值,根据实际业务部分语句where条件换成自己的。

【数据库】

判断数据库是否存在:

select * from information_schema.SCHEMATA  where SCHEMA_NAME = '{需要查找的数据库名}';

模糊查询 数据库是否存在

select * from information_schema.SCHEMATA  where SCHEMA_NAME like '%{需要查询的数据库名的部分名称}%';

【数据表】

判断数据表是否存在:

select * from information_schema.TABLES  where TABLE_NAME = '{需要查询的数据表名}';

模糊查询 数据表是否存在:

select * from information_schema.TABLES  where TABLE_NAME like '%{需要查询的数据表名的部分名称}%';

查询表字段

show columns from `{表名}`

显示表字段结构详细信息

创建数据表示例:

CREATE TABLE `zhl_article` (

  `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',

  `fid` int unsigned NOT NULL COMMENT '父级ID',

  `title` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '标题',

  `create_time` datetime NOT NULL COMMENT '创建时间',

  PRIMARY KEY (`id`) USING BTREE,

  KEY `fid` (`fid`) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='文章表';

删除数据表:

drop {表名}

表中添加字段

alter table {表名} add  {字段名} {字段类型}  default '{默认值}' COMMENT '{备注}';

修改字段(not null是否可以为空)

alter table {表名} modify column  {字段名} {字段类型} not null default '{默认值}' COMMENT '{备注}';

刪除字段

alter table {表名} drop {字段名};

【添加】

普通插入

insert into {表名} ({字段1},{字段2}) values ('值1','值2')

一次插入多条

insert into {表名} ({字段1},{字段2}) values ('值1','值2'),('值a','值b')

插入的数据来自另一个表

insert into  {表名} ({字段1},{字段2}) (select {字段1},{可以指定固定值比如'1'}  from {表名} where {条件})

一次插入多条数据来自另一个表

insert into  {表名}({字段1},{字段2}) select {字段1},'3'  from {表名} where id in('901','825','822');

【修改】

普通修改

update {表名} set {字段1}={值} where id=1

一条sql修改多条数据

update {表名} set  {要修改的字段1} = case {条件字段}  when {条件字段值1} then {要修改的字段1的值}  

when {条件字段值2} then {要修改的字段2的值}  end where id in (35,37,38,39)

【删除】

普通删除

delete from {table} where id=1

清空表数据

truncate table {表名}

【查询】

mysql按年,月,日分组(group by)统计

日期时间格式(“{你的时间字段名}”里边存的值必须是日期格式):

select date_format({你的时间字段名},'%y%m%d') days,count(id) count from {表名} group by days;

select date_format({你的时间字段名},'%y%u') weeks,count(id) count from {表名} group by weeks;

select date_format({你的时间字段名},'%y%m') months,count(id) count from {表名} group by months

时间戳格式:(“{你的时间字段名}”里边存的值必须是时间戳格式):

select from_unixtime({你的时间字段名},'%y%m%d') days,count(id) count from {表名}  group by days;

select from_unixtime({你的时间字段名},'%y%u') weeks,count(id) count from {表名}  group by weeks;

select from_unixtime({你的时间字段名},'%y%m') months,count(id) count from {表名}  group by months

当天内的数据

select * from {表名} where date({你的时间字段名})=date(now()) 

select * from {表名} where to_days({你的时间字段名}) = to_days(now());

最近N天内的数据

select * from  {表名} WHERE to_days(now()) - to_days({你的时间字段名}) <= N

当然也可以使用 date_sub()函数,即

select * from  {表名} WHERE DATE_SUB(NOW(), INTERVAL N DAY) <= date({你的时间字段名})

查询最近一周数据

select * from  {表名} where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date({你的时间字段名});

同理,查询 N 天内数据,只需将 7 换为 N,查询一月内换为 MONTH,一年内换为 YEAR.

查询 01-01 日至 02-02 日内的数据

select * from  {表名} where DATE_FORMAT({时间字段名},'%m-%d') >= '01-01' and DATE_FORMAT({时间字段名},'%m-%d') <= '02-02';

mysql根据json字段内容作为查询条件(包括json数组)检索数据

json格式(注意查询的值类型,整形没有引号,json一般都是双引号)

where data->'$.{字段名}' = {字段值};

json数组格式(注意查询的值类型,整形没有引号,json一般都是双引号)

select * from {表名}  where JSON_CONTAINS(data,JSON_OBJECT('{字段名}', "{字段值}"))

两个表字段相同 同时查询两个表的数据 (连表查询用union链接)

select * from {表1}   union  select * from {表2} 

多个表合并结果集查询

select * from (

    select 

        o.id,

        o.remark

    from erp_warehouse_table_extend o union 

    select 

        s.id,

        s.remark

    from erp_workorder_remark s

) as c order by id desc;

查询所有父级:

select t2.id,t2.menuname from (

      select @r as _id, 

        (select @r := fid from zhl_sysmenu where id = _id) as fid, 

        @l := @l + 1 as lvl 

      from (select @r := 11, @l := 0) vars, zhl_sysmenu h 

      where @r <> 0 and fid > 0

) t1 

join zhl_sysmenu t2 on t1._id = t2.id 

order by t1.lvl desc


上一篇:PHP加减乘除精确计算函数bcadd,bcsub,bcmul,bcdiv,bcmod,bccomp下一篇:PHP报错cURL error: SSL certificate problem: unable to get local issuer certificate (60)
赞(0) 踩(0)
您说多少就多少,您的支持是我最大的动力
赏金
微 信
赏金
支付宝
本文连接: https://www.yj521.com/article/214.html
版权声明: 本文为原创文章,版权归《越加网》所有,分享转载请注明出处!