Mysql 5.7 系列命令 timestamp類型的字段不能設默認值為“0000-00-00 00:00:00” 要設為`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新',


一.show相關命令語句

1.查看表的索引
 show index from tbl_name;
  • 1
  • table:表名
  • non_unique:索引是非唯一的?。0否,唯一是索引的。1是,是非唯一索引。(ps:這讓我想起了令我自掛東南枝的英語)
  • key_name:索引名稱
  • seq_in_index: 索引中的起始序列號
  • column_name:創建索引的名稱
  • collation:列以什么形式存儲在索引中,A升序,null不排序
2.顯示系統變量
show session variables [like ''] //查詢會話變量, show global variables [like ''] //查詢全局變量 
  • 1
3.查詢數據庫|表|表字段
show databases , show tables [from db_name], show columns from tab_name
  • 1
4 查看數據庫引擎相關
show engines  //查看msql支持的所有數據庫存儲引擎
  • 1
  • engine:存儲引擎的名字
  • support: mysql是否支持該引擎。default 默認使用,yes 支持, no不支持。
  • transactions:該引擎是否支持事務,yes 支持 no不支持
  • savepoints: 是否支持回滾點,yes 支持 no不支持
5查看狀態信息
show table status \G;//查看某個數據庫下所有表的狀態信息,所以第一步需要use dbName
  • 1
  • name:表名
  • engine:該表使用的存儲引擎。默認innodb
  • rows:行數。對於使用支持事務的引擎,該值不准確。所以一般該值不准確
  • update_time:修改時間
  • create_time:創建時間
  • data-length:表的數據長度(bytes) 。
  • avg_row_length:平均每行數據長度(bytes)同上不准確
  • Auto_increment::下一個序列的值
  • Collation:字符集

show status [like ’ ‘]查看mysql服務的狀態信息。mysql優化經常用到該命令。信息比較多,請參考

6顯示觸發器
show triggers [{from|in} db_name] [like 'pattern' |where expr]//顯示某個數據庫或者當前數據庫下的所有的觸發器,可以使用like 或where進行過濾
  • 1
  • 2
7 顯示數據庫或對象的創建
show create {table tal_name | function fun_name | procedure proc_name | trigger name | user user_name@host | view view_name | db_name}
  • 1
mysql> show create table student\G; *************************** 1. row ***************************  Table: student  Create Table: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, `sex` varchar(2) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

二.用戶管理

1.修改密碼

  • set password for '用戶名'@'主機名' =password('新密碼');
  • alter user 'userName'@'host' identified by 'newPassword';
  • update mysql.user set authentication_string=password('新密碼') where user='用戶名';
mysql> set password for 'root'@'localhost'=password('111111'); Query OK, 0 rows affected, 1 warning (0.22 sec)
  • 1
  • 2

2.添加用戶

CREATE USER [IF NOT EXISTS] user identified by 'password'
  • 1

3.刪除用戶

drop user 'user_name'@'localhost' //drop user 'test'@'localhost'
  • 1

4.查詢用戶

select * from mysql.user\G; //查詢所有用戶
  • 1

三.實用

1.查詢表結構

{describe| desc} tbl_name [col_name]
  • 1

2.語句分析

explain  statemnt_expr  
  • 1

mysql數據語句優化經常用到該命令。一般優化的原則便是盡可能用到索引經可能避免表的全部掃描。詳細內容可以參考

四.內置函數

1.日期類
1)查詢當前時間日期
  • now() 獲取 當前日期和時間 //2018-04-12 18:18:57
  • curdate() 當前日期,///2018-04-12
  • curtime() 當前時間 //18:18:57
  • current_time() ; //同curtime(),current_time
  • current_date() ; // 同curdate(),current_date
  • current_timestamp() //同now()
    內置函數的比較
2)時間戳
  • unix_timestamp([date]) 將日期轉化為時間戳,參數可以不寫默認now()
    • date 可以是日期時間類型 也可以是時間字符串 ‘2018-2-12’
    mysql> select from_unixtime(unix_timestamp('2018:4:8')); +------------------------------------------------+ | from_unixtime(unix_timestamp('2018:4:8')) | +------------------------------------------------+ | 2018-04-08 00:00:00 |
  • 1
  • 2
  • 3
  • 4
  • 5
  • from_unixtime(timestamp [,format]) 根據format格式化時間戳
    • timestamp : 時間戳即 UNIX_TIMESTAMP()
    • format 格式化表達式。使用format參數后返回的結果是字符串。常用的時間格式化占位符如下更多參數請參考,
      • %Y 年,四位數字
      • %y 年,后兩位數字
      • %m 月 ,數字[1-12]
      • %d 日,月份里的第幾天,兩位數字[1-31]
      • %H 小時,24進制 [0-23]
      • %h 小時,12進制[0-11]
      • %i 分鍾 [0-59]
      • %s | %S 秒 0-59

這里寫圖片描述

3)時間截取(返回對應的日期,時間或者數字)
  • date(expr) // 如果解析失敗返回Null,返回日期類型date
  • time(expr) //返回時間類型 time
  • timestamp(exper,format) //返回混合日期和時間,datetime 類型
  • year(expr) //返回數字
  • month(expr)//返回數字【1-12】
  • day(expr) //返回數字【1-31】
  • hour(expr) //返回數字【0-23】
  • minute(expr) //返回數字【0-59】
  • last_day(date) //返回最后一天 ,返回date類型 //2018-04-30
  • to_days(expr) //返回到公元0年一月一日的總天數
    expr :時間字符串,日期字符串或者日期時間類型。
    對於截取年,月,日,時,分,秒返回的都是對應的字符串,因為時間日期類型mysql 本身就只提供了date,time ,datetime,timestamp,year這五種類型

    select date(now()),time('2018-04-19 11:10:11'),year(now()),to_days(now()); 2018-04-19 11:10:11 2018 737168
    • 1
    • 2
日期操作
  • ADDDATE(date,INTERVAL expr unit)
    • date 要操作的日期,可以是日期類型也可以是日期字符串
    • INTERVAL: MySQL關鍵字 ,意思是間隔,間隙
    • unit 操作的單元,年,月,日,時,分,秒對應YEAR,MONTH,DAY,HOUR,MINUTE,SECOND
    • expr 想要增加或減少的時間單位。expr>0,增加,expr<0減少
      -DATE_ADD(date,INTERVAL expr unit)類似ADDDATE()
  • ADDTIME(expr1,expr2) 時間相加 expr1+expr2
    這里寫圖片描述
  • SUBDATE(date,INTERVAL expr unit)DATE_SUB(date,INTERVAL expr unit)
  • DATEDIFF(expr1, expr2) 計算兩個表達式之間的時間差(expr1-expr2 )天,
SELECT DATEDIFF( '2018-4-23', '2018-4-12 12:12:23'), DATEDIFF( now(), DATE_ADD(now(), INTERVAL 12 DAY) ) 11 -12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
日期時間類型和其他類型轉換
  • DATE_FORMAT(date,format) //轉為字符串 跟 from_unixtime(timestamp,format)類似
  • TIME_FORMAT(date,format) //只能轉化時間,不能轉化日期
select DATE_FORMAT(now(),'%Y-%m-%d %H:%i-%s'),TIME_FORMAT(now(),'%Y-%m-%d %H:%i-%s'); 2018-04-23 15:15-26 0000-00-00 15:15-26
  • 1
  • 2

五數據庫備份與恢復

msqldump備份

msqldump可以用數據的備份,其有兩種方式的輸出,取決於是否使用 –tab。

不使用 –tab,會保存數據和表的創建語句保存到一個文件中
使用–tab,會為每個備份的表生成兩份文件,一份是數據(tal_name.text),一份是表的創建語句(tal_name.sql)

ps:查看表的創建可以使用show create tab_name

語法: mysqldump [arguments]
  • 1
-h ,--host=hostName 連接的主機,默認127.0.0.1 -p ,--port=port 服務的端口號,默認3306 -u ,--user=username 用戶名 -p ,--password[=password] 密碼,可以直接寫在命令行 -B ,--databases db1[db2] 備份的數據庫,單個數據庫的話可以省略 --add-drop-database 在執行create database 之前執行drop database --add-drop-table 執行create table之前先執行drop table,默認使用 --skip-add-drop-table 每次create table之前不執行drop table
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
1)不使用–tab

備份指定的數據庫

mysqldump -u用戶名 -p[密碼] [--databases db1,db2] > 輸出文件路徑 msqldump -uroot -p [--databases]test >E:\test.text //將test備份到本地E:\test.text文件下 ,因為至備份一個數據庫,所以--databases可以省略
  • 1
  • 2
  • 3

備份所有數據庫

mysqldump -u用戶名 -p[密碼] --all-databases >輸出文件路徑 
  • 1

備份某個數據庫下的表

mysqldump  -uroot -p test --tables user address> E:\tables_backup.sql //備份test數據庫下的user表,address表到本地
  • 1
  • 2
2)使用–tab
mysqldump -uroot -p --tab=文件保存目錄
  • 1

使用上面的命令可能會出現以下錯誤提示:

mysqldump: Got error: 1290: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement when executing 'SELECT INTO OUTFILE'
  • 1

使用 mysqld --verbose --help可以查看具體用法
–secure-file-priv=name
Limit LOAD DATA, SELECT … OUTFILE, and LOAD_FILE() to
files within specified directory
同時會看到secure-file-priv NULL,所以啟動在mysql配置文件my.ini下添加
secure-file-priv =再起啟動mysqld就可以了。詳情請參考

恢復

1.

mysql -u用戶名 -p < 文件路徑 mysql -uroot -p < E:\text.text
  • 1
  • 2
  • 3

2.

msql> source 文件路徑 //該方式需要先登陸,在導數據


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM