日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql shell

發布時間:2025/3/8 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql shell 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mysql 查詢10分鐘以內的數據:
select *from t_agent where int_last_login>=CURRENT_TIMESTAMP - INTERVAL 10 MINUTE;



mysql關聯多表進行update更新操作 UPDATE Track INNER JOIN MV ON Track.trkid=MV.mvid SET Track.is_show=MV.is_show WHERE trkid<6 等同于 UPDATE Track,MV SET Track.is_show=MV.is_show WHERE Track.trkid=MV.mvid and trkid<6 【擴展】 根據結果集進行update更新操作 原表信息 表1:am_favorites_4

am_favorites_4

af_user_id

af_tag_id

af_content_id

af_content_type

374

0

535522

3

374

0

535522

3

374

89

535522

3

表2:am_tag_user_4

am_tag_user_4

atu_user_id

atu_tag_id

atu_num

374

0

9

374

89

9

更新結果目標表:am_tag_user_4

am_tag_user_4?

atu_user_id

atu_tag_id

atu_num

374

0

7

374

89

8

UPDATE?am_tag_user_4 tag

INNER?JOIN?am_favorites_4 fav

ON?tag.atu_tag_id=fav.af_tag_id?and?tag.atu_user_id=fav.af_user_id

INNER?JOIN?(SELECT??af_user_id,af_tag_id,count(*)?as?cnt

FROM?am_favorites_4,am_tag_user_4

where?atu_tag_id=af_tag_id?and?atu_user_id=af_user_id?and?af_content_id?=?535522?andaf_content_type=3?and?af_user_id=374

group?by?af_user_id,af_tag_id)?AS?T1

ON?tag.atu_tag_id=T1.af_tag_id?and?tag.atu_user_id=T1.af_user_id

SET?tag.atu_num=tag.atu_num-?T1.cnt

http://blog.sina.com.cn/s/blog_4c197d420101aer2.html

?

在shell開發中,很多時候我們需要操作mysql數據庫(比如:查詢數據、導出數據等),但是我們又無法進入mysql命令行的環境,就需要在shell環境中模擬mysql的環境,使用mysql相關命令,本文總結幾種shell操作mysql的方法,供大家參考。

方案1

  • mysql?-uuser?-ppasswd?-e"insert?LogTable?values(...)"??
  • ? 優點:語句簡單 缺點:支持的sql相對簡單

    方案2

    準備一個sql腳本,名字為update.sql,例如:
  • CREATE?TABLE?`user`?(??
  • ??`id`?varchar(36)?NOT?NULL?COMMENT?'主鍵',??
  • ??`username`?varchar(50)?NOT?NULL?COMMENT?'用戶名',??
  • ??`password`?varchar(50)?NOT?NULL?COMMENT?'用戶密碼',??
  • ??`createdate`?date?NOT?NULL?COMMENT?'創建時間',??
  • ??`age`?int(11)?NOT?NULL?COMMENT?'年齡',??
  • ??PRIMARY?KEY??(`id`)??
  • )?ENGINE=MyISAM?DEFAULT?CHARSET=utf8?COMMENT='用戶信息表';??
  • DROP?TABLE?IF?EXISTS?`visit_log`;??
  • CREATE?TABLE?`visit_log`?(??
  • ??`id`?varchar(36)?character?set?utf8?NOT?NULL,??
  • ??`type`?int(11)?NOT?NULL,??
  • ??`content`?text?character?set?utf8?NOT?NULL,??
  • ??`createdate`?date?NOT?NULL,??
  • ??PRIMARY?KEY??(`id`)??
  • )?ENGINE=MyISAM?DEFAULT?CHARSET=latin1?COMMENT='訪問日志';??
  • ? 新建一個update_mysql.sh,內容如下:
  • use?chbdb;??
  • source?update.sql??
  • ? 然后執行如下命令:
  • cat?update_mysql.sh?|?mysql?--user=root?-ppassword??
  • ? 優點:支持復雜的sql腳本 缺點: 1> 需要兩個文件:update.sql和update_mysql.sh 2> 一旦中間出錯,之后腳本就不會執行,例如: 如果第一張表已經存在,則會報出如下異常: ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists 然后腳本退出,第二張表也就無法創建。

    方案3

    新建一個shell腳本,格式如下:
  • #!/bin/bash??
  • mysql?-u*?-h*?-p*?<<EOF??
  • ????Your?SQL?script.??
  • EOF??
  • ? 例如: #!/bin/bash mysql -uroot -ppassword <<EOF use chbdb; CREATE TABLE user ( id varchar(36) NOT NULL COMMENT '主鍵', username varchar(50) NOT NULL COMMENT '用戶名', password varchar(50) NOT NULL COMMENT '用戶密碼', createdate date NOT NULL COMMENT '創建時間', age int(11) NOT NULL COMMENT '年齡', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用戶信息表'; EOF

    ?

    優點: 1>支持復雜的sql腳本 2>無需其它額外文件 缺點: 1> 表名、字段不能使用單引號,需要修改原有sql語句 2> 一旦中間出錯,之后腳本就不會執行,例如: 如果第一張表已經存在,則會報出如下異常: ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists 然后腳本退出,第二張表也就無法創建。

    方案4

    準備一個sql腳本,如update.sql,然后執行如下命令:
  • mysql?-uroot?-ppassword?<?update.sql??
  • ? 優點:支持復雜的sql腳本 缺點: 1> 一旦中間出錯,之后腳本就不會執行,例如: 如果第一張表已經存在,則會報出如下異常: ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists 然后腳本退出,第二張表也就無法創建。 大家知道在mysql命令行中使用source命令,即使中間出錯,后續腳本也會繼續執行,但是如上幾種方式,均無法解決該問題,如果大家有好的建議,請回復,謝謝。

    http://www.cnblogs.com/wangkangluo1/archive/2012/04/27/2472898.html

    ?

    對于自動化運維,諸如備份恢復之類的,DBA經常需要將SQL語句封裝到shell腳本。本文描述了在Linux環境下mysql數據庫中,shell腳本下調用sql語句的幾種方法,供大家參考。對于腳本輸出的結果美化,需要進一步完善和調整。以下為具體的示例及其方法。

    1、將SQL語句直接嵌入到shell腳本文件中

    ?

    復制代碼代碼如下:
    --演示環境??
    [root@SZDB ~]# more /etc/issue??
    CentOS release 5.9 (Final)??
    Kernel \r on an \m??
    ??
    root@localhost[(none)]> show variables like 'version';??
    +---------------+------------+??
    | Variable_name | Value????? |??
    +---------------+------------+??
    | version?????? | 5.6.12-log |??
    +---------------+------------+??
    ??
    [root@SZDB ~]# more shell_call_sql1.sh???
    #!/bin/bash??
    # Define log??
    TIMESTAMP=`date +%Y%m%d%H%M%S`??
    LOG=call_sql_${TIMESTAMP}.log??
    echo "Start execute sql statement at `date`." >>${LOG}??
    ??
    # execute sql stat??
    mysql -uroot -p123456 -e "??
    tee /tmp/temp.log??
    drop database if exists tempdb;??
    create database tempdb;??
    use tempdb??
    create table if not exists tb_tmp(id smallint,val varchar(20));??
    insert into tb_tmp values (1,'jack'),(2,'robin'),(3,'mark');??
    select * from tb_tmp;??
    notee??
    quit"??
    ??
    echo -e "\n">>${LOG}??
    echo "below is output result.">>${LOG}??
    cat /tmp/temp.log>>${LOG}??
    echo "script executed successful.">>${LOG}??
    exit;??
    ??
    [root@SZDB ~]# ./shell_call_sql1.sh???
    Logging to file '/tmp/temp.log'??
    +------+-------+??
    | id?? | val?? |??
    +------+-------+??
    |??? 1 | jack? |??
    |??? 2 | robin |??
    |??? 3 | mark? |??
    +------+-------+??
    Outfile disabled.??

    ?

    2、命令行調用單獨的SQL文件

    ?

    復制代碼代碼如下:
    [root@SZDB ~]# more temp.sql???
    tee /tmp/temp.log??
    drop database if exists tempdb;??
    create database tempdb;??
    use tempdb??
    create table if not exists tb_tmp(id smallint,val varchar(20));??
    insert into tb_tmp values (1,'jack'),(2,'robin'),(3,'mark');??
    select * from tb_tmp;??
    notee??
    ??
    [root@SZDB ~]# mysql -uroot -p123456 -e "source /root/temp.sql"??
    Logging to file '/tmp/temp.log'??
    +------+-------+??
    | id?? | val?? |??
    +------+-------+??
    |??? 1 | jack? |??
    |??? 2 | robin |??
    |??? 3 | mark? |??
    +------+-------+??
    Outfile disabled.??

    ?

    3、使用管道符調用SQL文件

    ?

    復制代碼代碼如下:
    [root@SZDB ~]# mysql -uroot -p123456 </root/temp.sql??
    Logging to file '/tmp/temp.log'??
    id????? val??
    1?????? jack??
    2?????? robin??
    3?????? mark??
    Outfile disabled.??
    ??
    #使用管道符調用SQL文件以及輸出日志??
    [root@SZDB ~]# mysql -uroot -p123456 </root/temp.sql >/tmp/temp.log??
    [root@SZDB ~]# more /tmp/temp.log??
    Logging to file '/tmp/temp.log'??
    id????? val??
    1?????? jack??
    2?????? robin??
    3?????? mark??
    Outfile disabled.??

    ?

    4、shell腳本中MySQL提示符下調用SQL

    ?

    復制代碼代碼如下:
    [root@SZDB ~]# more shell_call_sql2.sh??
    #!/bin/bash??
    mysql -uroot -p123456 <<EOF??
    source /root/temp.sql;??
    select current_date();??
    delete from tempdb.tb_tmp where id=3;??
    select * from tempdb.tb_tmp where id=2;??
    EOF??
    exit;??
    [root@SZDB ~]# ./shell_call_sql2.sh??
    Logging to file '/tmp/temp.log'??
    id????? val??
    1?????? jack??
    2?????? robin??
    3?????? mark??
    Outfile disabled.??
    current_date()??
    2014-10-14??
    id????? val??
    2?????? robin??

    ?

    5、shell腳本中變量輸入與輸出

    ?

    復制代碼代碼如下:
    [root@SZDB ~]# more shell_call_sql3.sh??
    #!/bin/bash??
    cmd="select count(*) from tempdb.tb_tmp"??
    cnt=$(mysql -uroot -p123456 -s -e "${cmd}")??
    echo "Current count is : ${cnt}"??
    exit???
    [root@SZDB ~]# ./shell_call_sql3.sh???
    Warning: Using a password on the command line interface can be insecure.??
    Current count is : 3??
    ??
    [root@SZDB ~]# echo "select count(*) from tempdb.tb_tmp"|mysql -uroot -p123456 -s??
    3??
    ??
    [root@SZDB ~]# more shell_call_sql4.sh??
    #!/bin/bash??
    id=1??
    cmd="select count(*) from tempdb.tb_tmp where id=${id}"??
    cnt=$(mysql -uroot -p123456 -s -e "${cmd}")??
    echo "Current count is : ${cnt}"??
    exit???
    ??
    [root@SZDB ~]# ./shell_call_sql4.sh???
    Current count is : 1??
    ??
    #以上腳本演示中,作拋磚引玉只用,對于輸出的結果不是很規整友好,需要進一步改善和提高。 http://www.jb51.net/article/56944.htm

    ?

    轉載于:https://www.cnblogs.com/softidea/p/6043674.html

    總結

    以上是生活随笔為你收集整理的mysql shell的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。