扣丁學(xué)堂Java開(kāi)發(fā)之MySQL數(shù)據(jù)庫(kù)基礎(chǔ)和SQL語(yǔ)言入門(mén)
2018-03-08 13:25:52
1475瀏覽
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQLAB公司開(kāi)發(fā),目前屬于Oracle旗下產(chǎn)品。MySQL是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在WEB應(yīng)用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))應(yīng)用軟件。
MySQL的安裝和配置
相關(guān)概念:
數(shù)據(jù)庫(kù):數(shù)據(jù)的倉(cāng)庫(kù),存儲(chǔ)數(shù)據(jù)的地方。
表:分類(lèi)對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),實(shí)際保存數(shù)據(jù)的地方
列(字段):具體的一項(xiàng)信息,如:姓名、年齡
行(記錄):實(shí)際的實(shí)體信息
主鍵:能唯一地標(biāo)識(shí)一行記錄的列
Navicat圖形工具的使用:
NavicatforMySQL是常用的MySQL客戶端工具,可以從網(wǎng)上下載,免費(fèi)使用30天。
MySQL數(shù)據(jù)類(lèi)型:
數(shù)據(jù)類(lèi)型
所占字節(jié)
取值范圍
tinyint
1字節(jié)
-128~127
smallint
2字節(jié)
-32768~32767
mediumint
3字節(jié)
-8388608~8388607
int
4字節(jié)
范圍-2147483648~2147483647
bigint
8字節(jié)
+-9.22*10的18次方
float(m,d)
4字節(jié)
單精度浮點(diǎn)型,m總個(gè)數(shù),d小數(shù)位
double(m,d)
8字節(jié)
雙精度浮點(diǎn)型,m總個(gè)數(shù),d小數(shù)位
decimal(m,d)
decimal是存儲(chǔ)為字符串的浮點(diǎn)數(shù)
CHAR
0-255字節(jié)
定長(zhǎng)字符串
VARCHAR
0-255字節(jié)
變長(zhǎng)字符串
TINYBLOB
0-255字節(jié)
不超過(guò)255個(gè)字符的二進(jìn)制字符串
TINYTEXT
0-255字節(jié)
短文本字符串
BLOB
0-65535字節(jié)
二進(jìn)制形式的長(zhǎng)文本數(shù)據(jù)
TEXT
0-65535字節(jié)
長(zhǎng)文本數(shù)據(jù)
MEDIUMBLOB
0-16777215字節(jié)
二進(jìn)制形式的中等長(zhǎng)度文本數(shù)據(jù)
MEDIUMTEXT
0-16777215字節(jié)
中等長(zhǎng)度文本數(shù)據(jù)
LOGNGBLOB
0-4294967295字節(jié)
二進(jìn)制形式的極大文本數(shù)據(jù)
LONGTEXT
0-4294967295字節(jié)
極大文本數(shù)據(jù)
VARBINARY(M)
允許長(zhǎng)度0-M個(gè)字節(jié)的定長(zhǎng)字節(jié)符串
值的長(zhǎng)度+1個(gè)字節(jié)
BINARY(M)
M
允許長(zhǎng)度0-M個(gè)字節(jié)的定長(zhǎng)字節(jié)符串
SQL語(yǔ)言:
SQL全稱(chēng)是結(jié)構(gòu)化查詢(xún)語(yǔ)言(StructuredQueryLanguage)。使用SQL能進(jìn)行數(shù)據(jù)庫(kù)的增刪查改。學(xué)習(xí)數(shù)據(jù)庫(kù)的基本核心內(nèi)容就是SQL。
SQL分類(lèi)如下:
數(shù)據(jù)定義語(yǔ)言(DDL:DataDefinitionLanguage)
數(shù)據(jù)操作語(yǔ)言(DML:DataManipulationLanguage)
數(shù)據(jù)查詢(xún)語(yǔ)言(DQL:DataQueryLanguage)
數(shù)據(jù)控制語(yǔ)言(DCL:DataControlLanguage)
一、DDL
數(shù)據(jù)庫(kù)定義語(yǔ)言:
創(chuàng)建數(shù)據(jù)庫(kù)
createdatabase數(shù)據(jù)庫(kù)名;
使用數(shù)據(jù)庫(kù)
use數(shù)據(jù)庫(kù)名;
刪除數(shù)據(jù)庫(kù)
dropdatabase數(shù)據(jù)庫(kù)名;
dropdatabaseifexists數(shù)據(jù)庫(kù)名;
創(chuàng)建表
createtable表名(
列名數(shù)據(jù)類(lèi)型約束,
...
);
主鍵:primarykey
自動(dòng)增長(zhǎng):auto_increment
刪除表
droptable表名;
droptableifexists表名;
練習(xí):
創(chuàng)建my_db數(shù)據(jù)庫(kù)
在my_db中,創(chuàng)建學(xué)生表,包含編號(hào)(主鍵,自增)、姓名、年齡和地址
二、DML
數(shù)據(jù)新增
insertinto表名(列1,列2...)values(值1,值2...)
示例:
--插入一行記錄
insertintostudent(name,age,gender,address)
values('張三',20,'男','湖北武漢');
--插入多行記錄
insertintostudent(name,age,gender,address)
values
('李四',20,'男','湖北武漢'),
('李大四',22,'女','北京'),
('李小四',25,'女','北京'),
('李四四',27,'女','上海');
--將表中的數(shù)據(jù)插入到其它表
insertintostudent2(name,age,gender,address)
selectname,age,gender,addressfromstudent;
注意:
1、自動(dòng)增長(zhǎng)列不要添加數(shù)據(jù)
2、列的數(shù)量、類(lèi)型和順序要和值一致
數(shù)據(jù)修改
update表名set列1=值1,列2=值2where條件
示例:
--更新李小四的地址為四川成都
updatestudentsetaddress='四川成都'
wherename='李小四';
--更新多列
updatestudentsetaddress='四川成都',age=18
wherename='李小四';
數(shù)據(jù)刪除
deletefrom表名where條件
示例:
--刪除id=2的學(xué)生
deletefromstudentwhereid=5;
練習(xí):
在學(xué)生表中添加5行記錄,
更新id為5的學(xué)生年齡為22
刪除id為3的學(xué)生
四、DQL
查詢(xún)所有數(shù)據(jù)
select*from表;
查詢(xún)指定字段的所有數(shù)據(jù)
select列1,列2from表;
where條件查詢(xún)
select*from表where條件
=、!=、in、notin、and、or
示例:
--查詢(xún)所有行所有列
select*fromstudent;
--查詢(xún)部分列
selectname,addressfromstudent;
--添加where條件查詢(xún)id為2的學(xué)生
select*fromstudentwhereid=2;
--查詢(xún)id不為2的
select*fromstudentwhereid!=2;
--查詢(xún)地址為湖北武漢以及四川成都的學(xué)生
select*fromstudentwhereaddress='湖北武漢'oraddress='四川成都';
--查詢(xún)年齡20歲以上的男的
select*fromstudentwhereage>=20andgender='男';
--查詢(xún)地址為湖北武漢以及四川成都的學(xué)生2
select*fromstudentwhereaddressin('湖北武漢','四川成都');
--查詢(xún)地址不是湖北武漢以及四川成都的學(xué)生
select*fromstudentwhereaddressnotin('湖北武漢','四川成都');
去掉重復(fù)數(shù)據(jù)
distinct關(guān)鍵字
selectdistinct列from表;
示例:
--查詢(xún)學(xué)生的地址,不重復(fù)
selectDISTINCTaddressfromstudent;
--給列設(shè)置別名
selectid編號(hào),name姓名,age年齡,gender性別,address地址fromstudent;
--查詢(xún)年齡在20到25之間的女生
select*fromstudentwhereage>=20andage<=25andgender='女';
select*fromstudentwhereagebetween20and25andgender='女';
--查詢(xún)北京或武漢的男生
select*fromstudentwhereaddressin('北京','湖北武漢')andgender='女';
排序查詢(xún)
select*from表orderby列desc\asc
示例:
--按年齡升序排序
select*fromstudentwheregender='男'orderbyageasc;
--降序
select*fromstudentorderbyagedesc;
分頁(yè)查詢(xún)
limitn;返回長(zhǎng)度為n的行
limitn,m;返回從n位置,長(zhǎng)度為m的行
select*fromtb_namelimit5;顯示結(jié)果的前5條記錄
select*fromtb_namelimit0,5;區(qū)段查詢(xún)
示例:
--按年齡升序排序
select*fromstudentwheregender='男'orderbyageasc;
--降序
select*fromstudentorderbyagedesc;
--通過(guò)limit限制行數(shù)前5行
select*fromstudentlimit5;
--通過(guò)limit分頁(yè)查詢(xún)第一頁(yè)第0行到第5行,第二頁(yè)第6行到第10行...
select*fromstudentLIMIT0,5;
select*fromstudentLIMIT5,5;
select*fromstudentLIMIT10,5;
練習(xí):
年齡最大的男學(xué)生
年齡最小的五個(gè)女學(xué)生
聚合函數(shù)
求和:sum
求平均值:avg
求最大值:max
求最小值:min
求數(shù)量:count
示例:
selectsum(col_name)fromtb_name;
分組查詢(xún)
groupby分組列
where在分組之前進(jìn)行條件篩選
having在分組之后進(jìn)行條件篩選
where-->groupby--->having
示例:
--使用聚合函數(shù)
selectsum(age)總年齡,avg(age)平均年齡,
max(age)最大年齡,min(age)最小年齡,count(*)學(xué)生數(shù)量fromstudent;
--求來(lái)之不同地方的學(xué)生人數(shù)
selectaddress籍貫,count(*)人數(shù)fromstudentgroupbyaddress;
--求男女學(xué)生的人數(shù)
selectgender性別,count(*)人數(shù),avg(age)平均年齡fromstudentgroupbygender;
--求人數(shù)超過(guò)5人的籍貫
selectaddress籍貫,count(*)人數(shù)fromstudent
groupbyaddresshavingcount(*)>=5;
--年齡總和超過(guò)200的性別
selectgender性別,sum(age)總年齡fromstudent
groupbygenderhavingsum(age)>200;
模糊查詢(xún)
通配符:
%匹配任意多字符
_匹配一個(gè)字符
like關(guān)鍵字
示例:
--查找所有姓李的人
select*fromstudentwherenamelike'李%';
select*fromstudentwherenamelike'%大%';
select*fromstudentwherenamelike'李_';
以上就是關(guān)于扣丁學(xué)堂Java開(kāi)發(fā)之MySQL數(shù)據(jù)庫(kù)基礎(chǔ)和SQL語(yǔ)言入門(mén)的詳細(xì)介紹,最后想要了解更多內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)查看。扣丁學(xué)堂Java培訓(xùn)機(jī)構(gòu)不僅有專(zhuān)業(yè)的老師和與時(shí)俱進(jìn)的課程體系,還有大量的JavaEE視頻教程供學(xué)員觀看學(xué)習(xí),想要了解學(xué)習(xí)Java的小伙伴快快行動(dòng)吧。Java技術(shù)交流群:670348138。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“Java開(kāi)發(fā)資訊”的相關(guān)文章>>
標(biāo)簽:
JavaEE視頻教程
JavaEE培訓(xùn)
JavaEE開(kāi)發(fā)工程師
Java培訓(xùn)
Java開(kāi)發(fā)程序員
MySQL數(shù)據(jù)庫(kù)