sql培訓(xùn)內(nèi)容(精簡)
作者:vlife
SQL定義:SQL是一種面向數(shù)據(jù)庫的通用數(shù)據(jù)處理語言規(guī)范,能完成以下幾類功能:提取查詢數(shù)據(jù),插入修改刪除數(shù)據(jù),生成修改和刪除數(shù)據(jù)庫對象,數(shù)據(jù)庫安全控制,數(shù)據(jù)庫完整性及數(shù)據(jù)保護控制。
SQL分類:
DDL—數(shù)據(jù)定義語言(CREATE,ALTER,DROP,DECLARE)
DML—數(shù)據(jù)操縱語言(SELECT,DELETE,UPDATE,INSERT)
DCL—數(shù)據(jù)控制語言(GRANT,REVOKE,COMMIT,ROLLBACK)
db2數(shù)據(jù)類型
CHAR():定長字符串 最大長度為 254
VARCHAR():變長字符 最大長度為 4000
SMALLINT:短整型數(shù)字 長度為 2 字節(jié)
INTEGER:整型數(shù)字 長度為 4 字節(jié)
REAL:單精度浮點 32 位近似值
DOUBLE:雙精度浮點 64 位近似值
DECIMAL(m,n):數(shù)字 精度為m小數(shù)位為n
DATE:日期時間
TIME:日期時間
TIMESTAMP:日期時間
DDL—數(shù)據(jù)庫定義語言:直接提交的。
CREATE:用于創(chuàng)建數(shù)據(jù)庫對象。
DECLARE:除了是創(chuàng)建只在過程中使用的臨時表外,DECLARE語句和CREATE語句非常相似。唯一可以被聲明的對象是表。并且必須放入用戶臨時表空間。
DROP:可以刪除任何用CREATE(數(shù)據(jù)庫對象)和DECLARE(表)創(chuàng)建的對象。
ALTER:允許修改某些數(shù)據(jù)庫對象的信息。不能修改索引。
下面主要基于對象介紹基本的語法:
1、數(shù)據(jù)庫:
創(chuàng)建數(shù)據(jù)庫:CREATE DATABASE database-name [USING CODESET codeset TERRITORY territory]
注:代碼頁的問題。
刪除數(shù)據(jù)庫:drop database dbname
2、表:
創(chuàng)建新表:
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根據(jù)已有的表創(chuàng)建新表:
A:create table tab_new like tab_old
B:create table tab_new as select col1,col2… from tab_old definition only
修改表:
增加一個列:
Alter table tabname add column col type
注:列增加后將不能刪除。DB2中列加上后數(shù)據(jù)類型也不能改變,唯一能改變的是增加varchar類型的長度。添加主鍵:
Alter table tabname add primary key(col)
刪除主鍵:
Alter table tabname drop primary key(col)
刪除表:drop table tabname
3、表空間:
創(chuàng)建表空間:create tablespace tbsname pagesize 4k managed by database using (file ‘file’ size)
表空間加入容器:alter tablespace tablespace_name add(file 'filename' size)
注:該操作是不可逆的,加入容器后將不能將其刪除,因此在加入的時候注意。
刪除表空間:drop tablespace tbsname
4、索引:
創(chuàng)建索引:create [unique] index idxname on tabname(col….)
刪除索引:drop index idxname
注:索引是不可更改的,想更改必須刪除重新建。
5、視圖:
創(chuàng)建視圖:create view viewname as select statement
刪除視圖:drop view viewname
注:視圖唯一能修改的是引用類型列,改變列的范圍。其他定義好了都不能修改。當(dāng)視圖基于的基表drop后,視圖變?yōu)闊o效。
DML—數(shù)據(jù)庫操縱語言,它不隱式地提交當(dāng)前事務(wù) ,是否提交視環(huán)境設(shè)定而定。
SELECT:從表中查詢符合數(shù)據(jù)
注:條件中連接的問題,避免出現(xiàn)笛卡兒乘積
DELETE:刪除已有表的數(shù)據(jù)
UPDATE:更新已有表的數(shù)據(jù)
INSERT:向已有表中插入數(shù)據(jù)
注:DELETE,UPDATE和INSERT是否直接提交取決與執(zhí)行語句所在的環(huán)境。
在執(zhí)行時注意事務(wù)日志滿的情況。
1、select時,注意索引謂詞和非索引謂詞,盡量在有索引的列上使用索引謂詞。
謂詞類型 可索引 注 釋
Col∝con Y ∝代表>;,>;=,=,<=,<,但是<>;不是可索引的。
Col between con1 and con2 Y 在匹配系列中必須是最后的。
Col in list Y 僅對一個匹配列
Col is null Y
Col like ‘xyz%’ Y 模糊匹配%在后面。
Col like ‘%xyz’ N 模糊匹配%在前面。
Col1∝Col2 N Col1和col2來自同一個表
Col∝Expression N 例如:c1(c1+1)/2
Pred1 and Pred2 Y Pred1和Pred2都是可索引的,指相同索引的列
Pred1 or Pred2 N 除了(c1=a or c1=b)外,他可以被認(rèn)為是c1 in(a,b)
Not Pred1 N 或者任何的等價形式:Not between,Not in,Not like等等。
使用索引的例子介紹:
<1>;、單個表上索引查詢的介紹 :
A:select * from t1 where c1 = 10;
在c1列上無索引,如何檢索
在c1列上有索引,如何檢索
B:select * from t1 where c1 =10 and c2 between 5 and 10 and c3 like ‘A%’
僅在c1列上有索引
在c1,c2和c3列上有單獨的索引
在c1,c2和c3列上有聯(lián)合索引
此處可以填加索引匹配規(guī)則和高級規(guī)則,比較難理解!!
<2>;、兩個或多個表上索引查詢的介紹:
(1)、使用循環(huán)嵌套法執(zhí)行查詢
A:select t1.c1,t1.c2,t2.c3,t2.c4 from t1,t2 where t1.c1=10 and t1.c2 =t2.c3
介紹查詢的方法,看看哪列上最需要索引。
B:select t1.c1,t1.c2,t2.c3,t2.c4 from t1,t2 where t1.c1=10 and t2.c4 = 10 and t1.c2 =t2.c3
(2)、使用歸并連接執(zhí)行連接查詢
例:select t1.c1,t1.c2,t2.c3,t2.c4 from t1,t2 where t1.c1=10 and t2.c4 = 10 and t1.c2 =t2.c3
(3)、三個以上的表進行連接查詢采取的規(guī)則或者方法
(2)、GROUP BY:實現(xiàn)簡單分組的功能,當(dāng)用group by時,查詢選擇列中除了在group by中出現(xiàn)的和常量外,其他的列上要用分組函數(shù)。可以使用一些分組函數(shù)實現(xiàn)一些列不在group by中出現(xiàn),min,max等。
(3)、HAVING的使用,對一些分組列進行條件判斷。
(4)、ORDER BY子句使得SQL在顯示查詢結(jié)果時將各返回行按順序排列,返回行的排列順序由ORDER BY 子句指定的表達式的值確定。
2、DELETE:從表中刪除記錄
語法格式:
DELETE FROM tablename WHERE (conditions)
3、INSERT:向表中插入記錄
語法格式:
INSERT INTO tablename (col1,col2,…) VALUES (value1,value2,…);
INSERT INTO tablename (col1,col2,…) VALUES (value1, value2,…), (value1, value2,…),……
Insert不會等待任何程序,不會導(dǎo)致鎖定。
4、UPDATE:
語法格式:
UPDATE tabname SET (col1=values1,col2=values2,…) WHERE (conditions);
注:update的速度比較慢,要在相應(yīng)列上建立索引。
DCL—數(shù)據(jù)控制語言
GRANT—授予用戶權(quán)限
REVOKE—撤消用戶權(quán)限
COMMIT—提交事務(wù),可以使數(shù)據(jù)庫的修改永久化
ROLLBACK—回滾事務(wù),消除上一個COMMIT命令后的所做的全部修改,使得數(shù)據(jù)庫的內(nèi)容恢復(fù)到上一個COMMIT執(zhí)行后的狀態(tài).。
1、GRANT:所有著或者管理員把訪問權(quán)限賦給其他用戶
語法格式:
grant [all privileges|privileges,….] on tabname | viewname to [public|user,….]
2、REVOKE:取消某一用戶的某中訪問權(quán)限
語法格式:
Revoke [all privileges|privileges,….] on tabname | viewname from [public|user,….]
注:不能取消實例級別的用戶的任何權(quán)限,他們不是通過grant授權(quán)的,是通過組實現(xiàn)的權(quán)限。
3、COMMIT:把事務(wù)中所做的修改永久化記錄到數(shù)據(jù)庫。
語法格式:
commit [work]
4、ROLLBACK:將上次提交以來所做的更改全部撤消。
語法格式:
Rollback [work]
高級sql簡單介紹
一、查詢間使用運算詞
A: UNION 運算符
UNION 運算符通過組合其他兩個結(jié)果表(例如 TABLE1 和 TABLE2)并消去表中任何重復(fù)行而派生出一個結(jié)果表。當(dāng) ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復(fù)行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。
B: EXCEPT 運算符
EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復(fù)行而派生出一個結(jié)果表。當(dāng) ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復(fù)行。
C: INTERSECT 運算符
INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復(fù)行而派生出一個結(jié)果表。當(dāng) ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復(fù)行。
注:使用運算詞的幾個查詢結(jié)果行必須是一致的。
二、外連接
A、left outer join:
左外連接(左連接):結(jié)果集幾包括連接表的匹配行,也包括左連接表的所有行。
B:right outer join:
右外連接(右連接):結(jié)果集既包括連接表的匹配連接行,也包括右連接表的所有行。
C:full outer join:
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
注:復(fù)合外連接按照從左到右的順序執(zhí)行連接,左邊連接的結(jié)果集和右邊連接
三、超級分組和移動函數(shù)
A:grouping sets:用來在單個sql中形成多級分組。
例:select company_id,node_id,count(customer_id) from customer group by grouping sets(company_id,node_id)
B:rollup:可以在單個數(shù)據(jù)庫操作中形成多個分組。
例:select company_id,node_id,count(customer_id) from customer group by rollup(company_id,node_id)
注:rollup操作不是可交換的操作,指定用戶組的順序是很重要的。
C:cube: 生成分組表中分組的所有組合。
例:select company_id,node_id,count(customer_id) from customer group by cube(company_id,node_id)
D:over:移動函數(shù)可以幫助實現(xiàn)移動的數(shù)據(jù)分析
Select date,avg(qty) over(order by date rows between 1 preceding and 1 following) as values from sale
附錄:常用函數(shù)介紹
1、類型轉(zhuǎn)化函數(shù):
轉(zhuǎn)化為數(shù)字類型的:
decimal, double, Integer, smallint,real
Hex(arg):轉(zhuǎn)化為參數(shù)的16進制表示。
轉(zhuǎn)化為字符串類型的:
char, varchar
Digits(arg):返回arg的字符串表示法,arg必須為decimal。
轉(zhuǎn)化為日期時間的:
date, time,timestamp
2、時間日期:
year, quarter, month, week, day, hour, minute ,second
dayofyear(arg):返回arg在年內(nèi)的天值
Dayofweek(arg):返回arg在周內(nèi)的天值
days(arg):返回日期的整數(shù)表示法,從0001-01-01來的天數(shù)。
midnight_seconds(arg):午夜和arg之間的秒數(shù)。
Monthname(arg):返回arg的月份名。
Dayname(arg):返回arg的星期。
3、字符串函數(shù):
length,lcase, ucase, ltrim, rtrim
Coalesce(arg1,arg2….):返回參數(shù)集中第一個非null參數(shù)。
Concat (arg1,arg2):連接兩個字符串a(chǎn)rg1和arg2。
insert(arg1,pos,size,arg2):返回一個,將arg1從pos處刪除size個字符,將arg2插入該位置。
left(arg,length):返回arg最左邊的length個字符串。
locate(arg1,arg2,<pos>
:在arg2中查找arg1第一次出現(xiàn)的位置,指定pos,則從arg2的pos處開始找arg1第一次出現(xiàn)的位置。
posstr(arg1,arg2):返回arg2第一次在arg1中出現(xiàn)的位置。
repeat(arg1 ,num_times):返回arg1被重復(fù)num_times次的字符串。
replace(arg1,arg2,arg3):將在arg1中的所有arg2替換成arg3。
right(arg,length):返回一個有arg左邊length個字節(jié)組成的字符串。
space(arg):返回一個包含arg個空格的字符串。
substr(arg1,pos,<length>
:返回arg1中pos位置開始的length個字符,如果沒指定length,則返回剩余的字符。
4、數(shù)學(xué)函數(shù):
Abs, count, max, min, sum
Ceil(arg):返回大于或等于arg的最小整數(shù)。
Floor(arg):返回小于或等于參數(shù)的最小整數(shù)。
Mod(arg1,arg2):返回arg1除以arg2的余數(shù),符號與arg1相同。
Rand():返回1到1之間的隨機數(shù)。
Power(arg1,arg2):返回arg1的arg2次方。
Round(arg1,arg2):四舍五入截斷處理,arg2是位數(shù),如果arg2為負(fù),則對小數(shù)點前的數(shù)做四舍五入處理。
Sigh(arg):返回arg的符號指示符。-1,0,1表示。
truncate(arg1,arg2):截斷arg1,arg2是位數(shù),如果arg2是負(fù)數(shù),則保留arg1小數(shù)點前的arg2位。
5、其他:
nullif(arg1,arg2):如果2個參數(shù)相等,則返回null,否則,返回參數(shù)1
摘要: 1.DB2
產(chǎn)品的級別有那些
?
企業(yè)版的
NTERPRISEEDITION
工作組版
WORKGROUPEDITION
企業(yè)擴展版
ENTERPRISEEXTENDEDEDITION
個人版的
PERSONALEDITION
衛(wèi)星版的
SATELL...
閱讀全文
函數(shù)名? ? ? ? 說明
AVG()? ? ? ? 返回一組數(shù)值的平均值
VAR(),? ? ? ? 返回一組數(shù)值的方差
ASCII()? ? ? ? 返回整數(shù)參數(shù)最左邊的字符的ASCII碼
BIGINT()? ? ? ? 返回整型常量中的數(shù)字或字符串的64位整數(shù)表示
CHAR()? ? ? ? 返回日期時間型,字符串,整數(shù),十進制或雙精度浮點數(shù)的字符串表示
CHR()? ? ? ? 返回具有由參數(shù)指定的ASCII碼的字符
CONCAT(str1,str2)? ? ? ? 返回兩個字符串的連接
YEAR()? ? ? ? 返回數(shù)值的年部分
UCASE()? ? ? ? 返回字符串的大寫
TIME()? ? ? ? 返回一個數(shù)值中的時間
SUBSTR(EXP1,EXP2)? ? ? ? 返回EXP1串自EXP2處開始的子串
SECOND()? ? ? ? 返回一個數(shù)值的秒部分
RTRIM()? ? ? ? 刪除字符串尾部的空格
ROUND(EXP1,EXP2)? ? ? ? 返回EXP1小數(shù)點右邊的第EXP2位置處開始的四舍五入值
REPLACE(EXP1,EXP2,EXP3)? ? ? ? 用EXP3替代EXP1中所有的EXP2
REAL()? ? ? ? 返回一個數(shù)值的單精度浮點數(shù)表示
RAND()? ? ? ? 返回0和1之間的隨機浮點數(shù)
POSSTR(EXP1,EXP2)? ? ? ? 返回EXP2在EXP1中的位置
MONTH()? ? ? ? 返回一個數(shù)值的月部分
MOD(EXP1,EXP2)? ? ? ? 返回EXP1除以EXP2的余數(shù)
MINUTE()? ? ? ? 返回一個數(shù)值的分鐘部分
LTRIM()? ? ? ? 刪除字符串前面的空格
HOUR()? ? ? ? 返回一個數(shù)值的小時部分
在現(xiàn)實的DB2應(yīng)用中大家可能經(jīng)常會遇到一些錯誤,錯誤的原因是對DB2的
限制不太了解而引起的,在此我簡單地總結(jié)一下,歡迎大家繼續(xù)﹐以便和大家共享﹐
共同探討﹐共同近步﹗(以下主要以DB2 7.X為例)。
1. CHAR 的最大長度(字節(jié)數(shù))<=254
2. VARCHAR 的最大長度(字節(jié)數(shù))<=32672
3. LONG VARCHAR 的最大長度(字節(jié)數(shù))<=32700
4. CLOB 的最大長度(字節(jié)數(shù))<=2147483647
5. GRAPHICCHAR 的最大長度(字節(jié)數(shù))<=127
6. VARGRAPHIC 的最大長度(字節(jié)數(shù))<=16336
7. LONG VARGRAPHIC 的最大長度(字節(jié)數(shù))<=16350
8. DBCLOB 的最大長度(字節(jié)數(shù))<=1073741823
9. BLOB 的最大長度(字節(jié)數(shù))<=2147483647
10. 字符常量的最大長度(字節(jié)數(shù))<=32672
11. 圖形常量的最大長度(字節(jié)數(shù))<=16336
12. 串聯(lián)字符串的最大長度(字節(jié)數(shù))<=2147483647
13. 串聯(lián)圖形串的最大長度(字節(jié)數(shù))<=1073741823
14. 串聯(lián)二進制串的最大長度(字節(jié)數(shù))<=2147483647
15. 十六進制常量數(shù)字的最大長度(字節(jié)數(shù))<=16336
16. 分類注釋的最大長度(字節(jié)數(shù))<=254
17. 運行時結(jié)構(gòu)類型列對象的最大長度(字節(jié)數(shù))<=1
DAYNAME?????????返回一個大小寫混合的字符串,對于參數(shù)的日部分,用星期表示這一天的名稱(例如,F(xiàn)riday)。??
DAYOFWEEK????返回參數(shù)中的星期幾,用范圍在?1-7?的整數(shù)值表示,其中?1?代表星期日。??
DAYOFWEEK_ISO?返回參數(shù)中的星期幾,用范圍在?1-7?的整數(shù)值表示,其中?1?代表星期一。??
DAYOFYEAR??????????返回參數(shù)中一年中的第幾天,用范圍在?1-366?的整數(shù)值表示。??
DAYS?????????????????????返回日期的整數(shù)表示。??
JULIAN_DAY?????????返回從公元前?4712?年?1?月?1?日(儒略日歷的開始日期)到參數(shù)中指定日期值之間的天數(shù),用整數(shù)值表示。??
MIDNIGHT_SECONDS??返回午夜和參數(shù)中指定的時間值之間的秒數(shù),用范圍在?0?到?86400?之間的整數(shù)值表示。??
MONTHNAME???????????????對于參數(shù)的月部分的月份,返回一個大小寫混合的字符串(例如,January)。??
TIMESTAMP_ISO?????????根據(jù)日期、時間或時間戳記參數(shù)而返回一個時間戳記值。??
TIMESTAMP_FORMAT?從已使用字符模板解釋的字符串返回時間戳記。??
TIMESTAMPDIFF????????根據(jù)兩個時間戳記之間的時差,返回由第一個參數(shù)定義的類型表示的估計時差。??
TO_CHAR???????????????????返回已用字符模板進行格式化的時間戳記的字符表示。TO_CHAR?是?VARCHAR_FORMAT?的同義詞。??
TO_DATE??????????????????從已使用字符模板解釋過的字符串返回時間戳記。TO_DATE?是?TIMESTAMP_FORMAT?的同義詞。??
WEEK?????????????????????返回參數(shù)中一年的第幾周,用范圍在?1-54?的整數(shù)值表示。以星期日作為一周的開始。??
WEEK_ISO????????????返回參數(shù)中一年的第幾周,用范圍在?1-53?的整數(shù)值表示。
要使當(dāng)前時間或當(dāng)前時間戳記調(diào)整到?GMT/CUT,則把當(dāng)前的時間或時間戳記減去當(dāng)前時區(qū)寄存器:?
current?time?-?current?timezone?
current?timestamp?-?current?timezone?
給定了日期、時間或時間戳記,則使用適當(dāng)?shù)暮瘮?shù)可以單獨抽取出(如果適用的話)年、月、日、時、分、秒及微秒各部分:?
YEAR?(current?timestamp)?
MONTH?(current?timestamp)?
DAY?(current?timestamp)?
HOUR?(current?timestamp)?
MINUTE?(current?timestamp)?
SECOND?(current?timestamp)?
MICROSECOND?(current?timestamp)?
因為沒有更好的術(shù)語,所以您還可以使用英語來執(zhí)行日期和時間計算:?
current?date?+?1?YEAR?
current?date?+?3?YEARS?+?2?MONTHS?+?15?DAYS?
current?time?+?5?HOURS?-?3?MINUTES?+?10?SECONDS?
從時間戳記單獨抽取出日期和時間也非常簡單:?
DATE?(current?timestamp)?
TIME?(current?timestamp)
而以下示例描述了如何獲得微秒部分歸零的當(dāng)前時間戳記:?
CURRENT?TIMESTAMP?-?MICROSECOND?(current?timestamp)?MICROSECONDS?
如果想將日期或時間值與其它文本相銜接,那么需要先將該值轉(zhuǎn)換成字符串。為此,只要使用?CHAR()?函數(shù):?
char(current?date)?
char(current?time)?
char(current?date?+?12?hours)?
要將字符串轉(zhuǎn)換成日期或時間值,可以使用:?
TIMESTAMP?('2002-10-20-12.00.00.000000')?
TIMESTAMP?('2002-10-20?12:00:00')?
DATE?('2002-10-20')?
DATE?('10/20/2002')?
TIME?('12:00:00')?
TIME?('12.00.00')?
TIMESTAMP()、DATE()?和?TIME()?函數(shù)接受更多種格式。上面幾種格式只是示例,我將把它作為一個練習(xí),讓讀者自己去發(fā)現(xiàn)其它格式。?
有時,您需要知道兩個時間戳記之間的時差。為此,DB2?提供了一個名為?TIMESTAMPDIFF()?的內(nèi)置函數(shù)。但該函數(shù)返回的是近似值,因為它不考慮閏年,而且假設(shè)每個月只有?30?天。以下示例描述了如何得到兩個日期的近似時差:?
timestampdiff?(<n>,?char(?
timestamp('2002-11-30-00.00.00')-?
timestamp('2002-11-08-00.00.00')))?
對于?<n>,可以使用以下各值來替代,以指出結(jié)果的時間單位:?
1?=?秒的小數(shù)部分??
2?=?秒??
4?=?分??
8?=?時??
16?=?天??
32?=?周??
64?=?月??
128?=?季度??
256?=?年??
當(dāng)日期很接近時使用?timestampdiff()?比日期相差很大時精確。如果需要進行更精確的計算,可以使用以下方法來確定時差(按秒計):?
(DAYS(t1)?-?DAYS(t2))?*?86400?+???
(MIDNIGHT_SECONDS(t1)?-?MIDNIGHT_SECONDS(t2))?
為方便起見,還可以對上面的方法創(chuàng)建?SQL?用戶定義的函數(shù):?
CREATE?FUNCTION?secondsdiff(t1?TIMESTAMP,?t2?TIMESTAMP)?
RETURNS?INT?
RETURN?(?
(DAYS(t1)?-?DAYS(t2))?*?86400?+???
(MIDNIGHT_SECONDS(t1)?-?MIDNIGHT_SECONDS(t2))?
)?
@?
如果需要確定給定年份是否是閏年,以下是一個很有用的?SQL?函數(shù),您可以創(chuàng)建它來確定給定年份的天數(shù):?
CREATE?FUNCTION?daysinyear(yr?INT)?
RETURNS?INT?
RETURN?(CASE?(mod(yr,?400))?WHEN?0?THEN?366?ELSE??
????????CASE?(mod(yr,?4))???WHEN?0?THEN??
????????CASE?(mod(yr,?100))?WHEN?0?THEN?365?ELSE?366?END??
????????ELSE?365?END?
END)@?
最后,以下是一張用于日期操作的內(nèi)置函數(shù)表。它旨在幫助您快速確定可能滿足您要求的函數(shù),但未提供完整的參考。有關(guān)這些函數(shù)的更多信息,請參考?SQL?參考大全。?
SQL?日期和時間函數(shù)??
DAYNAME?返回一個大小寫混合的字符串,對于參數(shù)的日部分,用星期表示這一天的名稱(例如,F(xiàn)riday)。??
DAYOFWEEK?返回參數(shù)中的星期幾,用范圍在?1-7?的整數(shù)值表示,其中?1?代表星期日。??
DAYOFWEEK_ISO?返回參數(shù)中的星期幾,用范圍在?1-7?的整數(shù)值表示,其中?1?代表星期一。??
DAYOFYEAR?返回參數(shù)中一年中的第幾天,用范圍在?1-366?的整數(shù)值表示。??
DAYS?返回日期的整數(shù)表示。??
JULIAN_DAY?返回從公元前?4712?年?1?月?1?日(儒略日歷的開始日期)到參數(shù)中指定日期值之間的天數(shù),用整數(shù)值表示。??
MIDNIGHT_SECONDS?返回午夜和參數(shù)中指定的時間值之間的秒數(shù),用范圍在?0?到?86400?之間的整數(shù)值表示。??
MONTHNAME?對于參數(shù)的月部分的月份,返回一個大小寫混合的字符串(例如,January)。??
TIMESTAMP_ISO?根據(jù)日期、時間或時間戳記參數(shù)而返回一個時間戳記值。??
TIMESTAMP_FORMAT?從已使用字符模板解釋的字符串返回時間戳記。??
TIMESTAMPDIFF?根據(jù)兩個時間戳記之間的時差,返回由第一個參數(shù)定義的類型表示的估計時差。??
TO_CHAR?返回已用字符模板進行格式化的時間戳記的字符表示。TO_CHAR?是?VARCHAR_FORMAT?的同義詞。??
TO_DATE?從已使用字符模板解釋過的字符串返回時間戳記。TO_DATE?是?TIMESTAMP_FORMAT?的同義詞。??
WEEK?返回參數(shù)中一年的第幾周,用范圍在?1-54?的整數(shù)值表示。以星期日作為一周的開始。??
挺身而上??
主唱:秦勇
演奏:北京青年演奏家交響樂團
音樂錄音:馬丁(小)
從來不甘心,平平常常
卻為什么苦守在這個地方
有時也想想,過得怎樣
面對著所有人我坦坦蕩蕩
青春與你共享
苦惱先放一放
危難中發(fā)出力量
就是現(xiàn)在,就是我們,挺身而上
親愛的戰(zhàn)友你在何方
心中多少話兒要對你講
我還是相信地久天長
風(fēng)雨路上有你和我一起前往
男兒絕不退讓
做一回生死較量
重任由誰來擔(dān)當(dāng)
就是現(xiàn)在就是我們挺身而上
男兒絕不退讓
做一回生死較量
重任由誰來擔(dān)當(dāng)
就是現(xiàn)在就是我們挺身而上
男兒絕不退讓
做一回生死較量
重任由誰來擔(dān)當(dāng)
就是現(xiàn)在就是我們挺身而上
今日在網(wǎng)上閑逛,偶得一文章,感覺很不錯。對正在工作中的年輕人很有幫助,現(xiàn)發(fā)表在此。
給年輕工程師的十大忠告
諸位,咱當(dāng)電子工程師也是十余年了,不算有出息,環(huán)顧四周,也沒有看見幾個有出息的!回顧工程師生涯,感慨萬千,愿意講幾句掏心窩子的話,也算給咱們師弟師妹們提個醒,希望他們比咱們強!
[1]好好規(guī)劃自己的路,不要跟著感覺走!根據(jù)個人的理想決策安排,絕大部分人并不指望成為什么院士或教授,而是希望活得滋潤一些,爽一些。那么,就需要慎重安排自己的軌跡。從哪個行業(yè)入手,逐漸對該行業(yè)深入了解,不要頻繁跳槽,特別是不要為了一點工資而轉(zhuǎn)移陣地,從長遠看,這點錢根本不算什么,當(dāng)你對一個行業(yè)有那么幾年的體會,以后錢根本不是問題。頻繁地動蕩不是上策,最后你對哪個行業(yè)都沒有摸透,永遠是新手!
[2]可以做技術(shù),切不可沉湎于技術(shù)。千萬不可一門心思鉆研技術(shù)!給自己很大壓力,如果你的心思全部放在這上面,那么注定你將成為孔乙己一類的人物!適可而止為之,因為技術(shù)只不過是你今后前途的支柱之一,而且還不是最大的支柱,除非你只愿意到老還是個工程師!
[3]不要去做技術(shù)高手,只去做綜合素質(zhì)高手!在企業(yè)里混,我們時常瞧不起某人,說他“什么都不懂,憑啥拿那么多錢,憑啥升官!”這是普遍的典型的工程師的迂腐之言。8051很牛嗎?人家能上去必然有他的本事,而且是你沒有的本事。你想想,老板搞經(jīng)營那么多年,難道見識不如你這個新兵?人家或許善于管理,善于領(lǐng)會老板意圖,善于部門協(xié)調(diào)等等。因此務(wù)必培養(yǎng)自己多方面的能力,包括管理,親和力,察言觀色能力,攻關(guān)能力等,要成為綜合素質(zhì)的高手,則前途無量,否則只能躲在角落看示波器!技術(shù)以外的技能才是更重要的本事!!從古到今,美國日本,一律如此!
[4]多交社會三教九流的朋友!不要只和工程師交往,認(rèn)為有共同語言,其實更重要的是和其他類人物交往,如果你希望有朝一日當(dāng)老板或高層管理,那么你整日面對的就是這些人。了解他們的經(jīng)歷,思維習(xí)慣,愛好,學(xué)習(xí)他們處理問題的模式,了解社會各個角落的現(xiàn)象和問題,這是以后發(fā)展的巨大的本錢,沒有這些以后就會笨手笨腳,跌跌撞撞,遇到重重困難,交不少學(xué)費,成功的概率大大降低!
[5]知識涉獵不一定專,但一定要廣!多看看其他方面的書,金融,財會,進出口,稅務(wù),法律等等,為以后做一些積累,以后的用處會更大!會少交許多學(xué)費!!
[6]抓住時機向技術(shù)管理或市場銷售方面的轉(zhuǎn)變!要想有前途就不能一直搞開發(fā),適當(dāng)時候要轉(zhuǎn)變?yōu)楣芾砘蜾N售,前途會更大,以前搞技術(shù)也沒有白搞,以后還用得著。搞管理可以培養(yǎng)自己的領(lǐng)導(dǎo)能力,搞銷售可以培養(yǎng)自己的市場概念和思維,同時為自己以后發(fā)展積累龐大的人脈!應(yīng)該說這才是前途的真正支柱!!!
[7]逐漸克服自己的心里弱點和性格缺陷!多疑,敏感,天真(貶義,并不可愛),猶豫不決,膽怯,多慮,臉皮太薄,盡管你可能技術(shù)不錯!
[8]工作的同時要為以后做準(zhǔn)備!建立自己的工作環(huán)境!及早為自己配置一個工作環(huán)境,裝備電腦,示波器(可以買個二手的),仿真器,編程器等,業(yè)余可以接點活,一方面接觸市場,培養(yǎng)市場感覺,同時也積累資金,更重要的是準(zhǔn)備自己的產(chǎn)品,咱搞技術(shù)的沒有錢,只有技術(shù),技術(shù)的代表不是學(xué)歷和證書,而是產(chǎn)品,拿出象樣的產(chǎn)品,就可技術(shù)轉(zhuǎn)讓或與人合作搞企業(yè)!先把東西準(zhǔn)備好,等待機會,否則,有了機會也抓不住!
[9]要學(xué)會善于推銷自己!不僅要能干,還要能說,能寫,善于利用一切機會推銷自己,樹立自己的品牌形象,很必要!要創(chuàng)造條件讓別人了解自己,不然老板怎么知道你能干?外面的投資人怎么相信你?提早把自己推銷出去,機會自然會來找你!搞個個人主頁是個好注意!!特別是培養(yǎng)自己在行業(yè)的名氣,有了名氣,高薪機會自不在話下,更重要的是有合作的機會...
[10]該出手時便出手!永遠不可能有100%把握!!!條件差不多就要大膽去干,去闖出自己的事業(yè),不要猶豫,不要彷徨,干了不一定成功,但至少為下一次沖擊積累了經(jīng)驗,不干永遠沒出息,而且要干成必然要經(jīng)歷失敗。不經(jīng)歷風(fēng)雨,怎么見彩虹,沒有人能隨隨便便成功!
我很長一段時間都在煎熬中度過,已經(jīng)快到而立之年,對自己的發(fā)展方向、前途卻還很迷茫。這么多年來,我一直受興趣指引,走了很長的路,或曲或直,但我從來沒有后悔過。可決定未來的方向卻讓我痛苦不已。
1987年,我開始在CONMAX(記得不是很清楚了)機器上學(xué)習(xí)BASIC,從此和程序語言結(jié)下了不解之緣。當(dāng)時學(xué)校僅有兩臺蘋果II型電腦,我們連碰的機會都沒有。CONMAX機器開機就是BASIC,沒有操作系統(tǒng),沒有磁盤(使用錄音機記錄程序),在這樣的機器上,我和我的同學(xué)們用SHAPE命令編程序在屏幕上寫自己的名字,寫賽車游戲、碰碰球游戲。編程給我?guī)砹藷o窮的樂趣。
93年考入大學(xué),因為當(dāng)時外貿(mào)非常熱門,我放棄了感興趣的自動化專業(yè)、機械專業(yè),開始學(xué)習(xí)工業(yè)外貿(mào)。由于是工業(yè)外貿(mào),所以在課程設(shè)置上包含了機械、電子、經(jīng)濟、英語、外貿(mào)等方向的多門課程。憑著自己的興趣,在機械相關(guān)的課程上,我的平均成績不在97分之下(畫法幾何還考了100分)。這也奠定了后來學(xué)習(xí)Auto CAD、3DS MAX的基礎(chǔ)。電子類課程成績也不錯,基本上都是班中第一。我對外語和外貿(mào)并不是很感興趣,但在周圍同學(xué)的強大壓力下,還是以73.5分的成績通過了六級考試,并在全院第一個拿到了BEC2的證書,更沒想到的是5年后我竟然成為了BEC的口語考官。
大學(xué)的生活非常緊張,除了在學(xué)生會任職之外,我還把學(xué)校中所有的計算機培訓(xùn)班課程學(xué)了一個遍,在這期間我接觸了PASCAL、C語言、FoxBASE、FoxPro,也為我參加數(shù)學(xué)建模競賽奠定了計算機基礎(chǔ)。1995年,學(xué)校組隊參加全國大學(xué)生數(shù)學(xué)建模競賽,我沒有被選中。在強烈要求下,我作為旁聽生參加了近一年半的數(shù)學(xué)建模的培訓(xùn)。雖經(jīng)過艱苦的準(zhǔn)備,但最終由于一個小失誤導(dǎo)致我們組在全國大學(xué)生數(shù)學(xué)建模競賽上只拿到了河北省二等獎。為了挽回失去的榮譽,我放棄了考研,毅然決定與隊友參加美國大學(xué)生數(shù)學(xué)建模競賽,并最終取得了一等獎的好成績。可笑的是,在參賽獲獎的兩組六個人中,竟然有三個人是當(dāng)時的“旁聽生”。
雖然外貿(mào)專業(yè)課沒有學(xué)好,但大學(xué)的學(xué)習(xí)為我的英語、數(shù)學(xué)、計算機打下了很好的基礎(chǔ),這也是我的興趣帶我到這一步的。畢業(yè)后留校,并轉(zhuǎn)行管理信息系統(tǒng)。比起管理信息系統(tǒng)專業(yè)的學(xué)生來,我欠缺了太多的知識。我把“計算機技術(shù)”作為我的專攻方向,不斷追趕。VFP、VB、DELPHI、.NET、SQL Server……甚至成為了MCT,在計算機技術(shù)上走了很遠。
現(xiàn)在,我忽然發(fā)現(xiàn)“累”了。我發(fā)現(xiàn)我對編程、對計算機技術(shù)不象以前那么專注了。我更加感興趣技術(shù)后面的東西:設(shè)計模式、分析模式、財務(wù)管理、營銷策略、企業(yè)信息化……想起當(dāng)時我的老師說管理信息系統(tǒng)是“數(shù)學(xué)”、“管理”、“計算機”的交叉地帶,我現(xiàn)在花了7年的時間才明白“技術(shù)”不能代表一切。
很多象我一樣對計算機技術(shù)“狂熱”的人,其中一個原因恐怕是“編程”容易上手,花上個把月的時間就可以學(xué)到一些“高深”東西,并且可以編程炫耀一番了。另外,編程是創(chuàng)造的過程,看著自己的想法付諸實現(xiàn),總會有成就之感,即使程序編寫的很糟糕。編程也能處處體現(xiàn)征服困難的喜悅,每當(dāng)一個問題被解決,心里面總有一種成就感,即使這個問題早就有人解決過了。這也是為什么有人花上大量時間,用盡各種技巧用JavaScript編寫一個Web控件,而根本不去琢磨是否有一種智能客戶端的技術(shù),可以使用功能豐富的Windows控件。
編程中的這種體會引導(dǎo)著我的興趣,讓我走了很遠,也失去了很多。“專注于計算機技術(shù)”讓很多人放棄了外語、放棄了數(shù)學(xué)、放棄了管理。很多人說這種放棄是心甘情愿的,你可能花了兩年的時間學(xué)習(xí)英語,然而收獲很少,為什么不去學(xué)計算機呢,至少能夠“速成”,而且喜悅伴隨著整個的學(xué)習(xí)過程。可是,這錯了。編程創(chuàng)造的價值是什么呢?當(dāng)你開發(fā)一套系統(tǒng)的時候,這套系統(tǒng)的管理內(nèi)涵決定了應(yīng)用信息系統(tǒng)的價值,而不是編程技巧的高低。編程技巧的高低可以決定開發(fā)效率,但不能決定企業(yè)應(yīng)用信息系統(tǒng)究竟能帶來多大的收益。編程是一種機械性的工作,它里面的創(chuàng)新并不能象優(yōu)化管理流程一樣對企業(yè)帶來的巨大的利潤。Web Service技術(shù)也不是憑空出現(xiàn)的,而是應(yīng)企業(yè)應(yīng)用集成的需求而出現(xiàn)的。
現(xiàn)在的編程技術(shù)也降低了編程的門檻(很多人的虛榮心可以更容易的實現(xiàn)了),寒楓天傷有一次推薦自動代碼生成的一系列網(wǎng)站,我看了一些,其中“Constructor”軟件讓程序編寫.net系統(tǒng)變的如此容易。應(yīng)用MDA后恐怕更容易。也許有一天人們不用再寫那么多的代碼。程序開發(fā)員的價值是否也意味著會不斷貶值呢?
“開發(fā)”陣營的人往往感慨為什么中國程序員沒有超過30的,為什么中國沒有人能夠創(chuàng)造出一門語言來。不再專注于技術(shù)不意味著放棄技術(shù)。過分專注技術(shù),就會陷入一種“技術(shù)成功”做成的陷阱中,最終變成一個“快樂的井底之蛙”。另外,只有知道技術(shù)的發(fā)展方向,才能更好的專注于技術(shù),而技術(shù)的發(fā)展方向往往不取決于技術(shù)本身。設(shè)想有一天,一個跨國公司經(jīng)營的幾千萬種商品一小時內(nèi)完成清點,配貨,及時針對競爭對手作出決策,所有這一切都是技術(shù)本身的功勞嗎?我想不全是,其中一大部分取決于管理。用過ERP產(chǎn)品的程序員都說,其實每個界面都很簡單,但ERP的價值不在于編程是否簡單,其最重要的價值就是理順的管理流程,推動了企業(yè)的運轉(zhuǎn)。
我跟著興趣走得太遠了,而且這個“興趣”實際上是“過分關(guān)注編程技術(shù)”帶來的小恩小惠積累起來的,它讓我走了條彎路(但我不后悔)。現(xiàn)在這個問題困擾了我太久了,我實在是很難割舍這些“小恩小惠”,可我還要割舍掉。我曾經(jīng)放棄過自動化、機械選擇了工業(yè)外貿(mào),也曾經(jīng)放棄了考研選擇了參加美國大學(xué)生數(shù)學(xué)建模競賽,還曾經(jīng)放棄了我的大學(xué)專業(yè)工業(yè)外貿(mào)轉(zhuǎn)行管理信息系統(tǒng),現(xiàn)在我也要放棄“專注于技術(shù)”,將更多的精力專注在管理、財務(wù)、企業(yè)信息化上面。我不放棄技術(shù),也會繼續(xù)在博客園發(fā)表技術(shù)文章,只是不想再專注于技術(shù)這一方面了。