MySQL常用技能篇

2022-07-10 13:03:15 字數 4470 閱讀 8157

寫在之前的話:

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...