Pages

顯示具有 SQL 標籤的文章。 顯示所有文章
顯示具有 SQL 標籤的文章。 顯示所有文章

2016年6月23日 星期四


win mysql cmd 匯出入 table

匯出一個表
#mysqldump -u 使用者名 -p 資料庫名 表名> 匯出的檔案名


建立資料庫名為test
#CREATE DATABASE test;
成功的話會出現:Query OK, 0 rows affected (0.00sec)

使用test資料庫(轉換資料庫為特定的資料庫)
#USE test;
成功的話會出現:Database changed

將本機c槽內的test.sql匯入(要完整path)
#SOURCE c:\test.sql;
成功的話會出現:
Query OK, 0 rows affected (0.00sec)
Query OK, 0 rows affected (0.00sec)


2016年1月14日 星期四


mysql FLOAT 與 DECIMAL

「FLOAT」和「DOUBLE」型態的欄位可以用來儲存包含小數的數值,儲存空間分別是4和8個位元組,它們是一種佔用儲存空間比較小,執行運算比較快的型態。不過因為它們是使用「近似值」來儲存你的數值,所以如果你需要儲存完全精準的數值,就不能使用這兩種型態。

另外一種可以儲存小數數值的「DECIMAL」型態就可以用來儲存完全精準的數值,儲存在這個型態中的數值,不論是查詢或是運算,都不會有任何誤差,不過「DECIMAL」型態佔用的儲存空間就比「FLOAT」和「DOUBLE」型態大。「DECIMAL」型態在MySQL還有一個一樣的關鍵字是「NUMERIC」,這兩種型態完全一樣。

2014年9月25日 星期四


win 2003 mysql 安裝出現error 1045

mysql安裝出現error Nr.1045
我們在windows下安裝mysql時會出現Access denied for user 'root'@localhost'(using password:No)的問題,這個問題是因為你的機器上之前安裝過mysql,或者這 一次安裝配置了新密碼,進入應用的最後一步時候由於某些原因卡出了或者由於服務未啟動等原因導致無法配置成功,最終結果是,配置未成功,密碼設置已經保存 進去了。這樣我們調整好了服務等原因後,進行重新配置的時候,會發現在設置密碼的時候,多了一個舊密碼輸入框。其實這也沒什麼,在密碼知道的情況下,輸入 舊密碼重新設置密碼並不難,而問題關鍵在於即使舊密碼正確,你依舊無法完成配置,在最後一個環節密碼認證的時候又出錯了,出錯原因是密碼問題,提示舊密碼 不對。


2014年3月21日 星期五


ubuntu 12.04 安裝Apache+PHP+Mysql+phpmyadmin

ubuntu 12.04 安裝Apache+PHP+Mysql+phpmyadmin

一.安裝Apache
apt-get install apache2
之後輸入網址會出現it works
sudo a2enmod rewrite #若有需要,自行開啟mod_rewrite(可用於防範Dos攻擊)
sudo a2enmod proxy_http #若有需要,自行開啟proxy_http
sudo a2enmod proxy_balancer #若有需要,自行開啟proxy_balancer
Apache設定檔:/etc/apache2/apache2.conf

2012年9月4日 星期二


每日一SQL-善用DATEADD和DATEDIFF

轉自 http://www.dotblogs.com.tw/lastsecret/archive/2010/10/04/18097.aspx
ps: SQL語法查詢
day(), month(),year() 
ex:
SELECT * FROM 資料表 WHERE  DATEADD(DAY, DATEDIFF(DAY, 0,  時間欄位  ), 0)='2012/09/04'
取資料型態為datetime的欄位==2012/09/04 (不含時間)
-------------------------------------------------------------------
上個星期去Tech-Day聽了幾場有趣的課,其中一堂是楊志強老師的
"深入了解T-SQL",講的很棒,雖然是第一堂八點四十的課,但講得很精采,讓我越聽越有精神。
今天來寫一個當天的範例,應該很多人看過,但我覺得語法滿有趣的。
用DATEADD及DATEDIFF組合起來,可以算出一季或是一個月的最後一天等等…

首先先分別來說明DATEADD及DATEDIFF
DATEDIFF是算兩個日期間的間隔,傳回帶正負號的整數
DATEDIFF ( datepart , startdate , enddate )
datepart為間隔的單位,startdate跟enddate應該看字面的意思就知道了吧。
因此如果語法寫
SELECT DATEDIFF(DAY, '2010-10-03','2010-10-04' )
出來的結果就是 1,代表相隔一天。

DATEADD是計算某日期加上一個數值,傳回的日期
DATEADD (datepart , number , date )
datepart一樣是單位,number是指定的數值,date是要被加上的原始日期
SELECT DATEADD(MONTH,2,'2010-10-06')
傳回的結果是2010-12-06 00:00:00.000

講解完這兩個函數使用之後,接著開始解釋某月的第一天怎麼計算
不過還是要再解釋一個東西
如果今天將0轉為datetime,如 select CONVERT(datetime,0,112)
出來的結果會是1900-01-01 00:00:00.000
因此我們將會用這個數值為基準
首先先計算今天到1900-01-01相差幾個月
語法是
SELECT DATEDIFF(MONTH,0,GETDATE())
算出來的數值是1329,代表相差了1329個月
再來將 1900-01-01加上1329個月,結果出來就是這個月的第一天了!
SELECT DATEADD(MONTH, DATEDIFF(MONTH,0,GETDATE()) ,0)
image

結果:2010-10-01 00:00:00.000

用這個方法就可以算出很多種不同的結果
例如如果是每個月最後一天的話,就是
SELECT DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE() ), -1)
原理是先算出今天跟 1899-12-31的月份差距( -1代表1899-12-31,-2就是1899-12-30依此類推)
接著再將1899-12-31加上月份差距,答案就是2010-10-31 00:00:00.000

如果是當季的最後一天,如下
SELECT DATEADD(QUARTER, DATEDIFF(QUARTER, -1,GETDATE() ), -1)

還有很多運用,就看自己怎麼發揮囉。