• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Benjamin

            靜以修身,儉以養德,非澹薄無以明志,非寧靜無以致遠。
            隨筆 - 397, 文章 - 0, 評論 - 196, 引用 - 0
            數據加載中……

            mysql常用操作(不斷更新中)

            登陸:mysql -uroot -p u表示用戶,p表示密碼

            show variables like 'character\_set\_%';
            latin1_bin 
            西歐 (多語言), 二進制 
             
            binary 
            二進制 

            1.查看和清除mysql日志

            如果想要關閉二進制mysql日志,可以在my.ini里把log-bin這行注釋掉

            要清二進制日志的話,在mysql開啟了二進制日志的狀態下,以root身份登錄mysql以后執行下面兩個命令之一:
            PURGE MASTER LOGS before '2020-1-1';        清除指定日期之前的二進制日志
            PURGE MASTER LOGS TO 'mysql-bin.010';        清除指定文件編號之前的二進制日志
            注意,如果沒運行命令而是直接刪除mysql-bin.xxx文件的話,mysql-bin.index里仍然記錄了日志文件列表,這樣以后再清日志時,就會因找不到列表中的日志文件而無法清理mysql日志
            可以用bin目錄中的mysqlbinlog.exe查看mysql二進制日志。
            C:\>mysqlbinlog mysql-bin.000001
            如果my.ini中設置了字符集的話,可能會出現這以下這樣的報錯
            mysqlbinlog: unknown variable 'default-character-set=gbk'
            帶上--no-defaults參數后即可解決
            C:\>mysqlbinlog --no-defaults mysql-bin.000001
            如果是要清理*.err日志的話,直接停止mysql數據庫,將這個文件剪切走或者刪除,重啟mysql生成一個新的即可。

            .err文件中實際是以文本方式保存的錯誤提示,可以直接用記事本打開查看。

             

            2.清空某個mysql表中所有內容
            delete from 表名;
            truncate table 表名;
            不帶where參數的delete語句可以刪除mysql表中所有內容,使用truncate table也可以清空mysql表中所有內容。效率上truncate比delete快,但truncate刪除后不記錄mysql日志,不可以恢復數據。
            delete的效果有點像將mysql表中所有記錄一條一條刪除到刪完,而truncate相當于保留mysql表的結構,重新創建了這個表,所有的狀態都相當于新表。

            3.查看編碼
            查看數據庫的字符集    show variables like 'character\_set\_%';
            latin1_bin 
            西歐 (多語言), 二進制 
             
            binary 
            二進制 
            mysql>create database mydb character set utf-8;#直接指定其編碼
            直接通過命令進行修改
            set character_set_client=utf8;
            set character_set_connection=utf8;
            set character_set_database=utf8;
            set character_set_results=utf8;
            set character_set_server=utf8;
            修改完了之后再查詢
            show variables like 'character\_set\_%';
            +--------------------------+--------+
            | Variable_name            | Value  |
            +--------------------------+--------+
            | character_set_client     | utf8   |
            | character_set_connection | utf8   |
            | character_set_database   | utf8   |
            | character_set_filesystem | binary |
            | character_set_results    | utf8   |
            | character_set_server     | utf8   |
            | character_set_system     | utf8   |
            +--------------------------+--------+

             

            /*查詢當前數據庫默認字符設置*/
            show variables like 'char%';
            /*查詢當前數據庫默認的校驗字符集*/
            show variables like 'collation%'

             


            結果全部都調整修改成UTF-8了!
            MySQL字符集編碼的類型種類
            gb2312_chinese_ci和gbk_chinese_ci以及gb2312_bin,gbk_bin的區別
            gb2312_chinese_CI : 只支持簡體中文
            gb2312_BIN   :而gb2312_bin可以說是gb2312_chinese_ci的一個子集,
            而且gb2312_BIN是二進制存儲.區分大小寫數據庫編碼格式就意義不一樣了
            gbk_chinese_CI   支持簡體中文和繁體
            gbk_bin   解釋同gb2312_BIN     對應gbk_chinese_CI
            PS:GBK包括了簡體與繁體兩種類型

            查看數據庫表中字段的字符集設置-----------show create table TableName 或 show full columns from tableName
            查看數據庫的編碼格式---------------------show create database test;
            修改數據庫的字符集
               mysql>use mydb
               mysql>alter database mydb character set utf-8;

            4、mysqldump導出mysql備份:注意的是mysqldump在mysql的bin目錄執行才可以(windows)語法:
            mysqldump -uroot -p database_name table_name > c:\table.sql;
            導入命令用source,source命令在mysql的提示符下才可以執行。
            在mysqldump時可以指定其字符集,用--default-character-set=gbk
            -d(--no-data),表示只導出表結構,
            -t,說明只導出表數據,不到表結構;如果不加-d或者-t,默認導出表結構和表數據


            如果表的主鍵是自動增長型(AUTO_INCREMENT),在插入數據時,如果出現異常,表中
            AUTO_INCREMENT的值就會變一個很大的值,和你設置的這個類型的位數一樣寬,這些在插入時不報錯,
            只有在讀出時用才會發現;由于這些數據實際上是無效的,所以必須刪掉這些數據,然后
            修改表結構(用alter)將AUTO_INCREMENT設置成1,然后就可以正常插入數據


            root密碼管理設置root用戶的密碼mysqladmin -uroot password 'password'。
            修改root用戶的密碼mysqladmin -uroot -p password 'password'。
            數據庫,表管理進入mysqlmysql -h hostname -uroot -p。

            查看數據庫:mysql> show databases;
            進入某個庫:mysql> use location;
            查看表信息:mysql> show tables;
            查看表結構:mysql> desc Contact;
            改表名:mysql> rename table Contact to Contact_new。
            刪除庫:           mysql> drop database location。
            刪除表:         mysql> drop table Contact。
            授權部分建立用戶并授權:  mysql> grant all on location.* to gk1020@'10.1.11.71' identified by 'gk1020'。
            取消授權:        mysql> revoke all on location.* from gk1020@'10.1.11.71'
            刷新權限:        mysql> flush privileges。
            操作語句查詢:  mysql> select * from Contact。
                                 mysql> select count(*) from Contact。
            修改:              mysql> update Contact set RegTime=‘2008-01-01 00:00:00' where id=1。
                                 mysql> update Contact set RegTime=‘2008-01-01 00:00:00',CID=1 where id=1。
            插入:              mysql> insert into Contact values('',''…)
                                 mysql> insert into Contact(ID,CID,Contact) values('',''…)
            刪除:              mysql> delete from Contact where id=1。
            導出數據庫:locationmysqldump -uroot -p location >./location.sql。
            導出某個表:     mysqldump -uroot -p --database location --table Contact >./contact.sql。
            導出數據庫:     location的數據結構mysqldump -d -uroot -p location >./location.sql。
            復制表復制表:  Contact為Contact_bakmysql> create table Contact_bak as select * from Contact。
            復制表Contact的結構:mysql> create table Contact_bak as select * from Contact where 1=2。
            查看正在執行的任務:mysql> show processlist。 

            mysql db_name < data_file.sql

            執行完命令之后如果沒有任何提示,則說明我們的數據已經導入成功了(注意文件格式是date_file.sql, sql.gz在中文下會出錯) 。

            ———————–2008.12.9 update———————-

            有些時候你可能會遇到錯誤信息,說你的權限不夠,那我們就需要加一些參數了。

            mysql -hlocalhost -uusername -p db_name < data_file.sql

            這樣回車之后,就會有輸入密碼的提示,然后輸入你的數據庫密碼就可以導入了。

            參數-h是指定導入的服務器,-u是數據庫的用戶名,-p是登錄數據庫的密碼,這三個參數后面不用加空格。


            查看表結構:
            desc 表名;/*顯示表結構的基本信息,不包括注釋等*/
            show columns from 表名;
            describe 表名;
            show create table 表名;

             

            show full columns from tbName;   /*顯示列的所有詳細信息包括注釋等*/
            show create database(table) dbname;   /*顯示創建數據庫(表)語句*/

            mysql命令行下查看某個命令用?,例如
            ? data type    /*查看數據支持類型*/
            ? data definition  /*查看mysql自定義操作語句*/
            ? show      /*查看show命令相關說明*/

             

            一個table有id,name,content字段
            只導出content字段的所有記錄,怎么導?
            注意下面提高的導入和導出語句是在mysql的提示符下進行
            導入:select content from table_name into outfile "d:/test.sql";(如果是多個字段可以用逗號將其分開)
            導出:LOAD DATA INFILE 'd:/test.sql' INTO TABLE table_name (content);

             

            select count(*) as total from 表名

             

            SQLyog 連不上MySQL , ERROR NO.1045 簡單的解決方法 .
            1。停止MySQL服務:運行net stop mysql
            linux是/etc/init.d/mysql stop
             

            2。修改MySQL源文件夾中的my.ini,運用查找功能找到【mysqld】,在其下加上一行 skip-grant-tables,保存。
            linux下的配置文件是my.cnf,也要加上這一行skip-grand-tables。
             

            3。啟動MySQL服務:運行net start mysql
            linux下的啟動命令是/etc/init.d/mysql start

             

            SELECT   *   FROM   table   LIMIT   5;  顯示前五條
            select     *     from     issu_info     limit     7,6;      
            Limit     7,6       從第8條開始取,取6條

            在mysql中利用select語句的一個特性就可以很方便地實現查詢結果的分頁,select語句的語法:
            SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY]
            [DISTINCT | DISTINCTROW | ALL]
            select_expression,...
            [INTO OUTFILE 'file_name' export_options]
            [FROM table_references
            [WHERE where_definition]
            [GROUP BY col_name,...]
            [HAVING where_definition]
            [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...]
            [LIMIT [offset,] rows]
            [PROCEDURE procedure_name] ]

            查看版本:進入mysql命令行:\s 或status

            安裝mysql錯誤:
             MySQL 5.5.14
            – Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
            CMake Error at cmake/readline.cmake:82 (MESSAGE):
            Curses library not found. Please install appropriate package,

            remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
            Call Stack (most recent call first):
            cmake/readline.cmake:126 (FIND_CURSES)
            cmake/readline.cmake:216 (MYSQL_USE_BUNDLED_LIBEDIT)
            CMakeLists.txt:256 (MYSQL_CHECK_READLINE)

            – Configuring incomplete, errors occurred!

            如果你的系統是Ubuntu或Debian:

            apt-cache search ncurses

            apt-get install libncurses5-dev

            需要安裝ncurses-devel包--- apt-get install libncurses5-dev 或者sudo apt-get install libncurses5-dev

            libncurses5-dev is already the newest version.
            0 upgraded, 0 newly installed, 0 to remove and 250 not upgraded.

            提示已經是最新的了,不用更新

            linux下的mysql的配置文件:/etc/mysql/my.cnf

            linux下mysql的重啟:service mysql restart
            是否啟用了日志
            mysql>show variables like 'log_bin';

            怎樣知道當前的日志文件---具體的路徑在mysql的配置文件中
            mysql> show master status;

            查看從某一段時間到某一段時間的日志
             
            mysqlbinlog --start-datetime='2008-01-19 00:00:00' --stop-datetime='2008-01-30 00:00:00'  /var/log/mysql/mysql-bin.000006 > mysqllog1.log


            apt-get install mysql-devel命令提示如下”
            Reading package lists... Done
            Building dependency tree
            Reading state information... Done
            E: Unable to locate package mysql-dev
            解決方法:搜索aptitude search mysql | grep devel
            p   liblua5.1-sql-mysql-dev         - luasql development files for the Lua langu
            p   libmysql++-dev                  - MySQL C++ library bindings (development)
            i   libmysqlclient-dev              - MySQL database development files
            p   libmysqlcppconn-dev             - MySQL Connector for C++ (development files
            p   libmysqld-dev                   - MySQL embedded database development files
            p   libmysqld-pic                   - MySQL database development files
            然后apt-get install libmysqlclient-dev即可
            在g++時將-lmysqlclient寫入到Makefile文件中就可以了。

             

            mysql---1130錯誤解決辦法:原因是不允許遠程連接到這個數據庫
            在localhost的那臺電腦,登入mysql后,更改 “mysql” 數據庫里的 “user” 表里的 “host” 項,從”localhost”改稱”%”,重啟mysql服務-----windows下

            mysql -u root -p

            mysql>use mysql;

            mysql>update user set host = ‘%’ where user =’root’;

            mysql>flush privileges;

            mysql>select ‘host’,'user’ from user where user=’root’;

            上面這種方法雖然解決遠程訪問的問題,卻使得mysql主機的用戶無法登錄,所以下面的方法比較靠譜:

            授權法。例如,你想myuser使用mypassword從任何主機連接到mysql服務器的話。

            GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@'%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;

            如果你想允許用戶myuser從ip為192.168.1.3的主機連接到mysql服務器,并使用mypassword作為密碼

            GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@'192.168.1.3′ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;


            使用mysql 的use db_name的時候提示

            Reading table information for completion of table and column names. 
            You can turn off this feature to get a quicker startup with -A
            原因是由于數據庫太大,即數據庫中表非常多,所以如果預讀數據庫信息,將非常慢,所以就卡住了,如果數據庫中表非常少,將不會出現問題。
            改進方法:mysql -u name -p -A(表示不用預讀數據庫信息)

             mysql命令,加上\G:表示要換行顯示

            設置分頁顯示到屏幕:mysql> pager more或者pager less;

            pager后面能跟上grep(過濾),awkwc等常見的Unix bash shell
            pager實際上等于將它設置以后的所有mysql操作命令的輸出通過pager設置命令執行,類似于管道符的作用
            例如:當處理大量數據時,不想顯示查詢的結果,而只需知道查詢花費的時間。
            mysql> pager cat /dev/null;        //實際上等于后面執行的命令|cat /dev/null,這樣顯示結果就只是執行時間了
            PAGER set to 'cat /dev/null'
            例如:有大量連接,用show processlist看不方便,想看有多少Sleep狀態,則可以用pager。
            mysql> pager grep Sleep |wc -l;    
            PAGER set to 'grep Sleep |wc -l'
            mysql> show processlist; //類似于show processlist結果再通過grep Sleep |wc -l顯示;下面表示一共有2個連接,其中0個Sleep狀態的連接。
            0

            mysql> pager cat>/home/pw/osq.txt;將輸出發送到文件中
            less說明:
            退出:“:q”
            下一頁:“F”
            上一頁:“B”
            tee說明
            mysql>tee filename
            可以將之后在mysql的所有輸入輸出操作記錄到filename中。


            nopager命令:取消pager設置,恢復之前的輸出狀態。(如果不設置nopager,那么只能通過重啟mysql服務才能恢復了)

            mysql下實行系統命令:mysql>system clear;(執行系統下的清屏命令)
            MySQL不能啟動 mysql-bin.index' not found (Errcode: 13)
            原來是因為文件夾權限的問題。剛才新建的目錄binlogs是在root下面的。
            [root@XXXX mysql]# pwd
            /var/lib/mysql
            [root@XXXX mysql]# chown -R mysql:mysql binlogs
            [root@XXXX mysql]#
            [root@XXXX mysql]# /etc/init.d/mysql restart
            MySQL manager or server PID file could not be found!       [FAILED]
            Starting MySQL.                                            [  OK  ]
            SQL Server 多表更新方法(語法)
            //----------------------------------
            SQL Server語法:UPDATE { table_name WITH ( < table_hint_limited > [ ...n ] ) |
            view_name | rowset_function_limited } SET { column_name = { expression | DEFAULT
            | NULL } | @variable = expression | @variable = column = expression } [ ,...n ]
            { { [ FROM { < table_source > } [ ,...n ] ] [ WHERE < search_condition > ] } | [
            WHERE CURRENT OF { { [ GLOBAL ] cursor_name } | cursor_variable_name } ] } [
            OPTION ( < query_hint > [ ,...n ] ) ]
            MySql跨表更新 多表update sql語句  將select出來的部分數據update到另一個表里面
            update behavior_redman_count a
            inner join(
             select memberId,count(*) as followingCount from behavior_follow where type = 10
             and isDelete=0 group by memberId
            )b set a.followingCount =b.followingCount where a.redmanId = b.memberId;
            其他:
            //有條件的更新
            UPDATE t_player_baseinfo SET SID=(SELECT id from sg_gamedb.t_gameserver where id>0 LIMIT 1);
            //兩個表互聯更新(同時更新兩個表 如果兩個表的nick_name自動相同,則分別更新nick_name)
            UPDATE sg_gamedb1.t_player_baseinfo a INNER JOIN sg_gamedb2.t_player_baseinfo b on a.nick_name = b.nick_name set
            a.nick_name = CONCAT('[s',a.SID,']',a.nick_name),b.nick_name = CONCAT('[s',b.SID,']',b.nick_name);

            posted on 2011-10-16 09:52 Benjamin 閱讀(1116) 評論(0)  編輯 收藏 引用 所屬分類: 數據庫

            久久国产色AV免费看| 99久久国产亚洲高清观看2024 | 一本久久久久久久| 久久成人18免费网站| 日本久久中文字幕| 漂亮人妻被黑人久久精品| 精品久久一区二区| 久久精品国产亚洲av麻豆图片| AV色综合久久天堂AV色综合在| 精品无码久久久久久久动漫| 久久人人爽人人人人爽AV | 一本久道久久综合狠狠躁AV| 亚洲精品国精品久久99热一| 久久国产成人| 久久精品国产精品青草| 国产精品成人久久久| 99久久免费国产精品| 少妇人妻88久久中文字幕| 欧美国产精品久久高清| 97r久久精品国产99国产精| 狠狠色丁香久久婷婷综合图片| 亚洲国产精品久久66| 久久精品国产亚洲AV无码麻豆| 怡红院日本一道日本久久| 欧美精品乱码99久久蜜桃| 久久AAAA片一区二区| 久久精品国产亚洲综合色| 久久久久无码精品国产| 久久99热这里只有精品国产| 久久久久亚洲?V成人无码| 99久久精品国产综合一区| 久久综合综合久久狠狠狠97色88 | 欧美777精品久久久久网| 久久综合给久久狠狠97色| 久久中文字幕人妻丝袜| 无码任你躁久久久久久久| 久久久久久久国产免费看| 久久93精品国产91久久综合| 99久久国产免费福利| 激情综合色综合久久综合| 久久电影网|