學海無涯,不要過早為自己定界
這篇文字主要是對自己一個前端學習數據庫MYSQL的筆記做了一些整理溫習!
更為詳細的 數據庫MYSQL介紹
更好的 數據庫MYSQL的入門
這篇文章主要寫了
1.數據庫MYSQL的可視化操作
2.基本上會遇到的所有SQL語句
我還准備了SQL語句練習庫 在下載安裝Navicat后,可通過Navicat將它導入數據庫,然后對照着我的筆記敲敲學學!
數據庫可視化軟件------Navicat
數據庫里邊存放的是表,表與表之間是有關聯的,而且可以對表進行相關操作(增,刪,改,查);
表格的
行代表
記錄(一條數據)
列代表
字段或
屬性
主鍵能唯一的代表某一條記錄的列(或者叫字段)主鍵不能重復
外鍵:表中的某一列的值是別的表的主鍵的值,該列就叫外鍵
( 設置外鍵時要注意2個表的這倆列,
必須類型保持一致,且一
張表外鍵的值,必須在另一張表里有)
MySQL常用的倆種表格類型
MyISAM 強調的速度 不支持外鍵 也不支持事務
InnoDB 穩定性 支持外鍵 也支持事務!(5.2以上默認
InnoDB)
工具創建數據庫
數據庫的導入和導出

數據庫命令 (
不區分大小寫,不能中文
)
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 然后按降序排序