mysql数据库财务_MySQL数据库——从入门到删库跑路(二)
DQL 查詢表中的記錄 select .... from .....
語法
select 需要查詢的信息(列名1,列名2,.......列名n) / * from 表名 [where 條件];
完善下:
select
字段列表
from
表名列表
where
條件列表
group by
分組字段
having
分組之后的條件
limit
分頁限定
去重查詢 distinct
ifnull表達式 ifnull(表達式1,表達式2)
表達式1: 代表那個字段需要判斷是否為null
表達式2:如果該字段值為null 后面的進行替換
起別名操作
語法 as 也可以省略不寫? 表名 as 新的名字
查詢出來的字段信息 as 新名字
當你查詢同一張表,并且進行多次查詢的時候可以使用起別名來實現
注意:
起別名 只是在sql語句中方便查詢使用的,并不會對數據原來的文件起到任何影響
查詢
查詢表中的所有的行和列的數據
select * from 表名;
select * from student;
查詢指定列的數據:如果有多個列,中間用逗號隔開。
select 列名1,列名2,列名3,...... from 表名
select age,name from student;
查詢時指定列的別名
使用關鍵字 as
使用別名的好處:顯示的時候指定新的名字,并不修改表的原有結構。
對指定列進行別名操作: select 列名1 as 新名字,列名2 as 新名字,..... from 表名;
對表和列同時進行別名操作: select 列名1 as 新名字,列名2 as 新名字,..... from 表名 as 新表名;
如:對學生表進行操作:查詢學生表的姓名和年齡;
selects.ageas年齡,
s.nameas姓名fromstudentass;--as關鍵字可以省略不寫。
去除重復查詢
使用關鍵字 distinct 去掉重復的記錄
語法格式: select distinct 字段名 from 表名;
例如:
--查詢學生表中的學生都來自于哪些地方法?
select distinct address from student;
查詢的結果值可以參與數學運算
查詢出來的列和其他列可以進行數學運算
語法: select 列名1+、-、/、* 列名2,..... from 表名;
注意: 能夠參與數學運算的是前提是列的數據類型是數值型. 整數和小數
例如:
--查詢學生表學生的數學成績和歷史成績的和
select s.math+s.history as 綜合 from student ass;--as 可以省略
條件查詢
查詢的時候,有時候只想獲取符合條件的結果值,并不是獲取表中的所有記錄
語法: select 字段列表 from 表名 where 條件表達式;
結果值:符合條件的記錄就會被返回,如果條件不符合就不返回(過濾掉)
運算符:
>、 < 、 >= 、<= 、!=、=、<>(不等于),沒有''==''在SQL中,不等于有兩種表示方式,!= 、<>
between..... and
表示的是一個區間范圍 如 between A and B [A,B]
in(具體的取值)
里面放的是一個個數值,如果有多個,中間用逗號隔開
like
模糊查詢,根據關鍵字查詢,一般搭配"%"
is null
查詢某一列為null的值,注意在sql 不能這樣表達“字段名= null”
is not null
查詢某一列不為null的值
操作:
--比較運算符的操作--查詢數學成績50分以上的學生
select * from student as s where s.math <> 100;--BETWEEN AND--查詢數學成績在70-100分之間的
select * from student as s where s.math BETWEEN 70 and 100;--in(某幾個散列值)--查詢歷史成績為80分和100分的學生
select * from student as s where s.history in(80,100);--模糊查詢 like 搭配使用 %--查詢學生地址中含有"陽"的學生
select * from student as s where s.address like '%陽%';--查詢本班同學中含有小的學生信息
SELECT * from student as s where s.username like '%劉%';--查詢生日為空的學生有哪些
select * from student as s where s.birthday is not null;
備注:在模糊查詢時,通配符 有兩種表示方式:% _
% 匹配任意多個字符_ 匹配單個字符
兩者都需要注意書寫的位置:
一般我們使用【%】作為模糊查詢的通配符
邏輯運算符 與、或、非
與:&& ---> and
或: || ---> or
非: !
在sql建議使用單詞來表示邏輯運算?and or
操作:
--邏輯運算符 與或非--查詢歷史成績為80分和100分的同學 or
select * from student as s where s.history = 80 or s.history = 100;--查詢本班同學成績在70分以上的 and
SELECT * from student as s where s.math > 70 and s.history > 70;--取非 !
SELECT * from student as s where ! (s.math > 70 and s.history > 70);
排序
單列排序
通過 order by語句來實現排序,只是將查詢出來的結果值進行排序,并不影響查詢的結果,不進行條件過濾,影響的是顯示的方式(從大到小還是從小到大)
升序:asc 默認就是升序
降序:desc
單列排序:根據表中的某個字段、某列進行排序
語法: select 字段列表 from 表名 where 條件 order by 字段名 asc、desc;
如:
--對查詢出來的同學信息根據歷史成績降序排序
select * from student as s order by s.history desc;
組合排序
同時對表中的多個字段進行排序,如果前面的字段值相同,再根據后面的字段再次排序
語法: select 字段列表 from 表名 where 條件 order by 字段1 desc|asc,字段名2 desc|asc;
操作:
--根據數學成績進行升序排序,當數學成績相同再根據歷史成績降序排序
select * from student as s order by s.math asc,s.history desc;
聚合函數
常用的聚合函數
求一個最大值 max
求一個最小值 min
求一下平均數 avg
求一下總和 sum
統計查詢結果的記錄數 count
使用count統計記錄數的時候,如果count中填寫的是表中的某個字段,如果某條件中該字段為null,則該記錄會被過濾掉。
ifnull(表達式1,表達式2),如果前面的字段為null,后面的表達式2可以替換掉前面的字段為null的值。可以統計帶null的值
分組查詢 group by
select字段列表from表名列表where分組之前的條件group by分組字段having分組之后的條件
limit
分頁限定條件
概念:使用group by 對查詢的結果信息進行分組,相同的數據分成一組。
語法: select 字段列表 from 表名 group by 分組字段 having 分組之后的條件
例如:
將查詢出來的結果值內容,再按照性別進行分組,分成2組。
--將查詢出來的結果值內容,再按照性別進行分組,分組2組。文綜和是多少--年齡大于18歲的/*1.我想要什么樣的結果值
2. sql中需要有哪些條件
3. 在sql都需要涉及到幾張表*/
SELECTs.gender,sum(s.history+s.geo+s.political) as 文綜和 --查詢出來需要展示的結果值
fromstudentassWHEREs.age> 18
GROUP BYs.gender--統計成年人男女各多少個?
SELECTs.gender,count(s.gender) as個數FROMstudentassWHEREs.age>=18
GROUP BYs.gender
having和where的區別
where語句:將查詢結果分組前的符合條件返回數據,不符合條件的過濾掉,即先過濾再分組。where后面不能使用聚合函數。
having語句:在分組之后過濾數據,即先分組再過濾。having后面可以使用聚合函數
分頁查詢
使用關鍵字 limit,它是mysql中的方言操作
作用:對查詢的結果值進行分頁展示,每次顯示多少條記錄
語法: select 字段列表 from 表名 where 條件 group by 分組字段 having 分組之后條件 order by 升降序 limit 分頁限定條件
分頁限定條件 -----> 起始值 展示的記錄數 limit offset,length
操作:
1 --查詢學生表中的數據,從第一條開始,每頁顯示2條,第一次只能看到前兩條
2 SELECT
3 s.username as 姓名,s.age as 年齡,s.gender as性別4 FROM
5 student ass6 LIMIT7 0,2
8
9 --查詢學生表中的數據,從第4條,展示3條
10 SELECT
11 *
12 FROM
13 student14 LIMIT15 3,3
16 --分頁 轉換分頁查詢的起始值和頁碼數,每頁展示的個數確定的
17 --0,15 第一頁
18 --15,15 第二頁
19 --30,15 第三頁
20
21 --查詢第28頁的數據 15條記錄
22 --頁碼數已知的 pageNum 起始值是未知的 beginNum ,記錄數為num
23 --totalNum 總記錄數 根據記錄數進行分頁
24 --beginNum = (pageNum - 1) * num
25 LIMIT26 (pageNum - 1) *num;27 --如果你查詢的記錄值是從第一條開始的,這個0可以省略
28 SELECT
29 *
30 FROM
31 student ass32 LIMIT33 5;34 --如果你查詢的是最后幾條,有幾條顯示幾條,不會報分頁錯誤
35 --查詢從第三條開始,查詢5條
36 SELECT
37 *
38 FROM
39 student ass40 LIMIT41 2,5;
備注:
如果查詢從第一條開始,起始值可以省略,如果查詢最后幾條,有幾條顯示幾條,不會報分頁錯誤。
數據庫備份和還原
圖形化界面工具 Navicat
備份
選中數據庫右鍵 ----> 轉儲sql文件----> 結構和數據 --->指定磁盤中sql文件存儲的位置。
還原
先通過Navicat創建一個數據庫(需要和sql文件中的數據庫保持同名) --->右鍵運行sql文件----->瀏覽磁盤中存儲的sql文件,點擊運行,最后------>刷新。
dos指令操作
備份
在不登錄的情況下使用 mysqldump -u登錄名 -p登錄密碼 備份數據庫名 > 存儲磁盤的位置(絕對路徑)
還原
登錄mysql,首先創建同名的數據庫,然后使用當前創建的數據庫 use 創建數據庫名
然后 source 磁盤中sql文件存儲的位置
備份:
還原:
數據庫表的約束
概述
對表中的數據進行限定,保證數據的有效性、完整性和正確性。一個表一旦添加了約束,那么不正確的數據將無法添加進來,所以一般約束在創建表設定字段的時候添加上
主鍵約束
主鍵:一般是用來唯一標識數據庫表中的某一條記錄,不能為空
通常情況下,一般會給表添加一個id字段,用作唯一標識,設置為主鍵,主鍵一般是提供給數據庫操作使用的(查詢,修改,刪除等等),主鍵不能重復,也不能為空。
比如: 一個人的身份證號、一個人手機號,一個學生的學號,一個員工工號
語法: 使用關鍵字 primary key
操作:
--查詢
SELECT * FROM user;--非法數據插入 唯一 不重復
INSERT INTO user values(7,'0008','123123','小花','12312312313','女',19);--非法數據插入 null值插入 非空
INSERT INTO user values(null,'0008','123123','小花','12312312313','女',19);--刪除主鍵 sql語句
alter table user drop PRIMARY key;--添加主鍵
alter table user add PRIMARY KEY(id);
主鍵自增
如果希望在添加表記錄時,不設定表中主鍵值,系統會自動給主鍵添加自增值
語法: auto_increment 表示自動自增
--非法數據插入 null值插入
INSERT INTO user values(null,'0010','123123','小周','12312312313','男',25);
修改自增的起始值為100
alter table user auto_increment = 起始值;
修改自增的起始值為100
alter table user auto_increment = 起始值;
唯一約束
概念:字段值唯一,不允許重復
關鍵字: unique
語法: 字段名 字段數據類型 unique
操作:
--插入數據
insert into role values(null,'CEO');
insert into role values(null,'manager');
insert into role values(null,'CTO');
--查詢角色表
SELECT * fromrole;
insert into role values(null,null);
備注:如果插入是null,表明是沒有數據,不存在數據重復問題,可以重復插入。
非空約束
概念:記錄中的某個字段不能為null
語法: 字段名 字段數據類型 not null
--創建一張部門表
create tabledepartment (
idint PRIMARY KEY auto_increment, --id 主鍵自增
departmentname VARCHAR(10) not null --部門不能為空
)insert into department values(null,'總裁辦');insert into department values(null,'財務部');insert into department values(null,'人事部');insert into department values(null,'研發部');insert into department values(null,'銷售部');--查詢該表數據
SELECT * fromdepartment;insert into department values(null,null);
默認值:
概念:當沒有給字段賦值,系統會賦上一個指定的默認值
語法: 字段名 字段數據類型 default 默認值
操作:
--創建一張表 employee 員工表
create tableemployee (
idint PRIMARY keyauto_increment,
usernameVARCHAR(10) not null,
genderVARCHAR(1) DEFAULT '男',
ageint)insert into employee(id,username,age) values(null,'小孫',20);--查詢員工表
SELECT * fromemployee;insert into employee(id,username,gender,age) values(null,'小麗','女',20);
備注:
如果給表中的 某個字段既添加了非空約束又添加了唯一約束,那么該字段是不是主鍵呢?
一般情況下,一張表中只能有一個主鍵。
外鍵約束
總結
以上是生活随笔為你收集整理的mysql数据库财务_MySQL数据库——从入门到删库跑路(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华硕主板选择s4还是s5(华硕商城ASU
- 下一篇: 递增是升序还是降序