MySQL心得總結《一》

2021-08-14 04:19:50 字數 3757 閱讀 7326

1、場景:查詢一張表,並把查詢結果insert到另一張表中(資料遷移)

insert

into table1 (col1.col2,col3,col4,col5) select (col1.col2,col3,col4,col5) from table2

注意:各個欄位的值要一一對應

2、場景:修改表結構為表增加一列

alter table student add age int (11) default 0 not null comment 『年齡』

3、場景:表連線時,新增資料條件,篩選子表資料。

舉例:table1 table2 表連線時值只保留table2中is_delete=0(沒有刪除)的資料;

table1 left join table2 on table1.id = table2.pid and table2.is_delete=0

4、group by 進行分組後,查詢的字段只能是分組字段,那麼需要其他字段怎麼辦?

使用聚合函式包一下:max(emp_name)

5、向一張表中插入一條資料,如果存在的話,就update(一條sql,與資料庫只有一次互動,效率高)需要建立唯一索引(可以為多個字段建立唯一索引)

方案一:需要為表增加乙個唯一索引 建立唯一索引方式:

唯一索引:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。

5.1、建立表時增加

create

table

`idcard` (

`id` bigint(20) not

null auto_increment comment '主鍵',

`number`

varchar(10) not

null comment '身份證號',

`born_number`

varchar(10) not

null comment '出生編號',

`name`

varchar(10) not

null comment '名字',

`addr`archar(20) not

null,

`birthday`

varchar(20) not

null,

`gmt_modified` datetime not

null,

primary

key (`id`),

unique index `uk_idcard_number` (`number`,`born_number`))

5.2、新增唯一索引:

create unique index indexname on tablename(tablecolumns)

5.3、修改表結構新增唯一索引:

alter table table_name add unique on (tablecolumns)

5.4:一條sql實現插入或修改;

insert

into idcard (`number`,`born_number`

,`name`,`birthday`,`gmt_modified`)values(:number,:born_number,:name,:birthday

,:gmtmodified)

on duplicate key

update

`name`=:name,`gmt_modified`=now()

sql分析:idcard表有number和born_number的組合唯一索引,出現重複後會執行update操作,修改name, modify_empid,gmt_modified

如果在insert語句末尾指定了on duplicate key update,並且插入行後會導致在乙個unique索引或primary key中出現重複值,則在出現重複值的行執行update;如果不會導致唯一值列重複的問題,則插入新行

6、場景公升級:查詢一張表,sum(col)出合計,再重新插入改表中,如果存在改條合計資料,則update,否則insert。

建立一張表:

create

table

`income_money` (

`id` bigint(20) not

null auto_increment comment '主鍵',

`product_id` bigint(20) not

null comment '產品id',

`month`

varchar(10) null

default

null comment '月份'

`money` bigint(20) null

default

null comment '每月收入',

primary

key (`id`),

unique index `uk_income_money_product_id` (`project_id`,`month`)

)

統計產品的年收入,並插入一條產品年收入資料,如果該資料已經存在則修改:

create

table

`income_money` (

`id` bigint(20) not

null auto_increment comment '主鍵',

`product_id` bigint(20) not

null comment '產品id',

`income_type`

varchar(20) not

null comment

'型別(incomemonth:月 incomeyear:年)',

`month`

varchar(10) null

default

null comment '月份'

`money` bigint(20) null

default

null comment '收入',

primary

key (`id`),

unique index `uk_income_money` (`project_id`,`income_type`,`month`)

)insert

into income_money (`project_id`,`income_type`,`month`,`money`)

select tmp.project_id,tmp.income_type,tmp.month,tmp.money

from (select

`project_id`,'incomeyear'

as income_type, :month

asmonth, sum(`money`) as money

from income_money

where project_id=:projectid and income_type<>'all'

group

by project_id,`month`) tmp

on duplicate key

update

`month`=tmp.month,`gaap`=tmp.money

MYSQL學習心得 總結

我的mysql學習心得 一 簡單語法 我的mysql學習心得 二 資料型別寬度 我的mysql學習心得 三 檢視字段長度 我的mysql學習心得 四 資料型別 我的mysql學習心得 五 運算子 我的mysql學習心得 六 函式 我的mysql學習心得 七 查詢 我的mysql學習心得 八 插入 更...

mysql 心得 MySQL心得6

1.算術運算子 算術運算子在兩個表示式上執行數 算,這兩個表示式可以是任何數字資料型別。算術運算子有 加 減 乘 除 和 求模 5種運算。1 運算子 運算子用於獲得乙個或多個的和 select 1.23.09345,0.0000000000 1.算術運算子 算術運算子在兩個表示式上執行數 算,這兩個...

大一ACM心得總結

看了我的大學長 侯盛棟學長 對他的acm之路進行了深刻的總結 我覺得是時候應該對我的2016做個小結吧.說實在話,從開學起,我先後加入了學務中心,各種社團,原本想在裡面一展風采,和志趣相投的人一起發展我的興趣愛好,也許可能是因為學業的原因,也許是因為其他原因,我所加入的社團的最後結果是活動基本沒有參...