第一部分web sql入門_第1頁
第一部分web sql入門_第2頁
第一部分web sql入門_第3頁
第一部分web sql入門_第4頁
第一部分web sql入門_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、北京傳智播客教育 SQL 入門 北京傳智播客教育 常見關系化數(shù)據(jù)庫 北京傳智播客教育 MySQL簡介MySQL數(shù)據(jù)庫的安裝和配置配置Mysql按照bin目錄到Path中使用命令行窗口連接MYSQL數(shù)據(jù)庫mysql u用戶名 p密碼MySQL數(shù)據(jù)庫Root密碼重置(見資料)北京傳智播客教育 MySQL數(shù)據(jù)庫服務器、數(shù)據(jù)庫和表的關系MySQLDBDB表表表Client所謂安裝數(shù)據(jù)庫服務器,只是在機器上裝了一個數(shù)據(jù)庫管理程序,這個管理程序可以管理多個數(shù)據(jù)庫,一般開發(fā)人員會針對每一個應用創(chuàng)建一個數(shù)據(jù)庫。為保存應用中實體的數(shù)據(jù),一般會在數(shù)據(jù)庫創(chuàng)建多個表,以保存程序中實體的數(shù)據(jù)。數(shù)據(jù)庫服務器、數(shù)據(jù)庫和表的

2、關系如圖所示:北京傳智播客教育 數(shù)據(jù)在數(shù)據(jù)庫中的存儲方式id=1name=“l(fā)isi”age=23User對象idnameage1lisi232wang24User表id=2name=“wang”age=24行(row)列(column)表的一行稱之為一條記錄表中一條記錄對應一個java對象的數(shù)據(jù)User對象北京傳智播客教育 SQL語言 - 只要是關系型數(shù)據(jù)庫都支持它Structured Query Language, 結構化查詢語言非過程性語言為加強SQL的語言能力,各廠商增強了過程性語言的特征如Oracle的PL/SQL 過程性處理能力SQL Server、Sybase的T-SQLSQL是

3、用來存取關系數(shù)據(jù)庫的語言,具有查詢、操縱、定義和控制關系型數(shù)據(jù)庫的四方面功能北京傳智播客教育 SQL分類DDL (數(shù)據(jù)定義語言)數(shù)據(jù)定義語言 - Data Definition Language用來定義數(shù)據(jù)庫的對象,如數(shù)據(jù)表、視圖、索引等DML (數(shù)據(jù)操縱語言)數(shù)據(jù)處理語言 - Data Manipulation Language在數(shù)據(jù)庫表中更新,增加和刪除記錄如 update, insert, deleteDCL (數(shù)據(jù)控制語言)數(shù)據(jù)控制語言 Data Control Language指用于設置用戶權限和控制事務語句如grant,revoke,ifelse,while,begin trans

4、actionDQL (數(shù)據(jù)查詢語言)數(shù)據(jù)查詢語言 Data Query Languageselect北京傳智播客教育 創(chuàng)建數(shù)據(jù)庫CREATE DATABASE IF NOT EXISTS db_name create_specification , create_specification . create_specification: DEFAULT CHARACTER SET charset_name | DEFAULT COLLATE collation_name CHARACTER SET:指定數(shù)據(jù)庫采用的字符集COLLATE:指定數(shù)據(jù)庫字符集的比較方式練習:創(chuàng)建一個名稱為mydb1的

5、數(shù)據(jù)庫。創(chuàng)建一個使用utf8字符集的mydb2數(shù)據(jù)庫。創(chuàng)建一個使用utf8字符集,并帶校對規(guī)則的mydb3數(shù)據(jù)庫。北京傳智播客教育 查看、刪除數(shù)據(jù)庫顯示數(shù)據(jù)庫語句:SHOW DATABASES顯示數(shù)據(jù)庫創(chuàng)建語句:SHOW CREATE DATABASE db_name 數(shù)據(jù)庫刪除語句:DROP DATABASE IF EXISTS db_name 練習:查看當前數(shù)據(jù)庫服務器中的所有數(shù)據(jù)庫查看前面創(chuàng)建的mydb2數(shù)據(jù)庫的定義信息刪除前面創(chuàng)建的mydb1數(shù)據(jù)庫北京傳智播客教育 修改數(shù)據(jù)庫ALTER DATABASE IF NOT EXISTS db_name alter_specification

6、 , alter_specification . alter_specification: DEFAULT CHARACTER SET charset_name | DEFAULT COLLATE collation_name切換數(shù)據(jù)庫 use db_name;查看當前使用的數(shù)據(jù)庫 select database();練習 查看服務器中的數(shù)據(jù)庫,并把其中某一個庫的字符集修改為utf8;北京傳智播客教育 創(chuàng)建表(基本語句)CREATE TABLE table_name(field1 datatype,field2 datatype,field3 datatype)character set 字符

7、集 collate 校對規(guī)則field:指定列名datatype:指定列類型注意:創(chuàng)建表時,要根據(jù)需保存的數(shù)據(jù)創(chuàng)建相應的列,并根據(jù)數(shù)據(jù)的類型定義相應的列類型。例:user對象id int name stringpassword stringbirthday dateIdName Passwordbirthday注意:創(chuàng)建表前,要先使用use db語句使用庫。北京傳智播客教育 MySQL常用數(shù)據(jù)類型字符串型 VARCHAR、CHAR大數(shù)據(jù)類型BLOB、TEXT數(shù)值型TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE邏輯性 BIT日期型DATE、TIME、DATET

8、IME、TIMESTAMP北京傳智播客教育 創(chuàng)建表練習創(chuàng)建一個員工表employee - 查看表結構: desc 表名;字段屬性id整形name字符型gender字符型birthday日期型entry_date日期型job字符型salary小數(shù)型resume大文本型北京傳智播客教育 定義單表字段的約束(保證數(shù)據(jù)的有效性和完整性)定義主鍵約束 primary key:不允許為空,不允許重復刪除主鍵:alter table tablename drop primary key ; 主鍵自動增長 :auto_increment定義唯一約束 unique 例如:name varchar(20) uni

9、que定義非空約束 not null 例如:salary double not null北京傳智播客教育 修改表使用 ALTER TABLE 語句追加, 修改, 或刪除列的語法.ALTER TABLE tableADD (column datatype DEFAULT expr , column datatype.);ALTER TABLE tableMODIFY (column datatype DEFAULT expr , column datatype.);ALTER TABLE tableDROP (column);修改表的名稱:rename table 表名 to 新表名;修改列的名

10、稱: change column old_col_name column_definition;修改表的字符集:alter table student character set utf8;北京傳智播客教育 修改表練習在上面員工表的基本上增加一個image列。修改job列,使其長度為60。刪除gender列。表名改為user。修改表的字符集為utf8列名name修改為usernamealter table user change column name username varchar(20);北京傳智播客教育 數(shù)據(jù)庫CRUD語句Insert語句 (增加數(shù)據(jù))Update語句 (更新數(shù)據(jù))De

11、lete語句 (刪除數(shù)據(jù))Select語句(查找數(shù)據(jù))北京傳智播客教育 Insert語句INSERT INTOtable (column , column.)VALUES(value , value.);使用 INSERT 語句向表中插入數(shù)據(jù)。插入的數(shù)據(jù)應與字段的數(shù)據(jù)類型相同。數(shù)據(jù)的大小應在列的規(guī)定范圍內,例如:不能將一個長度為80的字符串加入到長度為40的列中。在values中列出的數(shù)據(jù)位置必須與被加入的列的排列位置相對應。字符和日期型數(shù)據(jù)應包含在單引號中。插入空值:不指定或insert into table value(null)北京傳智播客教育 Insert語句練習練習:使用insert

12、語句向表中插入三個員工的信息。字段名字段類型id整形name字符串型gender字符串型birthday日期型salary浮點型entry_date日期型resume大文本型show variables like character%;北京傳智播客教育 Tip:mysql中文亂碼mysql有六處使用了字符集,分別為:client 、connection、database、results、server 、system。client是客戶端使用的字符集。 connection是連接數(shù)據(jù)庫的字符集設置類型,如果程序沒有指明連接數(shù)據(jù)庫使用的字符集類型就按照服務器端默認的字符集設置。 database是

13、數(shù)據(jù)庫服務器中某個庫使用的字符集設定,如果建庫時沒有指明,將使用服務器安裝時指定的字符集設置。 results是數(shù)據(jù)庫給客戶端返回時使用的字符集設定,如果沒有指明,使用服務器默認的字符集。 server是服務器安裝時指定的默認字符集設定。 system是數(shù)據(jù)庫系統(tǒng)使用的字符集設定。(utf-8不可修改)通過修改my.ini 修改字符集編碼北京傳智播客教育 Update語句UPDATE tbl_name SET col_name1=expr1 , col_name2=expr2 . WHERE where_definition 使用 update語句修改表中數(shù)據(jù)。UPDATE語法可以用新值更新原

14、有表行中的各列。SET子句指示要修改哪些列和要給予哪些值。WHERE子句指定應更新哪些行。如沒有WHERE子句,則更新所有的行。北京傳智播客教育 Update語句練習練習:在上面創(chuàng)建的employee表中修改表中的紀錄。要求將所有員工薪水修改為5000元。將姓名為zs的員工薪水修改為3000元。將姓名為ls的員工薪水修改為4000元,job改為ccc。將wu的薪水在原有基礎上增加1000元。北京傳智播客教育 Delete語句delete from tbl_name WHERE where_definition 使用 delete語句刪除表中數(shù)據(jù)。如果不使用where子句,將刪除表中所有數(shù)據(jù)。D

15、elete語句不能刪除某一列的值(可使用update)使用delete語句僅刪除記錄,不刪除表本身。如要刪除表,使用drop table語句。同insert和update一樣,從一個表中刪除記錄將引起其它表的參照完整性問題,在修改數(shù)據(jù)庫數(shù)據(jù)時,頭腦中應該始終不要忘記這個潛在的問題。外鍵約束刪除表中數(shù)據(jù)也可使用TRUNCATE TABLE 語句,它和delete有所不同,參看mysql文檔。北京傳智播客教育 Delete語句練習刪除表中名稱為zs的記錄。刪除表中所有記錄。使用truncate刪除表中記錄。北京傳智播客教育 Select語句(1)SELECT DISTINCT *|column1,

16、 column2. column3.FROMtable;select 指定查詢哪些列的數(shù)據(jù)。column指定列名。*號代表查詢所有列。from指定查詢哪張表。DISTINCT可選,指顯示結果時,是否剔除重復數(shù)據(jù)基本select語句北京傳智播客教育 Select語句(1)練習:查詢表中所有學生的信息。查詢表中所有學生的姓名和對應的英語成績。過濾表中重復數(shù)據(jù)。北京傳智播客教育 Select語句()SELECT *|column1expression, column2expression,.FROMtable;在select語句中可使用表達式對查詢的列進行運算在select語句中可使用as語句SEL

17、ECT column as 別名 from 表名;北京傳智播客教育 Select語句()練習在所有學生分數(shù)上加10分特長分。統(tǒng)計每個學生的總分。使用別名表示學生分數(shù)。北京傳智播客教育 Select語句(3)使用where子句,進行過濾查詢。練習:查詢姓名為XXX的學生成績查詢英語成績大于90分的同學查詢總分大于200分的所有同學北京傳智播客教育 Select語句()在where子句中經(jīng)常使用的運算符比較運算符 = = 大于、小于、大于(小于)等于、不等于 between . and.顯示在某一區(qū)間的值in(set)顯示在in列表中的值,例:in(100,200)like 張pattern模糊查

18、詢Is null判斷是否為空邏輯運算符and多個條件同時成立or多個條件任一成立not不成立,例:where not(salary100);Like語句中,% 代表零個或多個任意字符,_ 代表一個字符,例first_name like _a%;北京傳智播客教育 Select語句(4)查詢英語分數(shù)在 8090之間的同學。查詢數(shù)學分數(shù)為89,90,91的同學。查詢所有姓李的學生成績。查詢數(shù)學分80,語文分80的同學。北京傳智播客教育 Select語句()SELECT column1, column2. column3.FROMtable;order by column asc|descOrder

19、by 指定排序的列,排序的列即可是表中的列名,也可以是select 語句后指定的列名。Asc 升序、Desc 降序ORDER BY 子句應位于SELECT語句的結尾。練習:對數(shù)學成績排序后輸出。對總分排序按從高到低的順序輸出對姓李的學生成績排序輸出使用order by 子句排序查詢結果。北京傳智播客教育 聚集函數(shù)countSelect count(*)|count(列名) from tablenameWHERE where_definition 練習:統(tǒng)計一個班級共有多少學生?統(tǒng)計數(shù)學成績大于90的學生有多少個?統(tǒng)計總分大于250的人數(shù)有多少?Count(列名)返回某一列,行的總數(shù)北京傳智播客

20、教育 聚集函數(shù)SUMSelect sum(列名),sum(列名) from tablenameWHERE where_definition 練習:統(tǒng)計一個班級數(shù)學總成績?統(tǒng)計一個班級語文、英語、數(shù)學各科的總成績統(tǒng)計一個班級語文、英語、數(shù)學的成績總和統(tǒng)計一個班級語文成績平均分注意:sum僅對數(shù)值起作用,否則會報錯。注意:對多列求和,“,”號不能少。Sum函數(shù)返回滿足where條件的行的和北京傳智播客教育 聚集函數(shù)AVG averageSelect sum(列名),sum(列名) from tablenameWHERE where_definition 練習:求一個班級數(shù)學平均分?求一個班級總分平

21、均分AVG函數(shù)返回滿足where條件的一列的平均值北京傳智播客教育 聚集函數(shù)MAX/MINSelect max(列名)from tablenameWHERE where_definition 練習:求班級最高分和最低分(數(shù)值范圍在統(tǒng)計中特別有用)Max/min函數(shù)返回滿足where條件的一列的最大/最小值北京傳智播客教育 Select語句(6)北京傳智播客教育 Select語句(6)SELECT column1, column2. column3. FROMtable;group by column having .練習:對訂單表中商品歸類后,顯示每一類商品的總價使用group by 子句對列

22、進行分組使用having 子句 對分組結果進行過濾練習:查詢購買了幾類商品,并且每類總價大于100的商品Having和where均可實現(xiàn)過濾,但在having可以使用聚集函數(shù),having通常跟在group by后,它作用于分組北京傳智播客教育 備份、恢復數(shù)據(jù)庫備份數(shù)據(jù)庫表中的數(shù)據(jù)cmd mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 文件名.sql例如: mysqldump -u root -p day12 c:day12.sql恢復數(shù)據(jù)庫source 文件名.sql / 在mysql內部使用mysql u 用戶名 p 數(shù)據(jù)庫名 文件名.sql / 在cmd下使用練習備份test庫中的數(shù)據(jù)

23、,并恢復北京傳智播客教育 多表設計外鍵約束定義外鍵約束 foreign key foreign key(ordersid) references orders(id)新建部門表department (id,name)通過外鍵約束建立與員工表employee關系北京傳智播客教育 多表設計中三種實體關系北京傳智播客教育 M:N的聯(lián)系引入關系表聯(lián)系的屬性及兩個實體的主標識形成關系表。關系表的主鍵為兩個實體主標識的組合參加表(E1,P1,percent)雇員表(E1,E2)項目表(P1,P2,P3)北京傳智播客教育 1:N 的聯(lián)系可不引入關系表將關系的屬性及非多方的主標識加入到多方表多方表的外鍵是非多方實體的主標識老師表(Tid,Tname,Tsex)課程表(Cid,Cname,Tid,allowance)北京傳智播客教育 1:1的聯(lián)系不必引入關系表方案一presidents(Eid,Ename)studios(Sid,Sname,Eid ,year )方案二presidents(Eid,Ename ,Sid ,year)studios(Sid,Sname)北京傳智播客教育 多表設計實例CREATE TABLE teacher ( id int(11) NOT

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論