qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          MySQL 一些基本操作

           MySQL 一些基本操作 

            ALTER TABLE:添加,修改,刪除表的列,約束等表的定義。

            查看列:desc 表名;

            修改表名:alter table t_book rename to bbb;

            添加列:alter table 表名 add column 列名 varchar(30);

            刪除列:alter table 表名 drop column 列名;

            修改列名MySQL: alter table bbb change nnnnn hh int;

            修改列名SQLServer:exec sp_rename't_student.name','nn','column';

            修改列名Oracle:lter table bbb rename column nnnnn to hh int;

            修改列屬性:alter table t_book modify name varchar(22);

            sp_rename:SQLServer 內(nèi)置的存儲(chǔ)過(guò)程,用與修改表的定義。

            mysql修改、刪除數(shù)據(jù)記錄:

            mysql數(shù)據(jù)庫(kù)相信很多人都接觸過(guò),在進(jìn)行mysql數(shù)據(jù)庫(kù)的操作的時(shí)候,有人就希望刪除或者修改mysql數(shù)據(jù)庫(kù)中的一些數(shù)據(jù)記錄。DELETE 和UPDATE 語(yǔ)句令我們能做到這一點(diǎn)。

            用update修改記錄:

            UPDATE tbl_name SET 要更改的列

            WHERE 要更新的記錄:

            這里的 WHERE 子句是可選的,因此如果不指定的話,表中的每個(gè)記錄都被更新。

            例如,在pet表中,我們發(fā)現(xiàn)寵物Whistler的性別沒(méi)有指定,因此我們可以這樣修改這個(gè)記錄:

            mysql> update pet set sex=’f’ where name=” Whistler”;

            用delete刪除記錄:

            DELETE 語(yǔ)句有如下格式:

            DELETE FROM tbl_name WHERE 要?jiǎng)h除的記錄

            WHERE 子句指定哪些記錄應(yīng)該刪除。它是可選的,但是如果不選的話,將會(huì)刪除所有的記錄。這意味 著最簡(jiǎn)單的 DELETE 語(yǔ)句也是最危險(xiǎn)的。

            這個(gè)查詢將清除表中的所有內(nèi)容。一定要當(dāng)心!

            為了刪除特定的記錄,可用 WHERE 子句來(lái)選擇所要?jiǎng)h除的記錄。這類似于 SELECT 語(yǔ)句中的 WHERE 子句。

            mysql> delete from pet where name=”Whistler”;

            可以用下面的語(yǔ)句清空整個(gè)表:

            mysql>delete from pet;

            總結(jié)

            本節(jié)介紹了兩個(gè)SQL語(yǔ)句的用法。使用UPDATE和DELETE語(yǔ)句要十分小心,因?yàn)榭赡軐?duì)你的數(shù)據(jù)造成危險(xiǎn)。尤其是DELETE語(yǔ)句,很容易會(huì)刪除大量數(shù)據(jù)。使用時(shí),一定小心。

          MySQL InnoDB 管理和備份二進(jìn)制日志

            (一)二進(jìn)制日志的重要性

            如果有某個(gè)時(shí)間點(diǎn)的數(shù)據(jù)備份和所有從那時(shí)以后的二進(jìn)制日志就可以重放自從上次全備以來(lái)的二進(jìn)制日志并“前滾”所有的變更

            (二)二進(jìn)制日志配置的最佳實(shí)踐

            對(duì)于 InnoDB 如果僅是啟用二進(jìn)制日志是不夠、還需要其他措施來(lái)保證安全:

            推薦配置如下:

            ● sync_binlog = 1

            表示采用同步寫磁盤的方式來(lái)寫二進(jìn)制日志、這時(shí)寫操作便繞開(kāi)了OS的緩沖

            該默認(rèn)值為0

            ● innodb_support_xa = 1

            確保二進(jìn)制日志和InnoDB 數(shù)據(jù)文件的同步

            (三)影響二進(jìn)制日志備份策略的因素

            如下圖:

            (四)二進(jìn)制日志的格式

            二進(jìn)制日志的粒度是事件、每個(gè)事件都有固定的事件頭、含:When、What、Who等

            因其格式為二進(jìn)制不可看、我們可借助 mysqlbinlog 查看其內(nèi)容

            下面是一個(gè)例子:

          [mysql@even data]$ mysqlbinlog -vv mysql-bin.000023
          /*!40019 SET @@session.max_insert_delayed_threads=0*/;
          /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
          DELIMITER /*!*/;
          # at 4
          #130515 12:35:29 server id 2  end_log_pos 107   Start: binlog v 4, server v 5.5.16-log created 130515 12:35:29 at startup
          # Warning: this binlog is either in use or was not closed properly.
          ROLLBACK/*!*/;
          BINLOG '
          kRCTUQ8CAAAAZwAAAGsAAAABAAQANS41LjE2LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
          AAAAAAAAAAAAAAAAAACREJNREzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==
          '/*!*/;
          # at 107
          #130515 12:37:47 server id 2  end_log_pos 255   Query   thread_id=3     exec_time=0     error_code=0
          SET TIMESTAMP=1368592667/*!*/;
          SET @@session.pseudo_thread_id=3/*!*/;
          SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
          SET @@session.sql_mode=0/*!*/;
          SET @@session.auto_increment_increment=2, @@session.auto_increment_offset=2/*!*/;
          /*!\C utf8 *//*!*/;
          SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
          SET @@session.lc_time_names=0/*!*/;
          SET @@session.collation_database=DEFAULT/*!*/;
          alter database db_rocky character set = utf8mb4 COLLATE = utf8mb4_unicode_ci
          /*!*/;
          DELIMITER ;
          # End of log file
          ROLLBACK /* added by mysqlbinlog */;
          /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

            這里列了 2 個(gè)事件、來(lái)看第二個(gè)事件:

          # at 107
          #130515 12:37:47 server id 2  end_log_pos 255   Query   thread_id=3     exec_time=0     error_code=0

            第一行表示該事件的起始位置:at 107

            第二行包含如下幾項(xiàng):

            ● 事件的日期和時(shí)間:130515 12:37:47

            ● 服務(wù)器 ID、這對(duì)于防止復(fù)制之間無(wú)限循環(huán)和其他問(wèn)題是非常有必要的

            ● 下一個(gè)事件的開(kāi)始位置:end_log_pos 255

            注意了:該值通常是不正確的。因?yàn)橹鲙?kù)會(huì)復(fù)制事件到一個(gè)緩沖區(qū)、但這樣做時(shí)MySQL并不知道下個(gè)日志事件的位置

            ● 事件類型、這里是 Query

            ● 執(zhí)行改事件的線程 ID、這點(diǎn)對(duì)審計(jì)蠻重要的

            ● 語(yǔ)句的時(shí)間戳和寫入二進(jìn)制日志的時(shí)間差:exec_time

            該值在復(fù)制落后的備庫(kù)上會(huì)有很大偏差

            ● 事件產(chǎn)生的錯(cuò)誤代碼

            (五)清除老的二進(jìn)制日志的方法

            不要用 rm 刪除日志、否則、將會(huì)導(dǎo)致 mysql-bin.index 狀態(tài)文件與磁盤上的不一致

            應(yīng)該用類似下面的 cron 命令:

          0 0 * * * /usr/bin/myql -e "PURGE MASTER LOGS BEFORE CURRENT_DATE - INTERVAL N DAY"

          posted on 2013-05-22 10:16 順其自然EVO 閱讀(407) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2013年5月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 禹州市| 寻甸| 兴业县| 海兴县| 庆安县| 肥西县| 习水县| 台东市| 建湖县| 东阳市| 济宁市| 三穗县| 贞丰县| 饶阳县| 鄂伦春自治旗| 东乡族自治县| 涞水县| 天峻县| 河池市| 唐河县| 建平县| 孟村| 徐闻县| 庐江县| 秦安县| 惠水县| 常熟市| 麟游县| 岱山县| 安康市| 绥芬河市| 黄平县| 保德县| 襄樊市| 靖远县| 新绛县| 昌图县| 临沭县| 忻城县| 株洲市| 邛崃市|