前端學習數據庫MYSQL


學海無涯,不要過早為自己定界

 

這篇文字主要是對自己一個前端學習數據庫MYSQL的筆記做了一些整理溫習!

更為詳細的 數據庫MYSQL介紹

更好的 數據庫MYSQL的入門

這篇文章主要寫了

1.數據庫MYSQL的可視化操作

2.基本上會遇到的所有SQL語句

我還准備了SQL語句練習庫  在下載安裝Navicat后,可通過Navicat將它導入數據庫,然后對照着我的筆記敲敲學學!

數據庫可視化軟件------Navicat


數據庫里邊存放的是表,表與表之間是有關聯的,而且可以對表進行相關操作(增,刪,改,查);
 
表格的 代表 記錄(一條數據)
代表 字段屬性
主鍵能唯一的代表某一條記錄的列(或者叫字段)主鍵不能重復
外鍵:表中的某一列的值是別的表的主鍵的值,該列就叫外鍵
( 設置外鍵時要注意2個表的這倆列, 必須類型保持一致,且一 張表外鍵的值,必須在另一張表里有)
MySQL常用的倆種表格類型
MyISAM 強調的速度   不支持外鍵 也不支持事務
InnoDB  穩定性 支持外鍵     也支持事務!(5.2以上默認 InnoDB)
工具創建數據庫

選好名字,字符集,最后一個不用管。

Navicat 操作mysql數據庫是可視化的,即你對數據庫的一些操作都是可見的,十分簡單,個人認為,對我們這種初學着十分方便


 

數據庫的導入和導出
  
數據庫命令  ( 不區分大小寫,不能中文
SELECT、INSERT、 UPDATE 、DELETE
select  insert   update   delete
 查詢    插入     刪除     修改
 
mysql -uroot -p密碼       進入mysql
庫的操作
show databases; 查看所有數據庫
create database 名字      創建數據庫
use 姓名                  進入數據庫 
drop database 名字        刪除數據庫
表的操作
show tables;     查看所有表格
create table 表名(id int,name varchar(10),age int);   創建表
創建一個姓名(整型)名字(固定10長度字符串類型),年齡(整型)的表格
drop table 名字;          刪除表
行的操作
添加記錄    []代表可省略;
insert into 表名 values(' 值1 ','值2 ','值3 '......................)
insert [into] 表名[(列名)] values(值列表);  如果省略了 (列名)那么主鍵的位置必須留下,用空‘’隔開;
 
刪除記錄
delete from 表名 [where 條件 ];如果沒where則將表中所有記錄刪除;

這段命令將h5class表中 id為15的記錄;
 
查詢記錄
select 字段名1,字段名2.../* form 表名[where 條件];

這段代碼將查詢teacher表中name為侯晉龍的記錄的cid和classname;
 

這段代碼將查詢teacher表中的所有記錄;
 

select 字段名1 as 別名1,字段名2 as 別名2 ... form 表名[where 條件]; 給字段重命名
 

自定義字段
 
列的操作
修改字段
update 表名 set 字段名1=‘值1’,字段名2=‘值2’........... [where 條件 ]; 如果沒where則將表中所有該字段的值改變
 

這段代碼將h5class表中所有id>4的記錄的cid字段的值改為2;
 
select查詢 之[ where條件 ]   同樣適用於update更新和delete刪除
 

xsb表
 

在xsb表中查詢所有age>=20的記錄;     一定范圍
 

在xsb表中查詢所有age不等於20的記錄; 不等於 !=
 

在xsb表中查詢所有age不等於20的記錄;    不等於 <>
 
 
and與

在xsb表中查詢所有19<=age<=20的記錄的xm和age字段;          
    閉合區間

在xsb表中查詢所有19<=age<=20的記錄的xm和age字段;  
  &&( 並且 )或 and 或 between.. and..
 
 
or或

在xsb表中查詢所有szx='計算機系'和szx='信息系'的記錄;      
倆個區間  

在xsb表中查詢所有szx='計算機系'和szx='信息系'的記錄;
   ||( 或者 )或 or 或 in()

在xsb表中查詢所有szx='計算機系'和szx='信息系'的記錄;     
 
 
not取反

在cjb表中查詢所有不在80<cj<90的記錄;

在cjb表中查詢所有不在 80>=cj<=90的記錄;

在xsb表中查詢所有不屬於szx='計算機系'和szx='信息系'的記錄;

在xsb表中查詢和張海的szx相同的記錄;   通過in可將一個查詢結果當作另一個查詢的條件
   
通配符                                                                

在xsb表中查詢xm的第一個字是王的記錄的xm,sex,age      模糊查詢 like ‘關鍵字%’

在xsb表中查詢xm的第一個字是王的名字總過只有2個字的記錄的xm,sex,age  - ’一個字符

在xsb表中查詢xm的中有一個小字的記錄的xm,sex,age           ‘%’零個或多
 
Mysql 限制行數查詢
limit m,n          m(位置從0開始 不寫默認0)n(要顯示的條數)   在網頁中的分頁需要用到這條命令。

沒寫limit        

 

Mysql 查詢排序
(order by 字段名【asc(升序不寫默認)/desc(降序)】)

表cjb

 查詢cj最高的前三個

查詢 cj在80到95之間 最高的一個
 
小結:select */字段名/count(字段名/*) from 表名 where 條件() order by 字段名 [asc/desc] limit [m],n
 
整合數據
統計
統計記錄個數 count(*/字段)
 
統計總分數 sum(字段)

統計cjb 中課程是c02的總成績
計算平均數 avg();
計算課程“c01”的學生的考試平均成績。
select avg(成績) from 成績表 where 課程號='c01'  
max/min 最大最小

課程號位c02的cj最大值
 
分組group by
select sex from xsb where group by order by limit  順序

 

 
統計男生女生分別有多少人

先按性別分組然后計算人數

 完整版                                                                    

 統計學習每門課程的人數

單獨查kch='c01'的課程的人數

 查詢人數>=3 的課程;先查詢人數 再用having對結果過濾      
 
having與where的區別       having對 查詢結果進行二次過濾            where對 表中記錄進行過濾
 
 
  基本書寫順序select */字段名/count(*/字段名 )/sum(字段名 )/mix(字段名 ) from 表名 [where 條件 group by 字段名 having  條件 order by 字段名 limit m,n]; 
 

多表查詢
--內聯接 inner join    只有當表里邊的記錄滿足on條件時才出現在查詢結果
select * from 從表 as c inner join 主表 as z on  c.外鍵=z.主鍵
--左外聯接 left join   左邊 不管滿足不滿足on條件表里記錄都會顯示在查詢結果, 右邊表滿足顯示,不滿足顯示null
select * from 左邊 as c left join 右邊 as z on  c.外鍵=z.主鍵       (最關注的表寫在左邊);
 

從cjb和kcb通過倆表中kch關聯查詢cj>90的的記錄中的cj,c.kch(相同的加前綴),kcm

從來倆張表中查出所有李勇的記錄

從通過學生表與成績表的學號(xh)的關聯查出李勇的總分數

關聯 學生表和成績表通過xh關聯 成績表和課程表通過kcm關聯,然后查詢kcm為vb的學生的xm,age,cj,kcm 然后按降序排序

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM