一·資料庫基礎概念
1.資料庫英文:database 簡稱DB
2.資料庫特點:
1.持續化存盤資料,資料庫就是一個檔案系統,
2.方便存盤和統一管理,
3.使用同一方式操作資料庫-----SQL,
二·資料庫登錄的幾種方式
1.利用win+r->cmd->輸入mysql -uroot -proot,
2.直接使用圖形化界面SQLyog,
3.利用win+r->cmd->輸入mysql -uroot -p->輸入密碼登錄,
4.利用win+r->cmd->輸入mysql -hip -uroot -p鏈接目標密碼
三·SQL基礎知識
什么是SQL
Structured Query Language: 結構化查詢語言,
其實就是定義了操作所有關系型資料庫的規則,每一種資料庫操作方式不太一樣,和方言類似,
標題SQL的基礎語法
1.SQL陳述句可以單行或者多行書寫,以分號結尾,
2.可以使用空格和縮進增強陳述句的可讀性,
3.MySQL的資料庫中SQL陳述句不區分大小寫,關鍵字建議大寫,
4.3中注釋方法,
*單行注釋:--注釋內容或者#注釋內容(MySQL特有),
*多行注釋:/*注釋*/
四·SQL分類
標題1)DDL 資料定義語言
作用
用來定義資料庫物件:資料庫,表,列等,常用關鍵字:CREATE,DROPp,ALTER等,
操作資料庫:CRUD
C(Create)創建
*創建資料庫:
*create database資料庫名稱;
*創建資料庫,判斷不存在,再創建:
*create database if not exists 資料庫名稱;
*創建db4資料庫,判斷是否存在,并制定字符集為gbk:
*create database if not exists db4 character set gbk;
R(Retrieve)查詢
*查詢所有資料庫名稱:
*show databases;
*查詢某個資料庫的字符集,查詢某個資料庫的創建陳述句
*show create database 資料庫名稱;
U(Update)修改
*修改資料庫的字符集
*alter datatbase 資料庫名稱 character set 字符集名稱;
D(Delete)洗掉
*修改資料庫的字符集
*drop datatbase 資料庫名稱;
*判斷資料庫存在,存在再洗掉
*drop database if exists 資料庫名稱;
使用資料庫
*查詢當前正在使用的資料庫名稱
* select database();
* 使用資料庫
* use 資料庫名稱;
操作資料表:CRUD
C(Create)創建
*語法:
create table 表名(
列名1 資料型別1,
列名2 資料型別2,
列名3 資料型別3,
......
列名n 資料型別n
)
*資料型別:
*int 整型
*double(5,2) 浮點型 表示小數點前5位 小數點后2位
*date:日期,只包括年月日
*datetime:包括年月日時分秒
*datetamp:讀取系統時間
*varchar():字串,括號里寫長度,
*復制表
*create table 表名 like 被復制的表名;
R(Retrieve)查詢
*查詢某個資料庫表中所有名稱
* show tables;
*查詢表結構
* desc 表名;
U(Update)修改
* 修改表名
alter table 表名 rename to 新表名;
* 修改表的字符集
alter table 表名 character set 字符集名稱;
* 添加一列
alter table 表名 add 列名 資料型別;
* 修改列名稱 資料型別
alter table 表名 change 列名 新列名 新資料型別;
alter table 表名 modify 列名 新資料型別;
* 洗掉列
alter table 表名 drop 列名;
D(Delete)洗掉
*存在就洗掉該表
* drop table if exists 表名,
*直接洗掉
* drop table 表名
2)DQL 資料定義語言 ####作用
負責進行資料查詢而不會對資料本身進行修改的陳述句,常用關鍵字:
select, FROM,WHERE,GROUP BY,HAVING和ORDER BY,
基礎語法
查詢全部
select * from 表名;
排序查詢
order by 排序欄位1 排序方式1,排序欄位2 排序方式2;
排序方法:
asc 升序
desc 降序
排序查詢原則:
如有多個判斷條件 先滿足前面的排序條件,
聚合函式
1.cout 計算個數
2.max 計算最大值
3.min 計算最小值
4.sum 計算和
5.avg 計算平均值
一般用法:select 聚合函式名(列名)from 表名;
注意 :null不參與聚合函式計算,
分組查詢
一般語法:select 列名1,聚合函式(列名2)from 表名 group by 列名3;
解釋:新的分類小組包括 列名1 和 聚合函式(列名2)兩個部分,分類標準按照 列名3 分類,例如男女,
變種語法1:select 列名1,聚合函式(列名2)from 表名 where 限制條件 group by 列名3;
解釋:同上,但必須滿足where后的限制條件才能參與分組,
變種語法2:select 列名1,聚合函式(列名2)from 表名 where 限制條件 group by 列名3 having 限制條件;
解釋:同上,但必須分組后瞞住having后的限制條件,
區別having和where
1 where在分組前限定,having是在分組后限定
2 where后不可以跟聚合函式,having后可以進行聚合函式的判斷,
分頁查詢
一般語法: select * from 表名 limit 當前頁碼-1,總頁數;
例如:
select * from 表名 limit 0,3;#第一頁
select * from 表名 limit 1,3;#第二頁
...
基礎查詢
多個欄位的查詢
select 欄位名1,欄位名2... from 表名;
* 注意:
* 如果查詢所有欄位,則可以使用*來替代欄位串列,
去除重復:
select distinct 列名 from 表名;
* distinct:重復的不會顯示
計算列
select 列名,顯示的列名1,顯示的列名2,一個運算式(如列名1+ifnull(列名2))from 表名
* 一般可以使用四則運算計算一些列的值,(一般只會進行數值型的計算)
* ifnull(運算式1,運算式2):null參與的運算,計算結果都為null
* 運算式1:哪個欄位需要判斷是否為null
* 如果該欄位為null后的替換值,
起別名
select 列名,顯示的列名1,顯示的列名2,一個運算式(如列名1+ifnull(列名2))as 你想顯示的名字 from 表名
* as:as也可以省略
條件查詢
1. where子句后跟條件
如下例子中 student是表名 其余為列名
運算子
* > 、< 、<= 、>= 、= 、<>
查詢年齡大于20歲
SELECT * FROM student WHERE age > 20;
BETWEEN…AND
查詢年齡大于等于20 小于等于30
SELECT * FROM student WHERE age >= 20 AND age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;
上下兩句類似
IN( 集合)
查詢年齡22歲,18歲,25歲的資訊
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
SELECT * FROM student WHERE age IN (22,18,25);
LIKE:模糊查詢
占位符:
* _:單個任意字符
* %:多個任意字符
例子
查詢姓馬的有哪些?
SELECT * FROM student WHERE NAME LIKE '馬%';
-- 查詢姓名第二個字是化的人
SELECT * FROM student WHERE NAME LIKE "_化%";
-- 查詢姓名是3個字的人
SELECT * FROM student WHERE NAME LIKE '___';
-- 查詢姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE '%德%';
IS NULL
-- 查詢英語成績為null
SELECT * FROM student WHERE english = NULL; -- 不對的,null值不能使用 = (!=) 判斷
SELECT * FROM student WHERE english IS NULL;
-- 查詢英語成績不為null
SELECT * FROM student WHERE english IS NOT NULL;
3)DML 資料定義語言
作用
負責對資料庫物件運行資料訪問作業的指令集,常用關鍵字:
INSERT、UPDATE、DELETE,
增刪改表中資料:
添加資料
* insert into 表名 values(值1,值2,....,值n);#全部添加
* insert into 表名 (列1,列2.,,,列n)values(值1,值2,....,值n);#對齊 除數字外都要用引號括起來,
洗掉資料
* delete from 表名 [where 條件]
* 注意
*如果洗掉所有記錄 建議:
TRRUNCATE TABLE 表名;--效率較高 且回創建相同記錄;
修改資料
* update 表名 set 列名1 = 值1,列名2 = 值2 ,...[where]
*別忘了where 不然會全文修改,(where (特定資訊如 id=2))就會修改id=2這類,
4)DCL 資料定義語言
作用
是一種可對資料訪問權進行控制的指令,常用關鍵字:
GRANT和REVOKE,
五·約束
概念
對表中的資料進行限定,保證資料的正確性、有效性和完整性,
分類:
1. 主鍵約束:primary key
2. 非空約束:not null
3. 唯一約束:unique
4. 外鍵約束:foreign key
非空約束:not null,值不能為null
1. 創建表時添加約束
CREATE TABLE stu(
id INT,
NAME VARCHAR(20) NOT NULL -- name為非空
);
2. 創建表完后,添加非空約束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
3. 洗掉name的非空約束
ALTER TABLE stu MODIFY NAME VARCHAR(20);
唯一約束
unique,值不能重復
1. 創建表時,添加唯一約束
CREATE TABLE stu(
id INT,
phone_number VARCHAR(20) UNIQUE -- 添加了唯一約束
);
* 注意mysql中,唯一約束限定的列的值可以有多個null
2. 洗掉唯一約束
ALTER TABLE stu DROP INDEX phone_number;
3. 在創建表后,添加唯一約束
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
主鍵約束:primary key
1. 注意:
1. 含義:非空且唯一
2. 一張表只能有一個欄位為主鍵
3. 主鍵就是表中記錄的唯一標識
2. 在創建表時,添加主鍵約束
create table stu(
id int primary key,-- 給id添加主鍵約束
name varchar(20)
);
3. 洗掉主鍵
-- 錯誤 alter table stu modify id int ;
ALTER TABLE stu DROP PRIMARY KEY;
4. 創建完表后,添加主鍵
ALTER TABLE stu MODIFY id INT PRIMARY KEY;
5. 自動增長:
1. 概念:如果某一列是數值型別的,使用 auto_increment 可以來完成值得自動增長
2. 在創建表時,添加主鍵約束,并且完成主鍵自增長
create table stu(
id int primary key auto_increment,-- 給id添加主鍵約束
name varchar(20)
);
3. 洗掉自動增長
ALTER TABLE stu MODIFY id INT;
4. 添加自動增長
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
外鍵約束
foreign key,讓表于表產生關系,從而保證資料的正確性,
1. 在創建表時,可以添加外鍵
* 語法:
create table 表名(
....
外鍵列
constraint 外鍵名稱 foreign key (外鍵列名稱) references 主表名稱(主表列名稱)
);
2. 洗掉外鍵
ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名稱;
3. 創建表之后,添加外鍵
ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 FOREIGN KEY (外鍵欄位名稱) REFERENCES 主表名稱(主表列名稱);
4. 級聯操作
1. 添加級聯操作
語法:ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱
FOREIGN KEY (外鍵欄位名稱) REFERENCES 主表名稱(主表列名稱) ON UPDATE CASCADE ON DELETE CASCADE ;
2. 分類:
1. 級聯更新:ON UPDATE CASCADE
2. 級聯洗掉:ON DELETE CASCADE
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/260659.html
標籤:其他
上一篇:SCN小結
下一篇:redis(13):排序
