寫在之前的話:
mysql有客戶端式(sqlyog),可托拉拽和寫**;或者通過命令列的方式進行互動(mysql -h10.***.***.*** -p*** -u*** -p****);(170920補充:hive的語法最接近mysql)
mysql作為開源的資料庫,在企業應用中十分普遍。
資料庫操作
建立資料庫:create database demon;
刪除資料庫:drop database demon;
表操作
建立
1.1、建立資料表
create table s_position
(id int not null auto_increment,
name varchar(20) not null default '經理', #設定預設值
description varchar(100),
primary key pk_positon (id), #設定主鍵
unique (id,name) #設定唯一值
);1.2、複製表/結構(若僅複製結構使用limit 0 選項)
create table tab1 as select * from table1;
1.3、建立臨時表(臨時表只在當前連線可見,當這個連線關閉的時候,會自動drop)
create temporary table tab1 (name varchar(25),...);
1.4、建立表進行判斷
create table if not exists tabl1 (.....);
1.5、表重新命名
alter talbe table1 rename as table2;
修改
2.1、增加列
alter talbe table1 add (test vhar(10),hehe char(12));
2.2、修改列
alter table table1 modify test char(20) not null
2.3、修改預設值
alter table table1 alter test set default 'system';
2.4、去掉預設值
alter table table1 alter test drop default;
2.5、去掉列
alter table table1 drop column test;
刪除多列
alter table table1 drop column test1,
column test2,...;
2.6、建立索引
create index index_name on table_name(column_name);
2.7、刪除主鍵
alter table table1 drop primary key;
2.8、增加主鍵
alter table table1 add primary key pk_depart_pos (department_id,position_id);
更新
格式
單錶:update [low_proority] [ignore] tablename set column_name="***" where clolumn_name="&&&" [order by ...] [limit rows]
或多表:update [low_proority] [ignore] tablename [,tab2,tab3,....] set col_name1=expr1,.... [where ...]
說明
示例:多表更新
update tab1 ,tab2 set column1=column2,... where condition1='***'
常用函式
1、date和time
a.當前datetime:now():2017-06-07 14:31:52
b1.返回日期:date():select date(now()); --->2017-06-07
c.返回年月日:year()/month()/day()
d.返回時分秒:hour()/minute()/second()
e.取時間含義:dayname()--星期幾;
dayofweek():返回日期對應的星期:1--週日;2--周一;。。
dayofyear():返回日期為該年的第多少天;
last_day():返回某個日期的最後一天;-->select last_day(now()); '2017-06-30'
f.日期計算: interval:靈活性加減日期
select now()+interval +5 day;
select now()+interval -4 minute;
datediff(enddate,start_date),返回天數
timestampdiff(interval,begin_date,end_date ):求對應的時間差(天、時、分、秒)
2、字串函式
a.長度
char_length():字串長度 我是 --> 2
length():字元長度,」我是」 --> 4 【字母/符號/數字 乙個字元】
b.拼接函式
concat(str1,str2,...):
concat(seperator,str1,str2,...):帶有分隔符的拼接函式
c.字元查詢
locate(find_str,str,start):
d.字元擷取
substring(str,start[,end])
e.替換
replace(str,old_str,new_str)
f.插入
insert(str,start,length,repr):在指定的位置插入字元或字串
示例:select insert('aaabcdefg',3,5,'what') ---aawhatfg
select insert('aaabcdefg',3,1000,'what') ---aawhat
g.補充:
補充:①重複函式repeat(str,count)
②大小寫轉化:lower(str)/lcase(str)、upper(str)/ucase(str)
③反轉函式:reverse(str)
④空格函式:space(n)
⑤去空格函式:ltrim()、rtrim()、trim()
3.數值函式
a.轉換
cast
b.擷取
round(data,n):四捨五入,保留小數字數n位
truncate(data,n):擷取資料到n位,不四捨五入
floor():資料的最大整數部分
ceil():大於資料的最小整數
c.取最小值
least(arg1,...):取最小值
d.資料處理
rand():隨機小數
format(,n):資料格式化,轉化為含千分位資料,四捨五入保留n位小數
4.控制流函式
a.case
case when ....then ...else ... end
b.if
if(condition,true_value,false_value)
c.ifnull
ifnull(arg1,arg2):arg1位空時則取值arg2,
d.nullif
nullif(arg1,arg2):arg1=arg2時為空,否則為arg1
資料匯入匯出(20171011更)
mysql中如何資料及結構的匯入匯出來實現資料及結構的備份呢?在工作中使用到mysqldump命令。有興趣可以看這裡:
匯入舉例:
load data local infile '/shj/etl/new_data.csv' into table bi.test(a,b,c,d);
匯出舉例(這裡我們通過-d引數,只匯出資料結構;--skip-lock-tables,避免出現許可權不足的1044錯誤):
MySQL常用技能篇
資料庫操作 建立資料庫 create database demon 刪除資料庫 drop database demon 表操作 建立 1.1 建立資料表 create table s position id int not null auto increment,name varchar 20 no...
零八技能總結篇
零八最大的收穫是默默翻譯c 2008和.net3.5平台詳解一書,到今天前幾章已經有眉目了,雖然某些段落文字尚還不通順,但是信心滿滿,希望零九年能順利完成,以前不僅多次對英語望而卻不,現在看來並不一定搞不出來,關鍵是要有信心和決心,在某些中英文書籍對照上,感覺看中文書還是比較吃虧的,希望以後能堅持多...
自身技能總結篇
目前已經大四了,明年畢業就成了應屆畢業生了。這段時間也在瘋狂的做專案,彌補自身的不足。覺得不能眼高手低,要清楚了解自己會什麼,掌握了哪些技能。讓企業能看到自身的價值,這才是重中之重。總不能別人問你會什麼,你不知道自己會什麼,沒有總結。沒有方向 目標的努力也是可怕的。一 linux方向 1 熟悉掌握l...