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