登陸:mysql -uroot -p u表示用戶,p表示密碼
show variables like 'character\_set\_%';
latin1_bin
西歐 (多語(yǔ)言), 二進(jìn)制
binary
二進(jìn)制
1.查看和清除mysql日志
如果想要關(guān)閉二進(jìn)制mysql日志,可以在my.ini里把log-bin這行注釋掉
要清二進(jìn)制日志的話,在mysql開(kāi)啟了二進(jìn)制日志的狀態(tài)下,以root身份登錄mysql以后執(zhí)行下面兩個(gè)命令之一:
PURGE MASTER LOGS before '2020-1-1'; 清除指定日期之前的二進(jìn)制日志
PURGE MASTER LOGS TO 'mysql-bin.010'; 清除指定文件編號(hào)之前的二進(jìn)制日志
注意,如果沒(méi)運(yùn)行命令而是直接刪除mysql-bin.xxx文件的話,mysql-bin.index里仍然記錄了日志文件列表,這樣以后再清日志時(shí),就會(huì)因找不到列表中的日志文件而無(wú)法清理mysql日志
可以用bin目錄中的mysqlbinlog.exe查看mysql二進(jìn)制日志。
C:\>mysqlbinlog mysql-bin.000001
如果my.ini中設(shè)置了字符集的話,可能會(huì)出現(xiàn)這以下這樣的報(bào)錯(cuò)
mysqlbinlog: unknown variable 'default-character-set=gbk'
帶上--no-defaults參數(shù)后即可解決
C:\>mysqlbinlog --no-defaults mysql-bin.000001
如果是要清理*.err日志的話,直接停止mysql數(shù)據(jù)庫(kù),將這個(gè)文件剪切走或者刪除,重啟mysql生成一個(gè)新的即可。
.err文件中實(shí)際是以文本方式保存的錯(cuò)誤提示,可以直接用記事本打開(kāi)查看。
2.清空某個(gè)mysql表中所有內(nèi)容
delete from 表名;
truncate table 表名;
不帶where參數(shù)的delete語(yǔ)句可以刪除mysql表中所有內(nèi)容,使用truncate table也可以清空mysql表中所有內(nèi)容。效率上truncate比delete快,但truncate刪除后不記錄mysql日志,不可以恢復(fù)數(shù)據(jù)。
delete的效果有點(diǎn)像將mysql表中所有記錄一條一條刪除到刪完,而truncate相當(dāng)于保留mysql表的結(jié)構(gòu),重新創(chuàng)建了這個(gè)表,所有的狀態(tài)都相當(dāng)于新表。
3.查看編碼
查看數(shù)據(jù)庫(kù)的字符集 show variables like 'character\_set\_%';
latin1_bin
西歐 (多語(yǔ)言), 二進(jìn)制
binary
二進(jìn)制
mysql>create database mydb character set utf-8;#直接指定其編碼
直接通過(guò)命令進(jìn)行修改
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 |
+--------------------------+--------+
/*查詢當(dāng)前數(shù)據(jù)庫(kù)默認(rèn)字符設(shè)置*/
show variables like 'char%';
/*查詢當(dāng)前數(shù)據(jù)庫(kù)默認(rèn)的校驗(yàn)字符集*/
show variables like 'collation%'
結(jié)果全部都調(diào)整修改成UTF-8了!
MySQL字符集編碼的類型種類
gb2312_chinese_ci和gbk_chinese_ci以及gb2312_bin,gbk_bin的區(qū)別
gb2312_chinese_CI : 只支持簡(jiǎn)體中文
gb2312_BIN :而gb2312_bin可以說(shuō)是gb2312_chinese_ci的一個(gè)子集,
而且gb2312_BIN是二進(jìn)制存儲(chǔ).區(qū)分大小寫(xiě)數(shù)據(jù)庫(kù)編碼格式就意義不一樣了
gbk_chinese_CI 支持簡(jiǎn)體中文和繁體
gbk_bin 解釋同gb2312_BIN 對(duì)應(yīng)gbk_chinese_CI
PS:GBK包括了簡(jiǎn)體與繁體兩種類型
查看數(shù)據(jù)庫(kù)表中字段的字符集設(shè)置-----------show create table TableName 或 show full columns from tableName
查看數(shù)據(jù)庫(kù)的編碼格式---------------------show create database test;
修改數(shù)據(jù)庫(kù)的字符集
mysql>use mydb
mysql>alter database mydb character set utf-8;
4、mysqldump導(dǎo)出mysql備份:注意的是mysqldump在mysql的bin目錄執(zhí)行才可以(windows)語(yǔ)法:
mysqldump -uroot -p database_name table_name > c:\table.sql;
導(dǎo)入命令用source,source命令在mysql的提示符下才可以執(zhí)行。
在mysqldump時(shí)可以指定其字符集,用--default-character-set=gbk
-d(--no-data),表示只導(dǎo)出表結(jié)構(gòu),
-t,說(shuō)明只導(dǎo)出表數(shù)據(jù),不到表結(jié)構(gòu);如果不加-d或者-t,默認(rèn)導(dǎo)出表結(jié)構(gòu)和表數(shù)據(jù)
如果表的主鍵是自動(dòng)增長(zhǎng)型(AUTO_INCREMENT),在插入數(shù)據(jù)時(shí),如果出現(xiàn)異常,表中
AUTO_INCREMENT的值就會(huì)變一個(gè)很大的值,和你設(shè)置的這個(gè)類型的位數(shù)一樣寬,這些在插入時(shí)不報(bào)錯(cuò),
只有在讀出時(shí)用才會(huì)發(fā)現(xiàn);由于這些數(shù)據(jù)實(shí)際上是無(wú)效的,所以必須刪掉這些數(shù)據(jù),然后
修改表結(jié)構(gòu)(用alter)將AUTO_INCREMENT設(shè)置成1,然后就可以正常插入數(shù)據(jù)
root密碼管理設(shè)置root用戶的密碼mysqladmin -uroot password 'password'。
修改root用戶的密碼mysqladmin -uroot -p password 'password'。
數(shù)據(jù)庫(kù),表管理進(jìn)入mysqlmysql -h hostname -uroot -p。
查看數(shù)據(jù)庫(kù):mysql> show databases;
進(jìn)入某個(gè)庫(kù):mysql> use location;
查看表信息:mysql> show tables;
查看表結(jié)構(gòu):mysql> desc Contact;
改表名:mysql> rename table Contact to Contact_new。
刪除庫(kù): mysql> drop database location。
刪除表: mysql> drop table Contact。
授權(quán)部分建立用戶并授權(quán): mysql> grant all on location.* to gk1020@'10.1.11.71' identified by 'gk1020'。
取消授權(quán): mysql> revoke all on location.* from gk1020@'10.1.11.71'。
刷新權(quán)限: mysql> flush privileges。
操作語(yǔ)句查詢: 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。
導(dǎo)出數(shù)據(jù)庫(kù):locationmysqldump -uroot -p location >./location.sql。
導(dǎo)出某個(gè)表: mysqldump -uroot -p --database location --table Contact >./contact.sql。
導(dǎo)出數(shù)據(jù)庫(kù): location的數(shù)據(jù)結(jié)構(gòu)mysqldump -d -uroot -p location >./location.sql。
復(fù)制表復(fù)制表: Contact為Contact_bakmysql> create table Contact_bak as select * from Contact。
復(fù)制表Contact的結(jié)構(gòu):mysql> create table Contact_bak as select * from Contact where 1=2。
查看正在執(zhí)行的任務(wù):mysql> show processlist。
mysql db_name < data_file.sql
執(zhí)行完命令之后如果沒(méi)有任何提示,則說(shuō)明我們的數(shù)據(jù)已經(jīng)導(dǎo)入成功了(注意文件格式是date_file.sql, sql.gz在中文下會(huì)出錯(cuò)) 。
———————–2008.12.9 update———————-
有些時(shí)候你可能會(huì)遇到錯(cuò)誤信息,說(shuō)你的權(quán)限不夠,那我們就需要加一些參數(shù)了。
mysql -hlocalhost -uusername -p db_name < data_file.sql
這樣回車之后,就會(huì)有輸入密碼的提示,然后輸入你的數(shù)據(jù)庫(kù)密碼就可以導(dǎo)入了。
參數(shù)-h是指定導(dǎo)入的服務(wù)器,-u是數(shù)據(jù)庫(kù)的用戶名,-p是登錄數(shù)據(jù)庫(kù)的密碼,這三個(gè)參數(shù)后面不用加空格。
查看表結(jié)構(gòu):
desc 表名;/*顯示表結(jié)構(gòu)的基本信息,不包括注釋等*/
show columns from 表名;
describe 表名;
show create table 表名;
show full columns from tbName; /*顯示列的所有詳細(xì)信息包括注釋等*/
show create database(table) dbname; /*顯示創(chuàng)建數(shù)據(jù)庫(kù)(表)語(yǔ)句*/
mysql命令行下查看某個(gè)命令用?,例如
? data type /*查看數(shù)據(jù)支持類型*/
? data definition /*查看mysql自定義操作語(yǔ)句*/
? show /*查看show命令相關(guān)說(shuō)明*/
一個(gè)table有id,name,content字段
只導(dǎo)出content字段的所有記錄,怎么導(dǎo)?
注意下面提高的導(dǎo)入和導(dǎo)出語(yǔ)句是在mysql的提示符下進(jìn)行
導(dǎo)入:select content from table_name into outfile "d:/test.sql";(如果是多個(gè)字段可以用逗號(hào)將其分開(kāi))
導(dǎo)出:LOAD DATA INFILE 'd:/test.sql' INTO TABLE table_name (content);
select count(*) as total from 表名
SQLyog 連不上MySQL , ERROR NO.1045 簡(jiǎn)單的解決方法 .
1。停止MySQL服務(wù):運(yùn)行net stop mysql
linux是/etc/init.d/mysql stop
2。修改MySQL源文件夾中的my.ini,運(yùn)用查找功能找到【mysqld】,在其下加上一行 skip-grant-tables,保存。
linux下的配置文件是my.cnf,也要加上這一行skip-grand-tables。
3。啟動(dòng)MySQL服務(wù):運(yùn)行net start mysql
linux下的啟動(dòng)命令是/etc/init.d/mysql start
SELECT * FROM table LIMIT 5; 顯示前五條
select * from issu_info limit 7,6;
Limit 7,6 從第8條開(kāi)始取,取6條
在mysql中利用select語(yǔ)句的一個(gè)特性就可以很方便地實(shí)現(xiàn)查詢結(jié)果的分頁(yè),select語(yǔ)句的語(yǔ)法:
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] ]
查看版本:進(jìn)入mysql命令行:\s 或status
安裝mysql錯(cuò)誤:
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!
如果你的系統(tǒng)是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.
提示已經(jīng)是最新的了,不用更新
linux下的mysql的配置文件:/etc/mysql/my.cnf
linux下mysql的重啟:service mysql restart
是否啟用了日志
mysql>show variables like 'log_bin';
怎樣知道當(dāng)前的日志文件---具體的路徑在mysql的配置文件中
mysql> show master status;
查看從某一段時(shí)間到某一段時(shí)間的日志
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++時(shí)將-lmysqlclient寫(xiě)入到Makefile文件中就可以了。
mysql---1130錯(cuò)誤解決辦法:原因是不允許遠(yuǎn)程連接到這個(gè)數(shù)據(jù)庫(kù)
在localhost的那臺(tái)電腦,登入mysql后,更改 “mysql” 數(shù)據(jù)庫(kù)里的 “user” 表里的 “host” 項(xiàng),從”localhost”改稱”%”,重啟mysql服務(wù)-----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’;
上面這種方法雖然解決遠(yuǎn)程訪問(wèn)的問(wèn)題,卻使得mysql主機(jī)的用戶無(wú)法登錄,所以下面的方法比較靠譜:
授權(quán)法。例如,你想myuser使用mypassword從任何主機(jī)連接到mysql服務(wù)器的話。
GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@'%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
如果你想允許用戶myuser從ip為192.168.1.3的主機(jī)連接到mysql服務(wù)器,并使用mypassword作為密碼
GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@'192.168.1.3′ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
使用mysql 的use db_name的時(shí)候提示
Reading table information for completion of table and column names.
You can turn off this feature to get a quicker startup with -A
原因是由于數(shù)據(jù)庫(kù)太大,即數(shù)據(jù)庫(kù)中表非常多,所以如果預(yù)讀數(shù)據(jù)庫(kù)信息,將非常慢,所以就卡住了,如果數(shù)據(jù)庫(kù)中表非常少,將不會(huì)出現(xiàn)問(wèn)題。
改進(jìn)方法:mysql -u name -p -A(表示不用預(yù)讀數(shù)據(jù)庫(kù)信息)
mysql命令,加上\G:表示要換行顯示
設(shè)置分頁(yè)顯示到屏幕:mysql> pager more或者pager less;
pager后面能跟上grep(過(guò)濾),awk,wc等常見(jiàn)的Unix bash shell
pager實(shí)際上等于將它設(shè)置以后的所有mysql操作命令的輸出通過(guò)pager設(shè)置命令執(zhí)行,類似于管道符的作用
例如:當(dāng)處理大量數(shù)據(jù)時(shí),不想顯示查詢的結(jié)果,而只需知道查詢花費(fèi)的時(shí)間。
mysql> pager cat /dev/
null
; //實(shí)際上等于后面執(zhí)行的命令|cat /dev/
null
,這樣顯示結(jié)果就只是執(zhí)行時(shí)間了
PAGER
set
to
'cat /dev/null'
例如:有大量連接,用show processlist看不方便,想看有多少Sleep狀態(tài),則可以用pager。
mysql> pager grep Sleep |wc -l;
PAGER
set
to
'grep Sleep |wc -l'
mysql> show processlist; //類似于show processlist結(jié)果再通過(guò)grep Sleep |wc -l顯示;下面表示一共有2個(gè)連接,其中0個(gè)Sleep狀態(tài)的連接。
0
mysql> pager cat>/home/pw/osq.txt;將輸出發(fā)送到文件中less說(shuō)明:
退出:“:q”
下一頁(yè):“F”
上一頁(yè):“B”
tee說(shuō)明
mysql>tee filename
可以將之后在mysql的所有輸入輸出操作記錄到filename中。
nopager命令:取消pager設(shè)置,恢復(fù)之前的輸出狀態(tài)。(如果不設(shè)置nopager,那么只能通過(guò)重啟mysql服務(wù)才能恢復(fù)了)
mysql下實(shí)行系統(tǒng)命令:mysql>system clear;(執(zhí)行系統(tǒng)下的清屏命令)
MySQL不能啟動(dòng) mysql-bin.index' not found (Errcode: 13)
原來(lái)是因?yàn)槲募A權(quán)限的問(wèn)題。剛才新建的目錄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 多表更新方法(語(yǔ)法)
//----------------------------------
SQL Server語(yǔ)法: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語(yǔ)句 將select出來(lái)的部分?jǐn)?shù)據(jù)update到另一個(gè)表里面
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);
//兩個(gè)表互聯(lián)更新(同時(shí)更新兩個(gè)表 如果兩個(gè)表的nick_name自動(dòng)相同,則分別更新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);