登陸: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(過濾),awk,wc等常見的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);