node-Mysql數(shù)據(jù)庫(kù)

目標(biāo)

mysql數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)總結(jié)

一、基礎(chǔ)常用命令

1.創(chuàng)建命令

create user ‘用戶(hù)名’ @‘ip’ identified by ‘密碼’; 創(chuàng)建數(shù)據(jù)庫(kù)用戶(hù)

drop user 用戶(hù)名@ip 刪除用戶(hù)

show databases; 查數(shù)據(jù)庫(kù)

show tables; 看表

create database 數(shù)據(jù)庫(kù)名 default charset utf8; 創(chuàng)建數(shù)據(jù)庫(kù)

create table 表名(列名 數(shù)據(jù)類(lèi)型 約束···,列名 數(shù)據(jù)類(lèi)型 約束···)engine=innodb default charset=utf8 創(chuàng)建表

其中數(shù)據(jù)類(lèi)型種類(lèi) 數(shù)字(int,tinyint,smallint,float,double),字符串(char(個(gè)數(shù))varchar(個(gè)數(shù)))時(shí)間(DATE,TIME,DATETIME),枚舉enum(值只能是枚舉中的元素),集合set(值只能是結(jié)合元素的組合)

2.查表命令

條件查詢(xún)

select * from 表名;

select 列名···from 表名;

select 列名 from 表名 where 列名(id等) >/</!= value;

select 列名,常量 from 表名; 增加一個(gè)常量列

select 列名 from 表名 where 列名 in/not in/between and value;

select 列名 from 表名 where 條件1 and 條件2;

特殊的:select 列名 from 表名 where 列名 in (select 列名(只能一列) from 表名);

select 列名 from 表名 where 列名 like ‘xx%’/’%xx’/“xx_”; 查詢(xún)以xx開(kāi)頭/xx結(jié)尾 ,%代表任意位,_代表一位

select xx,(select xx from …) from … 查詢(xún)條件做常量值

分頁(yè)

select 列名 from 表名 limit num; 顯示num個(gè)

select 列名 from 表名 limit num1,num2;從num1后取num2行數(shù)據(jù),num1是起始位置,num2是個(gè)數(shù)

select 列名 from 表名 limit num1 offset num2;從num2后取num1行數(shù)據(jù),num2是起始位置,num1是個(gè)數(shù)

排序

select * from 表名 order by 列名 asc;升序

select * from 表名 order by 列名 desc;降序

select * from 表名 order by 列名1 desc 列名2 asc; 首先遵循列1降序,遇到相同數(shù)據(jù)時(shí),升序

select count/sum/max/min/avg(列名1),列名2 from 表名 group by 列名(通常是列名2);

分組

select count/sum/max/min/avg(列名1),列名2 from 表名 group by 列名(通常是列名2)having 條件;分組操作后篩選

連表

select * from 表1 left join 表2 on 表1.列名=表2.列名; 左連接

select * from 表1 right join 表2 on 表1.列名=表2.列名; 右連接

select * from 表1 inner join 表2 on 表1.列名=表2.列名; 內(nèi)連接

注意:如果超過(guò)3個(gè)表聯(lián)合操作,如果其中兩個(gè)表操作時(shí)已經(jīng)改變了表結(jié)構(gòu),應(yīng)該將這兩個(gè)表操作的結(jié)果作為一個(gè)臨時(shí)表再與第三個(gè)表聯(lián)合操作。

3.刪除,修改,插入命令

插入

insert into 表名(列名1,列名2···) values(值1,值2···),(值1,值2···),(值1,值2···); 插入值

insert into 表名1(列名) select 列名 from 表2; 在表1中插入表2中數(shù)據(jù)

修改

update 表名 set 列名1=value1,列名2=value2 where 條件1 [and/or 條件2];

刪除

delete from 表名; 清除表(如果有自增id,id 不會(huì)重新開(kāi)始)

delete from 表名 where 條件; 清除特定數(shù)據(jù)

truncate table 表名;清除表(如果有自增id,id 會(huì)重新開(kāi)始)

4.修改表結(jié)構(gòu)

alter table 表名 auto_increment=value;設(shè)置自增鍵起始值;

alter table 表名 drop 列名;刪除列

alter table 表名 add 列名 數(shù)據(jù)類(lèi)型 約束; 增加列

alter table 表名 change 舊列名 新列名 數(shù)據(jù)類(lèi)型; 修改字段類(lèi)型

alter table 表名 modify 列名 數(shù)據(jù)類(lèi)型; 修改數(shù)據(jù)類(lèi)型

alter table 舊表名 rename 新表名; 修改表名

alter table 表名 drop primary key; 刪除表中主鍵

alter table 表名 add 列名 數(shù)據(jù)類(lèi)型 primary key;添加主鍵

alter table 表名 add primary key(列名);設(shè)置主鍵

alter table 表名 add column 列名 數(shù)據(jù)類(lèi)型 after 列名;在某一列后添加主鍵

二.mysql進(jìn)階

1.外鍵

外鍵適用于一對(duì)多,一對(duì)一,多對(duì)多三種情況

一對(duì)多

典型案例員工與部門(mén),一個(gè)部門(mén)對(duì)應(yīng)于多個(gè)員工,一個(gè)員工對(duì)應(yīng)于一個(gè)部分,所以要在員工表中設(shè)置部門(mén)id列,并設(shè)置為外鍵,與部門(mén)表id關(guān)聯(lián)。

一對(duì)一

案例博客園用戶(hù)與博客,不是每個(gè)用戶(hù)都寫(xiě)博客,寫(xiě)博客的用戶(hù)與擁有的博客地址一一對(duì)應(yīng),所以在博客用戶(hù)表user中設(shè)置blog_id,設(shè)置成外鍵和唯一索引,與博客表blog中id關(guān)聯(lián)

create table user(id int not null auto_increment primary key,name char(10), blog_id int,unique uq1(blog_id),constraint fk_user_blog foreign key(blog_id) references blog(id))engine=innodb default charset=utf8;

多對(duì)多

典型案例電腦與用戶(hù),一個(gè)用戶(hù)可以使用多臺(tái)電腦,一臺(tái)電腦對(duì)應(yīng)多個(gè)用戶(hù),多對(duì)多,此時(shí)一般選擇新建一個(gè)表contact,在其中設(shè)置兩個(gè)外鍵,同時(shí)關(guān)聯(lián)用戶(hù)表id與電腦表id

create table contact(id int not null auto_increment primary key,user_id int,computer_id int,unique uq2(user_id,computer_id),constraint fk_user foreign key(user_id) references user(id),constraint fk_user foreign key(computer_id) references computer(id))engine=innodb default charset=utf8;

可以看情況決定要不要把兩個(gè)外鍵弄成聯(lián)合唯一索引。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容