MySQL資料庫基礎和SQL語言入門

來源:互聯網
上載者:User

標籤:MySQL資料庫   MySQL系統   MySQL知識講解   

MySQL是一個關係型資料庫管理系統,由瑞典MySQLAB公司開發,目前屬於Oracle旗下產品。MySQL是最流行的關係型資料庫管理系統之一,在WEB應用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,關聯式資料庫管理系統)應用軟體。

  MySQL的安裝和配置

  相關概念:

  資料庫:資料的倉庫,儲存資料的地方。

  表:分類對資料進行儲存,實際儲存資料的地方

  列(欄位):具體的一項資訊,如:姓名、年齡

  行(記錄):實際的實體資訊

  主鍵:能唯一地標識一行記錄的列

  Navicat圖形工具的使用:

  NavicatforMySQL是常用的MySQL用戶端工具,可以從網上下載,免費使用30天。

  MySQL資料類型:

  資料類型

  所佔位元組

  取值範圍

  tinyint

  1位元組

  -128~127

  smallint

  2位元組

  -32768~32767

  mediumint

  3位元組

  -8388608~8388607

  int

  4位元組

  範圍-2147483648~2147483647

  bigint

  8位元組

  +-9.22*10的18次方

  float(m,d)

  4位元組

  單精確度浮點型,m總個數,d小數位

  double(m,d)

  8位元組

  雙精確度浮點型,m總個數,d小數位

  decimal(m,d)

  decimal是儲存為字串的浮點數

  CHAR

  0-255位元組

  定長字串

  VARCHAR

  0-255位元組

  變長字串

  TINYBLOB

  0-255位元組

  不超過255個字元的二進位字串

  TINYTEXT

  0-255位元組

  短文本字串

  BLOB

  0-65535位元組

  二進位形式的長文本資料

  TEXT

  0-65535位元組

  長文本資料

  MEDIUMBLOB

  0-16777215位元組

  二進位形式的中等長度文本資料

  MEDIUMTEXT

  0-16777215位元組

  中等長度文本資料

  LOGNGBLOB

  0-4294967295位元組

  二進位形式的極大文本資料

  LONGTEXT

  0-4294967295位元組

  極大文本資料

  VARBINARY(M)

  允許長度0-M個位元組的定長位元組符串

  值的長度+1個位元組

  BINARY(M)

  M

  允許長度0-M個位元組的定長位元組符串

  SQL語言:

  SQL全稱是結構化查詢語言 (SQL)(StructuredQueryLanguage)。使用SQL能進行資料庫的增刪查改。學習資料庫的基本核心內容就是SQL。

  SQL分類如下:

  資料定義語言 (Data Definition Language)(DDL:DataDefinitionLanguage)

  資料操作語言(DML:DataManipulationLanguage)

  資料查詢語言(DQL:DataQueryLanguage)

  資料控制語言(DCL:DataControlLanguage)

  一、DDL

  資料庫定義語言:

  建立資料庫

  createdatabase資料庫名;

  使用資料庫

  use資料庫名;

  刪除資料庫

  dropdatabase資料庫名;

  dropdatabaseifexists資料庫名;

  建立表

  createtable表名(

  列名資料類型約束,

  ...

  );

  主鍵:primarykey

  自動成長:auto_increment

  刪除表

  droptable表名;

  droptableifexists表名;

  練習:

  建立my_db資料庫

  在my_db中,建立學生表,包含編號(主鍵,自增)、姓名、年齡和地址

  二、DML

  資料新增

  insertinto表名(列1,列2...)values(值1,值2...)

  樣本:

  --插入一行記錄

  insertintostudent(name,age,gender,address)

  values(‘張三‘,20,‘男‘,‘湖北武漢‘);

  --插入多行記錄

  insertintostudent(name,age,gender,address)

  values

  (‘李四‘,20,‘男‘,‘湖北武漢‘),

  (‘李大四‘,22,‘女‘,‘北京‘),

  (‘李小四‘,25,‘女‘,‘北京‘),

  (‘李四四‘,27,‘女‘,‘上海‘);

  --將表中的資料插入到其它表

  insertintostudent2(name,age,gender,address)

  selectname,age,gender,addressfromstudent;

  注意:

  1、自動成長列不要添加資料

  2、列的數量、類型和順序要和值一致

  資料修改

  update表名set列1=值1,列2=值2where條件

  樣本:

  --更新李小四的地址為四川成都

  updatestudentsetaddress=‘四川成都‘

  wherename=‘李小四‘;

  --更新多列

  updatestudentsetaddress=‘四川成都‘,age=18

  wherename=‘李小四‘;

  資料刪除

  deletefrom表名where條件

  樣本:

  --刪除id=2的學生

  deletefromstudentwhereid=5;

  練習:

  在學生表中添加5行記錄,

  更新id為5的學生年齡為22

  刪除id為3的學生

  四、DQL

  查詢所有資料

  select*from表;

  查詢指定欄位的所有資料

  select列1,列2from表;

  where條件查詢

  select*from表where條件

  =、!=、in、notin、and、or

  樣本:

  --查詢所有行所有列

  select*fromstudent;

  --查詢部分列

  selectname,addressfromstudent;

  --添加where條件查詢id為2的學生

  select*fromstudentwhereid=2;

  --查詢id不為2的

  select*fromstudentwhereid!=2;

  --查詢地址為湖北武漢以及四川成都的學生

  select*fromstudentwhereaddress=‘湖北武漢‘oraddress=‘四川成都‘;

  --查詢年齡20歲以上的男的

  select*fromstudentwhereage>=20andgender=‘男‘;

  --查詢地址為湖北武漢以及四川成都的學生2

  select*fromstudentwhereaddressin(‘湖北武漢‘,‘四川成都‘);

  --查詢地址不是湖北武漢以及四川成都的學生

  select*fromstudentwhereaddressnotin(‘湖北武漢‘,‘四川成都‘);

  去掉重複資料

  distinct關鍵字

  selectdistinct列from表;

  樣本:

  --查詢學生的地址,不重複

  selectDISTINCTaddressfromstudent;

  --給列設定別名

  selectid編號,name姓名,age年齡,gender性別,address地址fromstudent;

  --查詢年齡在20到25之間的女生

  select*fromstudentwhereage>=20andage<=25andgender=‘女‘;

  select*fromstudentwhereagebetween20and25andgender=‘女‘;

  --查詢北京或武漢的男生

  select*fromstudentwhereaddressin(‘北京‘,‘湖北武漢‘)andgender=‘女‘;

  排序查詢

  select*from表orderby列desc\asc

  樣本:

  --按年齡升序排序

  select*fromstudentwheregender=‘男‘orderbyageasc;

  --降序

  select*fromstudentorderbyagedesc;

  分頁查詢

  limitn;返回長度為n的行

  limitn,m;返回從n位置,長度為m的行

  select*fromtb_namelimit5;顯示結果的前5條記錄

  select*fromtb_namelimit0,5;區段查詢

  樣本:

  --按年齡升序排序

  select*fromstudentwheregender=‘男‘orderbyageasc;

  --降序

  select*fromstudentorderbyagedesc;

  --通過limit限制行數前5行

  select*fromstudentlimit5;

  --通過limit分頁查詢第一頁第0行到第5行,第二頁第6行到第10行...

  select*fromstudentLIMIT0,5;

  select*fromstudentLIMIT5,5;

  select*fromstudentLIMIT10,5;

  練習:

  年齡最大的男學生

  年齡最小的五個女學生

  彙總函式

  求和:sum

  求平均值:avg

  求最大值:max

  求最小值:min

  求數量:count

  樣本:

  selectsum(col_name)fromtb_name;

  分組查詢

  groupby分組列

  where在分組之前進行條件式篩選

  having在分組之後進行條件式篩選

  where-->groupby--->having

  樣本:

  --使用彙總函式

  selectsum(age)總年齡,avg(age)平均年齡,

  max(age)最大年齡,min(age)最小年齡,count(*)學生數量fromstudent;

  --求來之不同地方的學生人數

  selectaddress籍貫,count(*)人數fromstudentgroupbyaddress;

  --求男女學生的人數

  selectgender性別,count(*)人數,avg(age)平均年齡fromstudentgroupbygender;

  --求人數超過5人的籍貫

  selectaddress籍貫,count(*)人數fromstudent

  groupbyaddresshavingcount(*)>=5;

  --年齡總和超過200的性別

  selectgender性別,sum(age)總年齡fromstudent

  groupbygenderhavingsum(age)>200;

  模糊查詢

  萬用字元:

  %匹配任意多字元

  _匹配一個字元

  like關鍵字

  樣本:

  --尋找所有姓李的人

  select*fromstudentwherenamelike‘李%‘;

  select*fromstudentwherenamelike‘%大%‘;

  select*fromstudentwherenamelike‘李_‘;

MySQL資料庫基礎和SQL語言入門

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.