数据库基础操作(二)数据库表数据的增删查改
一、插入數據 insert
向表中制定字段添加數據:insert into 表 (字段名1,字段名2......) values(值1,值2......); 向表中所有字段添加數據:insert into 表 values(值1,值2......); 復制代碼注意:
- values中的‘值’得數量要和字段名的數量一致;
- ‘值’的順序要和字段名的順序一致;
- 插入‘值’的類型要和字段的類型一致;
- 插入的‘值’不要超過你所設置的最大長度;
- 插入的‘值’如果是字符串或者是日期請記得添加單引號;
- 如果是使用的插入語句是向表中所有字段添加數據那么你的‘值’的數量和類型要和表里面的一致
二、修改數據 update
修改數據:update 表名 set 字段名1=值1,字段名2=值2; 帶條件的修改數據:update 表名 set 字段名1=值1,字段名2=值2 where 條件; 復制代碼注意:
- 修改‘值’的類型需要和字段名一致;
- 修改‘值’的時候不能超過最大長度;
- 修改的‘值’如果是字符串或者是日期請記得添加單引號;
三、刪除數據delete
帶條件的刪除語句:delete from 表名 [where 條件];復制代碼?注意:delete from 表名;和truncate table 表名;的區別??
- 從刪除方式來說delete是一條一條的刪除記錄,不會去清空auto_increment記錄數。而truncate則是直接將表刪除重新建一個表,auto-increment將會被清空沒有記錄。
- 從事物方面來說delete刪除的數據在一個事物內還能夠找回,而truncate刪除的數據是找不回來的。
四、查詢數據 select
查詢語句的基本語法:select [distinct] * 或者 字段名1,字段名2 from 表 [where 條件]; 復制代碼distinct這個關鍵字在你使用的時候需要注意一下,當你查詢的字段值只有一個的時候它會去掉這一個字段中 所有相同的數據如果你要是查詢的是多個字段那么它會根據你的這兩個字段來進行查詢除非是這兩個字段中的數據同時與其他的數據相同才會去除重復的。
為了簡單的來說明這個基本查詢我們來創建一張表用來舉例:
#創建一張表 create table student( #學號 id int(5) primary key auto_increment, #學生名字 name varchar(10), #學生年齡 age int(3), #學生生日 s_date date )復制代碼表創建完之后再插入一些數據
insert into student values (null,'張三',19,null); insert into student values (null,'李四',20,null); insert into student values (null,'王五',20,null); insert into student values (null,'趙六',19,null);復制代碼簡單查詢:
1、查詢所有學生
select * from student;復制代碼2、查詢學生的學號和名字
select id,name from student;復制代碼3、使用別名的方式來查詢學生的名字
select name as '學生' from student;復制代碼4、篩選學生年齡
select distinct(age) from student;復制代碼5、將所有學生的年齡加10顯示
select name,age+10 as age from student;復制代碼條件查詢:
在開始這些查詢之前先說一下where后面的內容怎么寫
比較運算符: > 大于 < 小于 <= 小于等于 >= 大于等于 = 等于 <> 不等于 != 這個也是不等于但是這個并不是sql的標準語法 between...and... 顯示在某一個區間的值 in(...) 顯示在in列表中的值比如說in(1,2,3) like'%' 模糊查詢,在like語句中'%'代表著零個或者多個字符,'_'代表著一個字符 is null 判斷非空 邏輯運算符: and 多個條件同時成立 or 多個條件任意一個成立 not 條件不成立復制代碼1、顯示名字為'張三'學生的所有信息
select * from student where name = '張三';
2、查詢年齡大于等于20歲的學生
select * from student where age>=20;
3、查詢姓'張'的學生
select * from student where? name like '張%';
4、查詢id為'1'和'4'的學生
select * from student where id in(1,4);
5、查詢id為'1'或者'3'的學生
select * from student where id=1 or id=3;
6、查詢年齡為19同時id為1的學生
select * from student where age = 19 and id = 1;
排序查詢
select ... order by 字段 asc或者desc...;
asc就是升序,desc就是降序
根據學號來對學生進行升序排序
select * from student order by id asc;
根據學號來對學生進行升降序排序
select * from student order by id desc;
聚合函數
sum() 求和 avg() 平均 max() 最大值 min() 最小值 count() 計數復制代碼查詢所有學生年齡的總和
select sum(age) from student;
查詢所有學生年齡最大值
select max(age) from student;
查詢所有學生年齡最小值
select min(age) from student;
查詢學生總數
select count(id) from student;
查詢學生平均年齡
select avg(age) from student;
分組查詢
group by...
如果你進行分組查詢的話那么你只能使用having來進行查詢,這里我就不細說了我會在之后的面試題中來進行具體的分析。
五、數據庫表與表之間的關系
數據庫表與表之間的關系基本上就是一下三種
1、一對多關系
- 例子:客戶表與訂單表之間的關系,部門表與員工表之間的關系,商品分類表和商品表之間的關系。
- 一對多建表原則:就拿上面的例子直接來說一個客戶會有多個訂單,那么客戶表就是一,訂單表就是多,創建表的時候就需要給‘多’的一方也就是訂單表設置一個外鍵,目標是指向‘一’的一方的也就是客戶表的主鍵。這樣就實現了一對多。
2、多對多關系
- 例子:學生表和課程表之間的關系,商品表和訂單表之間的關系,人物表和角色表之間的關系
- 多對多建表原則:多對多的話就不在是兩張表了,而是需要添加一張中間表,是三張表進行操作,這張中間表需要有兩個字段這兩個字段需要作為外鍵分別指向各自的自一方的主鍵。簡單的理解就是把一個多對多,變成兩個一對多。
3、一對一關系
著中關系的表開發中確實比較罕見就不舉例了。
六、多表查詢
1、交叉連接查詢(基本不會使用,這樣是得到的兩個表的乘積)
語法:select * from A表,B表;
2、內連接查詢()
- 隱式內連接:select * from A表,B表 where 條件;
- 顯示內連接:select * from A表 inner join B表 on 條件;
3、外鏈接查詢
- 左外鏈接:select * from A表 left outer join B表 on 條件;
- 右外鏈接:select * from A表 right outer join B表 on 條件;
4.子查詢
簡單的理解就是將一條sql語句查詢出來的表的結果作為另一個查詢語句的表;
select * from table where table.id=(select id from table2 where table2.id=1);
轉載于:https://juejin.im/post/5b3dd6efe51d451991548579
總結
以上是生活随笔為你收集整理的数据库基础操作(二)数据库表数据的增删查改的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常用HTTP状态码趣(曲)解
- 下一篇: 云数据库管理与数据迁移