MySQL基礎(chǔ)

1、什么是數(shù)據(jù)庫(kù) ?

 答:數(shù)據(jù)的倉(cāng)庫(kù)薇宠,如:在ATM的示例中我們創(chuàng)建了一個(gè) db 目錄憨愉,稱其為數(shù)據(jù)庫(kù)

2、什么是 MySQL臂港、Oracle森枪、SQLite、Access审孽、MS SQL Server等 县袱?

 答:他們均是一個(gè)軟件,都有兩個(gè)主要的功能:

a. 將數(shù)據(jù)保存到文件或內(nèi)存

b. 接收特定的命令佑力,然后對(duì)文件進(jìn)行相應(yīng)的操作

3显拳、什么是SQL ?

 答:MySQL等軟件可以接受命令搓萧,并做出相應(yīng)的操作杂数,由于命令中可以包含刪除文件宛畦、獲取文件內(nèi)容等眾多操作,對(duì)于編寫的命令就是是SQL語(yǔ)句揍移。

二次和、MySQL安裝

? ? ? MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開(kāi)發(fā)那伐,目前屬于 Oracle 旗下公司踏施。MySQL 最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在 WEB 應(yīng)用方面MySQL是最好的 RDBMS (Relational Database Management System罕邀,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件之一畅形。

想要使用MySQL來(lái)存儲(chǔ)并操作數(shù)據(jù),則需要做幾件事情:

  a. 安裝MySQL服務(wù)端

  b. 安裝MySQL客戶端

  b. 【客戶端】連接【服務(wù)端】

  c. 【客戶端】發(fā)送命令給【服務(wù)端MySQL】服務(wù)的接受命令并執(zhí)行相應(yīng)操作(增刪改查等)

? ? 下載

? ? ? ? ? http://dev.mysql.com/downloads/mysql/?

? ? 安裝

? ? ? ? windows:? ? ? ? ?

? ? ? ? ? ? ? http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html

? ? ? ? ? linux:

? ? ? ? ? ? ? yum install mysql-server

? ? ? ? ? mac:

? ? ? ? ? ? ? 一直點(diǎn)下一步

客戶端連接

連接:

? ? ? 1诉探、mysql管理人默認(rèn)為root日熬,沒(méi)有設(shè)置密碼則直接登錄

? ? ? ? ? ? ? mysql -h host -u root? -p 不用輸入密碼按回車自動(dòng)進(jìn)入

? ? ? 2、如果想設(shè)置mysql密碼

? ? ? ? ? ? ? mysqladmin -u root password1234563肾胯、如果你的root現(xiàn)在有密碼了(123456)竖席,那么修改密碼為abcdef的命令是:

? ? ? ? ? ? ? mysqladmin -u root -p password abcdef

退出:

? ? ? QUIT 或者 ctrl+D

三、數(shù)據(jù)庫(kù)基礎(chǔ)

分為兩大部分:

? ? ? ? ? ? ? ? ? 1敬肚、數(shù)據(jù)庫(kù)和表的創(chuàng)建;

? ? ? ? ? ? ? ? ? 2毕荐、數(shù)據(jù)庫(kù)和表內(nèi)容的操作

數(shù)據(jù)庫(kù)操作-思路圖

1、數(shù)據(jù)庫(kù)和表的創(chuàng)建

? (一)數(shù)據(jù)庫(kù)的創(chuàng)建

1.1艳馒、顯示數(shù)據(jù)庫(kù)

1SHOW DATABASES;

? ? 默認(rèn)數(shù)據(jù)庫(kù):

 ? ?    ? mysql - 用戶權(quán)限相關(guān)數(shù)據(jù)

      test - 用于用戶測(cè)試數(shù)據(jù)

      information_schema - MySQL本身架構(gòu)相關(guān)數(shù)據(jù)

1.2憎亚、創(chuàng)建數(shù)據(jù)庫(kù)

# utf-8? CREATE DATABASE 數(shù)據(jù)庫(kù)名稱 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

? # gbk

? CREATE DATABASE 數(shù)據(jù)庫(kù)名稱 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

1.3、打開(kāi)數(shù)據(jù)庫(kù)

? USE db_name;

? 注:每次使用數(shù)據(jù)庫(kù)必須打開(kāi)相應(yīng)數(shù)據(jù)庫(kù)

顯示當(dāng)前使用的數(shù)據(jù)庫(kù)中所有表:SHOW TABLES;

1.4弄慰、用戶管理

? ? ? ? ? ? ? ? ? 用戶設(shè)置:

創(chuàng)建用戶

? ? create user '用戶名'@'IP地址'identified by'密碼';

刪除用戶

? ? drop user '用戶名'@'IP地址';

修改用戶

? ? rename user '用戶名'@'IP地址'; to'新用戶名'@'IP地址';;

修改密碼

? ? set password for'用戶名'@'IP地址'= Password('新密碼')

PS:用戶權(quán)限相關(guān)數(shù)據(jù)保存在mysql數(shù)據(jù)庫(kù)的user表中第美,所以也可以直接對(duì)其進(jìn)行操作(不建議)

用戶權(quán)限設(shè)置:

show grantsfor'用戶'@'IP地址'-- 查看權(quán)限

grant? 權(quán)限 on 數(shù)據(jù)庫(kù).表 to? '用戶'@'IP地址'-- 授權(quán)

revoke 權(quán)限 on 數(shù)據(jù)庫(kù).表 from '用戶'@'IP地址'-- 取消權(quán)限

? all privileges? 除grant外的所有權(quán)限

? ? ? ? ? ? select? ? ? ? ? 僅查權(quán)限

? ? ? ? ? ? select,insert? 查和插入權(quán)限

? ? ? ? ? ? ...

? ? ? ? ? ? usage? ? ? ? ? ? ? ? ? 無(wú)訪問(wèn)權(quán)限

? ? ? ? ? ? alter? ? ? ? ? ? ? ? ? 使用alter table

? ? ? ? ? ? alter routine? ? ? ? ? 使用alter procedure和drop procedure

? ? ? ? ? ? create? ? ? ? ? ? ? ? ? 使用create table

? ? ? ? ? ? create routine? ? ? ? ? 使用create procedure

? ? ? ? ? ? create temporary tables 使用create temporary tables

? ? ? ? ? ? create user? ? ? ? ? ? 使用create user、drop user曹动、rename user和revoke? all privileges

? ? ? ? ? ? create view? ? ? ? ? ? 使用create view

? ? ? ? ? ? delete? ? ? ? ? ? ? ? ? 使用delete

? ? ? ? ? ? drop? ? ? ? ? ? ? ? ? ? 使用drop table

? ? ? ? ? ? execute? ? ? ? ? ? ? ? 使用call和存儲(chǔ)過(guò)程

? ? ? ? ? ? file? ? ? ? ? ? ? ? ? ? 使用select into outfile 和 load data infile

? ? ? ? ? ? grant option? ? ? ? ? ? 使用grant 和 revoke

? ? ? ? ? ? index? ? ? ? ? ? ? ? ? 使用index

? ? ? ? ? ? insert? ? ? ? ? ? ? ? ? 使用insert

? ? ? ? ? ? lock tables? ? ? ? ? ? 使用lock table

? ? ? ? ? ? process? ? ? ? ? ? ? ? 使用show full processlist

? ? ? ? ? ? select? ? ? ? ? ? ? ? ? 使用select

? ? ? ? ? ? show databases? ? ? ? ? 使用show databases

? ? ? ? ? ? show view? ? ? ? ? ? ? 使用show view

? ? ? ? ? ? update? ? ? ? ? ? ? ? ? 使用update

? ? ? ? ? ? reload? ? ? ? ? ? ? ? ? 使用flush

? ? ? ? ? ? shutdown? ? ? ? ? ? ? ? 使用mysqladmin shutdown(關(guān)閉MySQL)

? ? ? ? ? ? super? ? ? ? ? ? ? ? ? 使用change master斋日、kill、logs墓陈、purge恶守、master和set global。還允許mysqladmin調(diào)試登陸

? ? ? ? ? ? replication client? ? ? 服務(wù)器位置的訪問(wèn)

? ? ? ? ? ? replication slave? ? ? 由復(fù)制從屬使用

對(duì)于數(shù)據(jù)庫(kù)名的解釋

對(duì)于目標(biāo)數(shù)據(jù)庫(kù)以及內(nèi)部其他:

? ? ? ? ? ? 數(shù)據(jù)庫(kù)名.*? ? ? ? ? 數(shù)據(jù)庫(kù)中的所有

? ? ? ? ? ? 數(shù)據(jù)庫(kù)名.表? ? ? ? ? 指定數(shù)據(jù)庫(kù)中的某張表

? ? ? ? ? ? 數(shù)據(jù)庫(kù)名.存儲(chǔ)過(guò)程? ? 指定數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程

? ? ? ? ? ? *.*? ? ? ? ? ? ? ? 所有數(shù)據(jù)庫(kù)

對(duì)于ip地址的訪問(wèn)

用戶名@IP地址 用戶只能在改IP下才能訪問(wèn)

? ? ? ? ? ? 用戶名@192.168.1.%? 用戶只能在改IP段下才能訪問(wèn)(通配符%表示任意)

? ? ? ? ? ? 用戶名@%? ? ? ? ? ? 用戶可以再任意IP下訪問(wèn)(默認(rèn)IP地址為%)

實(shí)際例子

grant all privileges on db1.tb1 TO'用戶名'@'IP' grant selecton db1.* TO'用戶名'@'IP' grant select,insert on *.* TO'用戶名'@'IP' revoke selecton db1.tb1 from'用戶名'@'IP'

1.4贡必、備份庫(kù)和恢復(fù)庫(kù)

? ? ? ? 備份庫(kù):

? ? ? ? MySQL備份和還原,都是利用mysqldump兔港、mysql和source命令來(lái)完成。

1.在Windows下MySQL的備份與還原

備份

1仔拟、開(kāi)始菜單|運(yùn)行|cmd|利用“cd/Program Files/MySQL/MySQL Server5.0/bin”命令進(jìn)入bin文件夾

2衫樊、利用“mysqldump-u 用戶名-p databasename>exportfilename”導(dǎo)出數(shù)據(jù)庫(kù)到文件,如mysqldump-u root-p voice>voice.sql,然后輸入密碼即可開(kāi)始導(dǎo)出科侈。

? 還原

? 1载佳、進(jìn)入MySQL Command Line Client,輸入密碼臀栈,進(jìn)入到“mysql>”蔫慧。

? 2、輸入命令"show databases权薯;"姑躲,回車,看看有些什么數(shù)據(jù)庫(kù)盟蚣;建立你要還原的數(shù)據(jù)庫(kù)黍析,輸入"createdatabase voice;"屎开,回車阐枣。

? 3、切換到剛建立的數(shù)據(jù)庫(kù)牍戚,輸入"usevoice侮繁;"虑粥,回車如孝;導(dǎo)入數(shù)據(jù),輸入"source voice.sql娩贷;"第晰,回車,開(kāi)始導(dǎo)入彬祖,再次出現(xiàn)"mysql>"并且沒(méi)有提示錯(cuò)誤即還原成功茁瘦。

2、在linux下MySQL的備份與還原

2.1? 備份

(利用命令mysqldump進(jìn)行備份)? [root@localhost mysql]# mysqldump-u root-p voice>voice.sql储笑,輸入密碼即可甜熔。

2.2? 還原方法一:? [root@localhost ~]# mysql-u root-p 回車,輸入密碼突倍,進(jìn)入MySQL的控制臺(tái)"mysql>"腔稀,同1.2還原。

方法二:? [root@localhost mysql]# mysql-u root-p voice<voice.sql羽历,輸入密碼即可焊虏。

3、更多備份及還原命令

備份:1.備份全部數(shù)據(jù)庫(kù)的數(shù)據(jù)和結(jié)構(gòu)

mysqldump -uroot-p123456-A>F:\all.sql2.備份全部數(shù)據(jù)庫(kù)的結(jié)構(gòu)(加-d 參數(shù))

mysqldump -uroot-p123456-A-d>F:\all_struct.sql3.備份全部數(shù)據(jù)庫(kù)的數(shù)據(jù)(加-t 參數(shù))

mysqldump -uroot-p123456-A-t>F:\all_data.sql4.備份單個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)和結(jié)構(gòu)(,數(shù)據(jù)庫(kù)名mydb)

mysqldump -uroot-p123456 mydb>F:\mydb.sql5.備份單個(gè)數(shù)據(jù)庫(kù)的結(jié)構(gòu)

mysqldump -uroot-p123456 mydb-d>F:\mydb.sql6.備份單個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)

mysqldump -uroot-p123456 mydb-t>F:\mydb.sql7.備份多個(gè)表的數(shù)據(jù)和結(jié)構(gòu)(數(shù)據(jù)秕磷,結(jié)構(gòu)的單獨(dú)備份方法與上同)

mysqldump -uroot-p123456 mydb t1 t2>f:\multables.sql8.一次備份多個(gè)數(shù)據(jù)庫(kù)

mysqldump -uroot-p123456--databases db1 db2 >f:\muldbs.sql還原:

還原部分分(1)mysql命令行source方法 和 (2)系統(tǒng)命令行方法1.還原全部數(shù)據(jù)庫(kù):

(1) mysql命令行:mysql>source f:\all.sql

(2) 系統(tǒng)命令行: mysql-uroot-p123456<f:\all.sql2.還原單個(gè)數(shù)據(jù)庫(kù)(需指定數(shù)據(jù)庫(kù))

(1) mysql>use mydb

mysql>source f:\mydb.sql

(2) mysql-uroot-p123456 mydb<f:\mydb.sql3.還原單個(gè)數(shù)據(jù)庫(kù)的多個(gè)表(需指定數(shù)據(jù)庫(kù))

(1) mysql>use mydb

mysql>source f:\multables.sql

(2) mysql-uroot-p123456 mydb<f:\multables.sql4.還原多個(gè)數(shù)據(jù)庫(kù)诵闭,(一個(gè)備份文件里有多個(gè)數(shù)據(jù)庫(kù)的備份,此時(shí)不需要指定數(shù)據(jù)庫(kù))

(1) mysql命令行:mysql>source f:\muldbs.sql

(2) 系統(tǒng)命令行: mysql-uroot-p123456<f:\muldbs.sql

更多備份知識(shí):

http://www.jb51.net/article/41570.htm

(二)數(shù)據(jù)表的創(chuàng)建

1.1、顯示數(shù)據(jù)表

show tables;

1.2疏尿、創(chuàng)建數(shù)據(jù)表

create table 表名(

? ? 列名? 類型? 是否可以為空瘟芝,

? ? 列名? 類型? 是否可以為空

)ENGINE=InnoDB DEFAULT CHARSET=utf8

設(shè)置是否為空

是否可空,null表示空褥琐,非字符串

? ? ? ? ? ? not null- 不可空

? ? ? ? ? ? null- 可空

設(shè)置默認(rèn)值

默認(rèn)值模狭,創(chuàng)建列時(shí)可以指定默認(rèn)值,當(dāng)插入數(shù)據(jù)時(shí)如果未主動(dòng)設(shè)置踩衩,則自動(dòng)添加默認(rèn)值

? ? ? ? ? ? create table tb1(

? ? ? ? ? ? ? ? nid int not null defalut 2,

? ? ? ? ? ? ? ? num int not null? ? ? ? ? ? )

設(shè)置自增

自增嚼鹉,如果為某列設(shè)置自增列,插入數(shù)據(jù)時(shí)無(wú)需設(shè)置此列驱富,默認(rèn)將自增(表中只能有一個(gè)自增列)

? ? ? ? ? ? create table tb1(

? ? ? ? ? ? ? ? nid int not null auto_increment primary key,

? ? ? ? ? ? ? ? num int null

? ? ? ? ? ? )

? ? ? ? ? ? 或

? ? ? ? ? ? create table tb1(

? ? ? ? ? ? ? ? nid int not null auto_increment,

? ? ? ? ? ? ? ? num int null,

? ? ? ? ? ? ? ? index(nid)

? ? ? ? ? ? )

? ? ? ? ? ? 注意:1锚赤、對(duì)于自增列,必須是索引(含主鍵)褐鸥。

? ? ? ? ? ? ? ? 2线脚、對(duì)于自增可以設(shè)置步長(zhǎng)和起始值

? ? ? ? ? ? ? ? ? ? show session variables like 'auto_inc%';

? ? ? ? ? ? ? ? ? ? set session auto_increment_increment=2;

? ? ? ? ? ? ? ? ? ? set session auto_increment_offset=10;

? ? ? ? ? ? ? ? ? ? shwo global? variables like 'auto_inc%';

? ? ? ? ? ? ? ? ? ? set global auto_increment_increment=2;

? ? ? ? ? ? ? ? ? ? set global auto_increment_offset=10;

設(shè)置主鍵

主鍵,一種特殊的唯一索引叫榕,不允許有空值浑侥,如果主鍵使用單個(gè)列,則它的值必須唯一晰绎,如果是多列寓落,則其組合必須唯一。

? ? ? ? ? ? create table tb1(

? ? ? ? ? ? ? ? nid int not null auto_increment primary key,

? ? ? ? ? ? ? ? num int null

? ? ? ? ? ? )

? ? ? ? ? ? 或

? ? ? ? ? ? create table tb1(

? ? ? ? ? ? ? ? nid int not null,

? ? ? ? ? ? ? ? num int not null,

? ? ? ? ? ? ? ? primary key(nid,num)

? ? ? ? ? ? )

設(shè)置外鍵

外鍵荞下,一個(gè)特殊的索引伶选,只能是指定內(nèi)容

? ? ? ? ? ? creat table color(

? ? ? ? ? ? ? ? nid int not null primary key,

? ? ? ? ? ? ? ? name char(16) notnull? ? ? ? ? ? )

? ? ? ? ? ? create table fruit(

? ? ? ? ? ? ? ? nid int not null primary key,

? ? ? ? ? ? ? ? smt char(32)null ,

? ? ? ? ? ? ? ? color_id int not null,

? ? ? ? ? ? ? ? constraint fk_cc foreign key (color_id) references color(nid)

? ? ? ? ? ? )

主鍵與外鍵關(guān)系(非常重要)

http://www.cnblogs.com/programmer-tlh/p/5782451.html

1.3刪除表

drop table 表名

1.4、清空表

delete from 表名

truncate table 表名

1.5尖昏、基本數(shù)據(jù)類型

MySQL的數(shù)據(jù)類型大致分為:數(shù)值仰税、時(shí)間和字符串

? bit[(M)]

? ? ? ? ? ? 二進(jìn)制位(101001),m表示二進(jìn)制位的長(zhǎng)度(1-64)抽诉,默認(rèn)m=1? ? ? ? tinyint[(m)] [unsigned] [zerofill]

? ? ? ? ? ? 小整數(shù)陨簇,數(shù)據(jù)類型用于保存一些范圍的整數(shù)數(shù)值范圍:

? ? ? ? ? ? 有符號(hào):

? ? ? ? ? ? ? ? -128~127.

? ? ? ? ? ? 無(wú)符號(hào):

? ? ? ? ? ? ? ? 0~255? ? ? ? ? ? 特別的: MySQL中無(wú)布爾值,使用tinyint(1)構(gòu)造迹淌。

? ? ? ? int[(m)][unsigned][zerofill]

? ? ? ? ? ? 整數(shù)河绽,數(shù)據(jù)類型用于保存一些范圍的整數(shù)數(shù)值范圍:

? ? ? ? ? ? ? ? 有符號(hào):

? ? ? ? ? ? ? ? ? ? -2147483648~2147483647? ? ? ? ? ? ? ? 無(wú)符號(hào):

? ? ? ? ? ? ? ? ? ? 0~4294967295? ? ? ? ? ? 特別的:整數(shù)類型中的m僅用于顯示,對(duì)存儲(chǔ)范圍無(wú)限制巍沙。例如: int(5),當(dāng)插入數(shù)據(jù)2時(shí)葵姥,select時(shí)數(shù)據(jù)顯示為:00002? ? ? ? bigint[(m)][unsigned][zerofill]

? ? ? ? ? ? 大整數(shù),數(shù)據(jù)類型用于保存一些范圍的整數(shù)數(shù)值范圍:

? ? ? ? ? ? ? ? 有符號(hào):

? ? ? ? ? ? ? ? ? ? -9223372036854775808~9223372036854775807? ? ? ? ? ? ? ? 無(wú)符號(hào):

? ? ? ? ? ? ? ? ? ? 0~18446744073709551615decimal[(m[,d])] [unsigned] [zerofill]

? ? ? ? ? ? 準(zhǔn)確的小數(shù)值句携,m是數(shù)字總個(gè)數(shù)(負(fù)號(hào)不算)榔幸,d是小數(shù)點(diǎn)后個(gè)數(shù)。 m最大值為65,d最大值為30削咆。

? ? ? ? ? ? 特別的:對(duì)于精確數(shù)值計(jì)算時(shí)需要用此類型

? ? ? ? ? ? ? ? ? decaimal能夠存儲(chǔ)精確值的原因在于其內(nèi)部按照字符串存儲(chǔ)牍疏。

? ? ? ? FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

? ? ? ? ? ? 單精度浮點(diǎn)數(shù)(非準(zhǔn)確小數(shù)值),m是數(shù)字總個(gè)數(shù)拨齐,d是小數(shù)點(diǎn)后個(gè)數(shù)鳞陨。

? ? ? ? ? ? ? ? 無(wú)符號(hào):

? ? ? ? ? ? ? ? ? ? -3.402823466E+38to -1.175494351E-38,

? ? ? ? ? ? ? ? ? ? 01.175494351E-38to3.402823466E+38? ? ? ? ? ? ? ? 有符號(hào):

? ? ? ? ? ? ? ? ? ? 01.175494351E-38to3.402823466E+38**** 數(shù)值越大,越不準(zhǔn)確 ****? ? ? ? DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]

? ? ? ? ? ? 雙精度浮點(diǎn)數(shù)(非準(zhǔn)確小數(shù)值)瞻惋,m是數(shù)字總個(gè)數(shù)厦滤,d是小數(shù)點(diǎn)后個(gè)數(shù)。

? ? ? ? ? ? ? ? 無(wú)符號(hào):

? ? ? ? ? ? ? ? ? ? -1.7976931348623157E+308to -2.2250738585072014E-30802.2250738585072014E-308to1.7976931348623157E+308? ? ? ? ? ? ? ? 有符號(hào):

? ? ? ? ? ? ? ? ? ? 02.2250738585072014E-308to1.7976931348623157E+308**** 數(shù)值越大歼狼,越不準(zhǔn)確 ****char (m)

? ? ? ? ? ? char數(shù)據(jù)類型用于表示固定長(zhǎng)度的字符串掏导,可以包含最多達(dá)255個(gè)字符。其中m代表字符串的長(zhǎng)度羽峰。

? ? ? ? ? ? PS: 即使數(shù)據(jù)小于m長(zhǎng)度趟咆,也會(huì)占用m長(zhǎng)度

? ? ? ? varchar(m)

? ? ? ? ? ? varchars數(shù)據(jù)類型用于變長(zhǎng)的字符串,可以包含最多達(dá)255個(gè)字符梅屉。其中m代表該數(shù)據(jù)類型所允許保存的字符串的最大長(zhǎng)度值纱,只要長(zhǎng)度小于該最大值的字符串都可以被保存在該數(shù)據(jù)類型中。

? ? ? ? ? ? 注:雖然varchar使用起來(lái)較為靈活坯汤,但是從整個(gè)系統(tǒng)的性能角度來(lái)說(shuō)虐唠,char數(shù)據(jù)類型的處理速度更快,有時(shí)甚至可以超出varchar處理速度的50%玫霎。因此凿滤,用戶在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)應(yīng)當(dāng)綜合考慮各方面的因素妈橄,以求達(dá)到最佳的平衡

? ? ? ? text

? ? ? ? ? ? text數(shù)據(jù)類型用于保存變長(zhǎng)的大字符串庶近,可以組多到65535 (2**16?1)個(gè)字符。

? ? ? ? mediumtext

? ? ? ? ? ? A TEXT column with a maximum length of 16,777,215(2**24?1) characters.

? ? ? ? longtext

? ? ? ? ? ? A TEXT column with a maximum length of 4,294,967,295or 4GB (2**32?1) characters.

? ? ? ? enum? ? ? ? ? ? 枚舉類型眷蚓,

? ? ? ? ? ? An ENUM column can have a maximum of 65,535distinct elements. (The practical limitisless than3000.)

? ? ? ? ? ? 示例:

? ? ? ? ? ? ? ? CREATE TABLE shirts (

? ? ? ? ? ? ? ? ? ? name VARCHAR(40),

? ? ? ? ? ? ? ? ? ? size ENUM('x-small','small','medium','large','x-large')

? ? ? ? ? ? ? ? );

? ? ? ? ? ? ? ? INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');

? ? ? ? set? ? ? ? ? ? 集合類型

? ? ? ? ? ? A SET column can have a maximum of 64 distinct members.

? ? ? ? ? ? 示例:

? ? ? ? ? ? ? ? CREATE TABLE myset (col SET('a','b','c','d'));

? ? ? ? ? ? ? ? INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');

? ? ? ? DATE

? ? ? ? ? ? YYYY-MM-DD(1000-01-01/9999-12-31)

? ? ? ? TIME

? ? ? ? ? ? HH:MM:SS('-838:59:59'/'838:59:59')

? ? ? ? YEAR

? ? ? ? ? ? YYYY(1901/2155)

? ? ? ? DATETIME

? ? ? ? ? ? YYYY-MM-DD HH:MM:SS(1000-01-0100:00:00/9999-12-3123:59:59? ? Y)

? ? ? ? TIMESTAMP

? ? ? ? ? ? YYYYMMDD HHMMSS(1970-01-0100:00:00/2037年某時(shí))

1.6鼻种、修改表(alter)?

添加列:alter table 表名 add 列名 類型

刪除列:alter table 表名 drop column 列名

修改列:

? ? ? ? alter table 表名 modify column 列名 類型;? -- 類型

? ? ? ? alter table 表名 change 原列名 新列名 類型; -- 列名,類型

添加主鍵:

? ? ? ? alter table 表名 add primary key(列名);

刪除主鍵:

? ? ? ? alter table 表名 drop primary key;

? ? ? ? alter table 表名? modify? 列名 int, drop primary key;

添加外鍵:alter table 從表 add constraint 外鍵名稱(形如:FK_從表_主表) foreign key 從表(外鍵字段) references 主表(主鍵字段);

刪除外鍵:alter table 表名 drop foreign key 外鍵名稱

修改默認(rèn)值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;

刪除默認(rèn)值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

1.7沙热、數(shù)據(jù)表關(guān)系

關(guān)聯(lián)映射:一對(duì)多/多對(duì)一

存在最普遍的映射關(guān)系叉钥,簡(jiǎn)單來(lái)講就如球員與球隊(duì)的關(guān)系;

一對(duì)多:從球隊(duì)角度來(lái)說(shuō)一個(gè)球隊(duì)擁有多個(gè)球員 即為一對(duì)多

多對(duì)一:從球員角度來(lái)說(shuō)多個(gè)球員屬于一個(gè)球隊(duì) 即為多對(duì)一

數(shù)據(jù)表間一對(duì)多關(guān)系如下圖:

關(guān)聯(lián)映射:一對(duì)一

一對(duì)一關(guān)系就如球隊(duì)與球隊(duì)所在地址之間的關(guān)系篙贸,一支球隊(duì)僅有一個(gè)地址投队,而一個(gè)地址區(qū)也僅有一支球隊(duì)。

數(shù)據(jù)表間一對(duì)一關(guān)系的表現(xiàn)有兩種爵川,一種是外鍵關(guān)聯(lián)敷鸦,一種是主鍵關(guān)聯(lián)。圖示如下:

一對(duì)一外鍵關(guān)聯(lián):

一對(duì)一主鍵關(guān)聯(lián):要求兩個(gè)表的主鍵必須完全一致,通過(guò)兩個(gè)表的主鍵建立關(guān)聯(lián)關(guān)系

關(guān)聯(lián)映射:多對(duì)多

多對(duì)多關(guān)系也很常見(jiàn)扒披,例如學(xué)生與選修課之間的關(guān)系值依,一個(gè)學(xué)生可以選擇多門選修課,而每個(gè)選修課又可以被多名學(xué)生選擇碟案。

數(shù)據(jù)庫(kù)中的多對(duì)多關(guān)聯(lián)關(guān)系一般需采用中間表的方式處理愿险,將多對(duì)多轉(zhuǎn)化為兩個(gè)一對(duì)多

1.8、數(shù)據(jù)表之間的約束

約束是一種限制价说,它通過(guò)對(duì)表的行或列的數(shù)據(jù)做出限制辆亏,來(lái)確保表的數(shù)據(jù)的完整性、唯一性鳖目。

MYSQL中褒链,常用的幾種約束:

===================================================

主鍵(PRIMARY KEY)是用于約束表中的一行,作為這一行的標(biāo)識(shí)符疑苔,在一張表中通過(guò)主鍵就能準(zhǔn)確定位到一行甫匹,因此主鍵十分重要。主鍵要求這一行的數(shù)據(jù)不能有重復(fù)且不能為空惦费。

還有一種特殊的主鍵——復(fù)合主鍵兵迅。主鍵不僅可以是表中的一列,也可以由表中的兩列或多列來(lái)共同標(biāo)識(shí)

===================================================

默認(rèn)值約束(DEFAULT)規(guī)定薪贫,當(dāng)有DEFAULT約束的列恍箭,插入數(shù)據(jù)為空時(shí)該怎么辦。

DEFAULT約束只會(huì)在使用INSERT語(yǔ)句(上一實(shí)驗(yàn)介紹過(guò))時(shí)體現(xiàn)出來(lái)瞧省,INSERT語(yǔ)句中扯夭,如果被DEFAULT約束的位置沒(méi)有值,那么這個(gè)位置將會(huì)被DEFAULT的值填充

===================================================

唯一約束(UNIQUE)比較簡(jiǎn)單鞍匾,它規(guī)定一張表中指定的一列的值必須不能有重復(fù)值交洗,即這一列每個(gè)值都是唯一的。

當(dāng)INSERT語(yǔ)句新插入的數(shù)據(jù)和已有數(shù)據(jù)重復(fù)的時(shí)候橡淑,如果有UNIQUE約束构拳,則INSERT失敗.

===================================================

外鍵(FOREIGN KEY)既能確保數(shù)據(jù)完整性,也能表現(xiàn)表之間的關(guān)系梁棠。

一個(gè)表可以有多個(gè)外鍵置森,每個(gè)外鍵必須REFERENCES(參考)另一個(gè)表的主鍵,被外鍵約束的列符糊,取值必須在它參考的列中有對(duì)應(yīng)值凫海。

在INSERT時(shí),如果被外鍵約束的值沒(méi)有在參考列中有對(duì)應(yīng)男娄,比如以下命令行贪,參考列(department表的dpt_name)中沒(méi)有dpt3把兔,則INSERT失敗

===================================================

非空約束(NOT NULL),聽(tīng)名字就能理解,被非空約束的列瓮顽,在插入值時(shí)必須非空县好。

在MySQL中違反非空約束,不會(huì)報(bào)錯(cuò)暖混,只會(huì)有警告.

CREATEDATABASE mysql_shiyan;

use mysql_text;

CREATETABLE department

(

? dpt_name? CHAR(20) NOT NULL,

? people_num INT(10)DEFAULT'10',

? CONSTRAINT dpt_pk PRIMARY KEY (dpt_name)

? );

CREATE TABLE employee

(

? id? ? ? INT(10) PRIMARY KEY,

? name? ? CHAR(20),

? age? ? INT(10),

? salary? INT(10)NOT NULL,

? phone? INT(12)NOT NULL,

? in_dpt? CHAR(20)NOT NULL,

? UNIQUE? (phone),

? CONSTRAINT emp_fk FOREIGN KEY(in_dpt)REFERENCES department(dpt_name)

? );

CREATE TABLE project

(

? proj_num? INT(10)NOT NULL,

? proj_name? CHAR(20)NOT NULL,

? start_date DATE NOT NULL,

? end_date? DATE DEFAULT'2015-04-01',

? of_dpt? ? CHAR(20)REFERENCES department(dpt_name),

? CONSTRAINT proj_pk PRIMARY KEY (proj_num,proj_name)

? );

2缕贡、數(shù)據(jù)庫(kù)和表內(nèi)容的操作(增、刪拣播、改晾咪、查)

1、增

insert into表 (列名,列名...)values (值,值,值...)insert into表 (列名,列名...)values (值,值,值...),(值,值,值...)insert into表 (列名,列名...)select(列名,列名...)from表

2贮配、刪

delete from 表

delete from表 where id=1 and name='alex'

3谍倦、改

update 表 set name ='alex' where id>1

4、查

  4.1泪勒、普通查詢

select * from 表

select * from表where id>1

select nid,name,gender as gg from表 where id>1

a昼蛀、條件

? ? select * from 表 where id>1 and name !='alex' and num=12;

? ? select * from 表 where id between 5 and 16;

? ? select * from 表 where id in(11,22,33)

? ? select * from 表 where id not in(11,22,33)

? ? select * from 表 where id in(select nid from 表)

b、限制

? ? select * from 表 limit 5;- 前5行

? ? select * from 表 limit 4,5;- 從第5行開(kāi)始的5行

4.2圆存、數(shù)據(jù)排序(查詢)

排序

? ? select * from 表 order by 列 asc - 根據(jù) “列” 從小到大排列

? ? select * from 表 order by 列 desc - 根據(jù) “列” 從大到小排列

? ? select * from 表 order by 列1 desc,列2 asc -根據(jù) “列1” 從大到小排列叼旋,如果相同則按列2從小到大排序

? ? 4.3、模糊查詢

通配符(模糊查詢)

? ? select * from 表 where name like 'ale%' - ale開(kāi)頭的所有(多個(gè)字符串)

? ? select * from 表 where name like 'ale_' -ale開(kāi)頭的所有(一個(gè)字符)

4.4沦辙、聚集函數(shù)查詢

1)COUNT? ? ? ? 語(yǔ)法:COUNT(e1)

? ? ? ? 參數(shù):e1為一個(gè)表達(dá)式夫植,可以是任意的數(shù)據(jù)類型

? ? ? ? 返回:返回?cái)?shù)值型數(shù)據(jù)

? ? ? ? 作用:返回e1指定列不為空的記錄總數(shù)2)SUM,

? ? ? ? 語(yǔ)法:SUM(e1)

? ? ? ? 參數(shù):e1為類型為數(shù)值型的表達(dá)式

? ? ? ? 返回:返回?cái)?shù)值型數(shù)據(jù)

? ? ? ? 作用:對(duì)e1指定的列進(jìn)行求和計(jì)算3)MIN,MAX? ? ? ? 語(yǔ)法:MIN(e1)、MAX(e1)

? ? ? ? 參數(shù):e1為一個(gè)字符型油讯、日期型或數(shù)值類型的表達(dá)式详民。

? ? ? ? ? ? 若e1為字符型,則根據(jù)ASCII碼來(lái)判斷最大值與最小值陌兑。

? ? ? ? 返回:根據(jù)e1參數(shù)的類型沈跨,返回對(duì)應(yīng)類型的數(shù)據(jù)。

? ? ? ? 作用:MIN(e1)返回e1表達(dá)式指定的列中最小值诀紊;

? ? ? ? ? ? ? MAX(e1)返回e1表達(dá)式指定的列中最大值谒出;4)AVG? ? ? ? 語(yǔ)法:AVG(e1)

? ? ? ? 參數(shù):e1為一個(gè)數(shù)值類型的表達(dá)式

? ? ? ? 返回:返回一個(gè)數(shù)值類型數(shù)據(jù)

? ? ? ? 作用:對(duì)e1表達(dá)式指定的列,求平均值邻奠。5)MEDIAN

? ? ? ? 語(yǔ)法:MEDIAN(e1)

? ? ? ? 參數(shù):e1為一個(gè)數(shù)值或日期類型的表達(dá)式

? ? ? ? 返回:返回一個(gè)數(shù)值或日期類型的數(shù)據(jù)

? ? ? ? 作用:首先,根據(jù)e1表達(dá)式指定的列为居,對(duì)值進(jìn)行排序碌宴;

? ? ? ? ? ? 若排序后,總記錄為奇數(shù)蒙畴,則返回排序隊(duì)列中贰镣,位于中間的值呜象;

? ? ? ? ? ? 若排序后,總記錄為偶數(shù)碑隆,則對(duì)位于排序隊(duì)列中恭陡,中間兩個(gè)值進(jìn)行求平均,返回這個(gè)平均值上煤;6)RANK

? ? ? ? 1)用法1:RANKOVER? ? ? ? ? ? ? 語(yǔ)法:? ? RANK( )? OVER([ PARTITION BY column1 ]ORDERBYcolumn2[ASC|DESC])

? ? ? ? ? ? ? ? 為分析函數(shù)休玩,為每條記錄產(chǎn)生一個(gè)序列號(hào),并返回劫狠。

? ? ? ? ? ? ? 參數(shù):? ? column1為列名拴疤,指定按照哪一列進(jìn)行分類(分組)

? ? ? ? ? ? ? ? ? column2為列名,指定根據(jù)哪列排序独泞,默認(rèn)為升序呐矾;

? ? ? ? ? ? ? ? ? 若指定了分類子句(PARTITION BY),則對(duì)每類進(jìn)行排序(每個(gè)分類單獨(dú)排序)

? ? ? ? ? ? ? 返回:返回一個(gè)數(shù)值類型數(shù)據(jù)懦砂,作為該記錄的序號(hào)蜒犯!

? ? ? ? ? ? ? 作用:為分析函數(shù),對(duì)記錄先按column1分類荞膘,再對(duì)每個(gè)分類進(jìn)行排序愧薛,并為每條記錄分配一個(gè)序號(hào)(每個(gè)分類單獨(dú)排序)

? ? ? ? ? ? ? 注意:排序字段值相同的記錄,分配相同的序號(hào)衫画。存在序號(hào)不連續(xù)的情況?

? ? ? ? ? ? ? 實(shí)例:student表記錄了學(xué)生每科的成績(jī)毫炉,要求按學(xué)科排序,并獲取每科分?jǐn)?shù)前兩名的記錄

? ? ? ? ? ? ? ? student表如下:? ? ?

? ? ? ? ? ? ? ? SQL> select * from student order by kemu;

? ? ? ? ? ? ? ? NAME? ? ? ID? ? ? ? ? ? ? ? KEMU? ? ? FENSHU

? ? ? ? ? ? ? ? ---------- -------------- -------------- ----------------Li0113101物理80? ? ? ? ? ? ? ? Luo? ? ? ? 0113011物理80? ? ? ? ? ? ? ? Wang? ? 0113077物理70? ? ? ? ? ? ? ? Zhang? ? 0113098物理90? ? ? ? ? ? ? ? Luo? ? ? ? 0113011高數(shù)80? ? ? ? ? ? ? ? Wang? ? ? 0113077高數(shù)70? ? ? ? ? ? ? ? Zhang? ? 0113098高數(shù)80? ? ? ? ? ? ? ? Li? ? ? ? ? ? 0113101高數(shù)908 rows selected

? ? ? ? ? ? ? ? 按學(xué)科分類削罩,按成績(jī)排序(降序)

? ? ? ? ? ? ? ? SQL>selec trank() over(partition by KEMU order by FENSHU desc) assort,student.* from student;

? ? ? ? ? ? ? ? ? ? ? SORT? ? NAME? ? ? ? ID? ? ? ? ? ? ? KEMU? ? ? FENSHU

? ? ? ? ? ? ? ? ---------- ---------- ---------------- ------------ ----------1Zhang0113098物理902Li0113101物理802Luo0113011物理804Wang0113077物理701Li0113101高數(shù)902Luo0113011高數(shù)802Zhang0113098高數(shù)804Wang0113077高數(shù)70? ? ? ? ? ? ? ? 由返回記錄可了解瞄勾,對(duì)排序列的值相同的記錄,rank為其分配了相同的序號(hào)(SORT NAME列)弥激。

? ? ? ? ? ? ? ? 并且之后的記錄的序號(hào)是不連續(xù)的进陡。

? ? ? ? ? ? ? ? 若獲取每科前兩名,只需對(duì)排序后的結(jié)果增加二次查詢即可

? ? ? ? ? ? ? ? select*from

? ? ? ? ? ? ? ? ? ? (select rank() over(partitionby KEMU order by FENSHU desc) assort_id,student.* from student) st

? ? ? ? ? ? ? ? wherest.sort_id<=2;

? ? ? ? 2)用法2:RANK WITHINGROUP? ? ? ? ? ? 語(yǔ)法: RANK( expr1 ) WITHIN GROUP(ORDERBY expr2 )

? ? ? ? ? ? ? ? 為聚合函數(shù)微服,返回一個(gè)值趾疚。

? ? ? ? ? ? 參數(shù):expr1為1個(gè)或多個(gè)常量表達(dá)式;

? ? ? ? ? ? ? ? ? ? ? ? expr2為如下格式的表達(dá)式:?

? ? ? ? ? ? ? ? ? ? ? ? ? expr2的格式為'expr3 [ DESC | ASC ] [ NULLS { FIRST | LAST } ]'? ? ? ? ? ? ? ? 其中以蕴,expr1需要與expr2相匹配糙麦,

? ? ? ? ? ? ? ? ? ? 即:expr1的常量表達(dá)式的類型、數(shù)量必須與ORDER BY子句后的expr2表達(dá)式的類型丛肮、數(shù)量相同

? ? ? ? ? ? ? ? ? ? 實(shí)際是expr1需要與expr3相匹配

? ? ? ? ? ? ? ? ? ? 如:RANK(a) WITHIN GROUP(ORDERBYbASC NULLS FIRST);

? ? ? ? ? ? ? ? ? ? ? ? 其中赡磅,a為常量,b需要是與相同類型的表達(dá)式

? ? ? ? ? ? ? ? ? ? ? ? RANK(a,b) WITHIN GROUP(ORDERBYcDESCNULLS LAST, dDESC NULLS LAST);

? ? ? ? ? ? ? ? ? ? ? ? 其中宝与,a與b都為常量焚廊;c是與a類型相同的表達(dá)式冶匹、d是與b類型相同的表達(dá)式;

? ? ? ? ? ? 返回:返回?cái)?shù)值型數(shù)據(jù)咆瘟,該值為假定記錄在表中的序號(hào)嚼隘。

? ? ? ? ? ? 作用:確定一條假定的記錄,在表中排序后的序號(hào)袒餐。

? ? ? ? ? ? ? 如:假定一條記錄(假設(shè)為r1)的expr2指定字段值為常量expr1飞蛹,則將r1插入表中后,

? ? ? ? ? ? ? ? 與原表中的記錄匿乃,按照ORDER BY expr2排序后桩皿,該記錄r1在表中的序號(hào)為多少,返回該序號(hào)幢炸。

? ? ? ? ? ? 注釋: NULLS FIRST指定泄隔,將ORDER BY指定的排序字段為空值的記錄放在前邊;

? ? ? ? ? ? ? ? NULLS LAST指定宛徊,將ORDER BY指定的排序字段為空值的記錄放在后邊佛嬉;

? ? ? ? ? ? 實(shí)例:假設(shè)一個(gè)員工的薪水為1500,求該員工的薪水在員工表中的排名為多少闸天?

? ? ? ? ? ? ? ? 已知員工表如下:

? ? ? ? ? ? ? ? SQL>select*from employees;

? ? ? ? ? ? ? ? EMP_ID? ? EMP_NAME? ? SALARY

? ? ? ? ? ? ? ? ---------- -------------------- ---------------10001ZhangSan50010002LiSi100010003WangWu150010004MaLiu200010005NiuQi2500? ? ? ? ? ? ? ? SQL>selec trank(1500) with in group(order by salary) as " rank number " from employees;

? ? ? ? ? ? ? ? rank number-----------3? ? ? ? ? ? ? ? 由結(jié)果可知暖呕,薪水為1500的員工,在表中按升序排序苞氮,序號(hào)為3

? ? ? ? ? ? ? ? 7)FIRST湾揽、LAST

? ? ? ? 語(yǔ)法:? ? agg_function(e1) KEEP (DENSE_RANK FIRST ORDERBYe2[NULLS {FIRST|LAST}])[OVER PARTITION BY e3 ]? ? ? ? ? ? agg_function(e1) KEEP (DENSE_RANK LAST? ORDERBYe2[NULLS {FIRST|LAST}])[OVER PARTITION BY e3 ]? ? ? ? ? ? ? ?

? ? ? ? 參數(shù):? ? agg_function為一個(gè)聚合函數(shù),可以為 MIN笼吟、MAX库物、SUM、AVG贷帮、COUNT戚揭、VARIANCE或STDDEV

? ? ? ? ? ? e2指定以哪個(gè)字段為依據(jù),進(jìn)行排序撵枢;

? ? ? ? ? ? e3指定以哪個(gè)字段為依據(jù)民晒,進(jìn)行分類(分組);

? ? ? ? ? ? 當(dāng)指定OVER PARTITION BY子句后锄禽,針對(duì)分類后的每個(gè)類單獨(dú)排序潜必;

? ? ? ? ? ? DENSE_RANK為排序后的記錄分配序號(hào),并且序號(hào)為連續(xù)的沟绪。

? ? ? ? ? ? NULLS {FIRST|LAST}指定排序字段e1的值若為空刮便,則拍在序列前邊(NULLS FIRST)或者后邊(NULLS LAST)

? ? ? ? ? ? DENSE_RANK后的FIRST/LAST確定選取通過(guò)DENSE_RANK排好序后的序列中,序號(hào)最小/最大的記錄绽慈。序號(hào)相同時(shí)恨旱,返回多條記錄

? ? ? ? ? ? 當(dāng)序號(hào)相同,返回多條記錄時(shí)坝疼,agg_function(e1)聚合函數(shù)繼續(xù)對(duì)這多條記錄的e1字段做聚合操作搜贤。

? ? ? ? 作用:? ? 如果agg_function為min(e1),獲取排序后的FIRST或LAST的多條記錄中钝凶,某字段e1的最小值

? ? ? ? ? ? 該字段不是排序關(guān)鍵字段e2

? ? ? ? 實(shí)例:

? ? ? ? 已知員工表有薪水字段仪芒,獎(jiǎng)金字段。要求獲取薪水最低的員工中耕陷,獎(jiǎng)金最高的員工的記錄掂名。

? ? ? ? 已知表內(nèi)容如下:

? ? ? ? SQL>select * from employees order by salary;

? ? ? ? EMP_ID? ? EMP_NAME? ? ? ? ? SALARY? COMMISSION

? ? ? ? ---------- ---------------------------- ------------? ------------10001ZhangSan50020010002LiSi50030010003WangWu50010010004MaLiu200050010005NiuQi250020010006ShangDuo250030010007BaiQi2500400? ? ?

? ? ? ? SQL>select max(commission) keep(dense_rank first order by salary asc) as commission from employees;

? ? ? ? COMMISSION

? ? ? ? ----------300? ? ? ? 首先,按salary排序后哟沫,獲取薪水最低的記錄饺蔑,分別為員工10001、10002嗜诀、10003三條記錄猾警。

? ? ? ? 聚合函數(shù)max(commission)對(duì)3條記錄獲取獎(jiǎng)金最高的為員工10002,獎(jiǎng)金為300隆敢。

4.5发皿、分組查詢

分組

? ? selectnumfrom表groupby num

? ? select num,nid from 表 group by num,nid

? ? select num,nid from 表where nid>10 group by num,nid order nid desc select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid

? ? select num from 表 group by num having max(id)>10

? ? 特別的:groupby必須在where之后,orderby之前

? ? 4.6多表查詢

a拂蝎、連表

? ? 無(wú)對(duì)應(yīng)關(guān)系則不顯示

? ? select A.num, A.name, B.name

? ? from A,B

? ? Where A.nid= B.nid

? ? 無(wú)對(duì)應(yīng)關(guān)系則不顯示

? ? select A.num, A.name, B.name

? ? from A inner join B

? ? on A.nid= B.nid

? ? A表所有顯示穴墅,如果B中無(wú)對(duì)應(yīng)關(guān)系,則值為null

? ? select A.num, A.name, B.name

? ? from A left join B

? ? onA.nid= B.nid

? ? B表所有顯示温自,如果B中無(wú)對(duì)應(yīng)關(guān)系玄货,則值為null

? ? select A.num, A.name, B.name

? ? from A right join B

? ? on A.nid= B.nid

b、組合

? ? 組合捣作,自動(dòng)處理重合

? ? select nick name

? ? from A

? ? union select name

? ? from B

? ? 組合誉结,不處理重合

? ? select nick name

? ? from A

? ? union all select name

? ? from B

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市券躁,隨后出現(xiàn)的幾起案子惩坑,更是在濱河造成了極大的恐慌,老刑警劉巖也拜,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件以舒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡慢哈,警方通過(guò)查閱死者的電腦和手機(jī)蔓钟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)卵贱,“玉大人滥沫,你說(shuō)我怎么就攤上這事侣集。” “怎么了兰绣?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵世分,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我缀辩,道長(zhǎng)臭埋,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任臀玄,我火速辦了婚禮瓢阴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘健无。我一直安慰自己荣恐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布睬涧。 她就那樣靜靜地躺著募胃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪畦浓。 梳的紋絲不亂的頭發(fā)上痹束,一...
    開(kāi)封第一講書(shū)人閱讀 52,184評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音讶请,去河邊找鬼祷嘶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛夺溢,可吹牛的內(nèi)容都是我干的论巍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼风响,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嘉汰!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起状勤,我...
    開(kāi)封第一講書(shū)人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鞋怀,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后持搜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體密似,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年葫盼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了残腌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖抛猫,靈堂內(nèi)的尸體忽然破棺而出蟆盹,到底是詐尸還是另有隱情,我是刑警寧澤邑滨,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布日缨,位于F島的核電站钱反,受9級(jí)特大地震影響掖看,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜面哥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一哎壳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尚卫,春花似錦归榕、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至怎爵,卻和暖如春特石,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鳖链。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工姆蘸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芙委。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓逞敷,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親灌侣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子推捐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • MYSQL 基礎(chǔ)知識(shí) 1 MySQL數(shù)據(jù)庫(kù)概要 2 簡(jiǎn)單MySQL環(huán)境 3 數(shù)據(jù)的存儲(chǔ)和獲取 4 MySQL基本操...
    Kingtester閱讀 7,820評(píng)論 5 116
  • 本文主要總結(jié)了工作中一些常用的操作及不合理的操作,在對(duì)慢查詢進(jìn)行優(yōu)化時(shí)收集的一些有用的資料和信息侧啼,本文適合有MyS...
    Chting閱讀 605評(píng)論 0 1
  • 數(shù)據(jù)庫(kù)基礎(chǔ) DB:專門存儲(chǔ)和維護(hù)信息的容器(軟件)數(shù)據(jù)庫(kù)管理系統(tǒng):管理數(shù)據(jù)庫(kù)的軟件牛柒。具有存儲(chǔ)、安全慨菱、一致性焰络、并發(fā) ...
    _NineSun旭_閱讀 357評(píng)論 0 1
  • 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) 數(shù)據(jù)庫(kù)客戶端MySQL作為數(shù)據(jù)庫(kù)服務(wù)器來(lái)運(yùn)行,任何滿足mysql通信規(guī)范的軟件都可以作為客戶端來(lái)連...
    littlexjing閱讀 907評(píng)論 0 2
  • 這是一個(gè)基礎(chǔ)的MySQL教程符喝,通過(guò)教程的學(xué)習(xí)后可以到達(dá)一個(gè)初級(jí)到中級(jí) MySQL應(yīng)用水平級(jí)別 闪彼,主要介紹一些MyS...
    BenjaminCool閱讀 786評(píng)論 0 2