mysql使用方法_Mysql的常用用法
一、mysql中limit的用法詳解[數據分頁常用]
在我們使用查詢語句的時候,經常要返回前幾條或者中間某幾行數據,這個時候怎么辦呢?不用擔心,mysql已經為我們提供了這樣一個功能。
SELECT?*?FROM?table??LIMIT?[offset,]?rows?|?rows?OFFSET?offset
LIMIT 子句可以被用于強制 SELECT 語句返回指定的記錄數。LIMIT 接受一個或兩個數字參數。參數必須是一個整數常量。如果給定兩個參數,第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的最大數目。初始記錄行的偏移量是 0(而不是 1): 為了與 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。
mysql>?SELECT?*?FROM?table?LIMIT?5,10;??//?檢索記錄行?6-15
//為了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個參數為?-1:?
mysql>?SELECT?*?FROM?table?LIMIT?95,-1;?//?檢索記錄行?96-last.
//如果只給定一個參數,它表示返回最大的記錄行數目:?
mysql>?SELECT?*?FROM?table?LIMIT?5;?????//檢索前?5?個記錄行
//換句話說,LIMIT?n?等價于?LIMIT?0,n。
二、mysql中sql文件的編輯和如何導入導出sql文件
1、MYSQL中SQL文件的編輯:
隨便使用一種編輯器都可以編輯,保存的sql文件后綴為:.sql。
sql中的內容參考下面例子,創建數據庫 : job5db
DROP DATABASE IF EXISTSjob5db;CREATE DATABASE job5db DEFAULT CHARACTER SETutf8;USEjob5db;
##創建用戶表CREATE TABLEt_user (user_id INT AUTO_INCREMENT PRIMARY KEY,user_name VARCHAR(30),
passwordVARCHAR(32)
)ENGINE=InnoDB;
##創建投票記錄表CREATE TABLEt_vote (
vote_idINT AUTO_INCREMENT PRIMARY KEY,
vote_topicVARCHAR(30),
vote_stateVARCHAR(10),
vote_max_can_selectINT,
vote_total_countINT,
vote_total_option_countINT,
create_timetimestamp defaultnow(),
start_timedatetime,
end_timedatetime)ENGINE=InnoDB;
##創建投票項表CREATE TABLEt_option (
option_idINT AUTO_INCREMENT PRIMARY KEY,
option_nameINT,
option_countVARCHAR(23),
vote_idINT,foreign key(vote_id) referencest_vote(vote_id)
)ENGINE=InnoDB;
##插入初始化數據INSERT INTO t_user (user_name,password)VALUES('admin','123456');COMMIT;
View Code
2.從SQL文件中導入數據到MYSQL中:
1>首先,我們應該在cmd中進入mysql指令界面中,格式很簡單 ,就是 ?mysql -u[用戶名] -h[主機所在地址,默認不寫是localhost] -p? ?然后輸入密碼即可
2>直接使用source [所在的路徑//*.sql]將SQL文件進行導入,接下來就會輸出一大串的Query OK之類的信息了。
3、MYSQL中將數據庫導出成SQL文件:
其實很簡單的,就是一條語句就可以了,首先我們打開cmd,不用進mysql指令界面,直接按照下列格式將導出語句敲進去,然后再輸入密碼即可了:
mysqldump -h[主機所在IP] -u[用戶名] -p [要導出的數據庫]>[導出的路徑//[文件名].sql]
好吧,直接這樣看可能有點抽象,我們來舉個例子,目前我的MYSQL中有一個數據庫bookinfodb,現在我要將它導出并且保存到D盤中。
這個時候我們再到D盤目錄下,我們就可以看到多了一個test.sql文件了
三、Mysql獲取表中最后一行記錄的語句?
排序后取得第一條記錄
SELECT?*?FROM?tb?ORDER?BY?id?DESC?LIMIT?1
【注】在JDBC中有可以在執行時,取得插入時產生的主鍵:
1 //方法一:
2 long key =-1L;3 Statement statement =connection.createStatement();4 statement.executeUpdate(YOUR_SQL_HERE,Statement.RETURN_GENERATED_KEYS);5 ResultSet rs =statement.getGeneratedKeys();6 if(rs !=null&&rs.next()){7 key = rs.getLong(1);8 }9
10 //方法二:
11 PreparedStatement ps =con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);12 statement.executeUpdate();13 ResultSet rs =statement.getGeneratedKeys();14 //方法三:下面這種可精確取得某個字段
15 PreparedStatement ps = con.prepareStatement(sql, new String[]{"USER_ID"})
四、MySQL級聯刪除和更新
首先,目前在產品環境可用的MySQL版本(指4.0.x和4.1.x)中,只有InnoDB引擎才允許使用外鍵,所以,我們的數據表必須使用InnoDB引擎。
下面,我們先創建以下測試用數據庫表:
CREATE TABLE`roottb` (
`id`INT(11) UNSIGNED AUTO_INCREMENT NOT NULL,
`data`VARCHAR(100) NOT NULL DEFAULT '',PRIMARY KEY(`id`)
) TYPE=InnoDB;CREATE TABLE`subtb` (
`id`INT(11) UNSIGNED AUTO_INCREMENT NOT NULL,
`rootid`INT(11) UNSIGNED NOT NULL DEFAULT '0',
`data`VARCHAR(100) NOT NULL DEFAULT '',PRIMARY KEY(`id`),INDEX(`rootid`),FOREIGN KEY (`rootid`) REFERENCES roottb(`id`) ON DELETE CASCADE) TYPE=InnoDB;
View Code
注意:
1、必須使用InnoDB引擎;
2、外鍵必須建立索引(INDEX);
3、外鍵綁定關系這里使用了“?ON?DELETE?CASCADE”,意思是如果外鍵對應數據被刪除,將關聯數據完全刪除,更多信息請參考MySQL手冊中關于InnoDB的文檔;
五、mysql update語句問題:You can't specify target table 'user' for update in FROM clause
原因是mysql不支持從選擇的表再去修改,所以構造個臨時表來解決問題
Error Code: 1093. You can't specify target table 'ws_product' for update in FROM clause
這個是我們在使用update或者delete語句時,在where條件里面加入的子查詢導致的。例如如下的update語句:
update product?set type = 'static' where id in (
select id from product where first_name ='superman'
);
修改上述語句為下面這樣,該問題可以解決:
update ws_product set type = 'static' where id in (
select id form (
select id from ws_product where first_name ='superman'
) xx
);
注意,這樣一定要給最里面的子查詢定義一個別名,不然會報另外一個錯誤:
Error Code: 1248. Every derived table must have its own alias
總結
以上是生活随笔為你收集整理的mysql使用方法_Mysql的常用用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell 删除了hdfs 文件,在HD
- 下一篇: mysql事务实战_mysql事务隔离级