“馬云生氣了”之增刪改查

一、SQL概要

1.什么是SQL,SQL是結(jié)構(gòu)化查詢語言,面向數(shù)據(jù)庫,使我們有能力訪問數(shù)據(jù)庫。

2.DDL

2.1定義:

數(shù)據(jù)定義語句 ,data definition language

2.2主要操作

1.CREATE :創(chuàng)建表

2.DROP:刪除表

3.ALTER:修改表屬性

3.DML

3.1定義:
data manipulation language 數(shù)據(jù)操作語言 ,主要用來操作數(shù)據(jù)庫里面的數(shù)據(jù)

3.2主要操作:

增刪改查

insert:增,往數(shù)據(jù)庫插入數(shù)據(jù)

delet:刪,刪除記錄 ,慎用

update:改,修改表中已有的記錄

select:查,查數(shù)據(jù)庫

3.3操作對(duì)象是行數(shù)據(jù)

二、如何查詢(按列)

//查詢emp表所有東西
select *
from emp
//如果想查詢一部分列呢?
//empno,ename,job,sal是列名
select empno,ename,job,sal
from emp
//四則運(yùn)算 可以對(duì)數(shù)字類型,日期類型,數(shù)字類型字符串進(jìn)行運(yùn)算
select empno,ename,sal*12+300*12
from emp

三、如何查詢(按行)+where

1.使用where字句 限定條件

select empno,ename,job.sal
from emp
where sal>1500 and (job='SALESMAN' or job='CLERK')
//關(guān)系
> < = != <= >=
//范圍
between and
//是否空
is null 
is not null
//判斷
in
not in

//模糊查詢
like 
not like

例子://查詢名字包含S的員工
select *
from emp
where ename like '%S%' 
//邏輯運(yùn)算
and or 

四、如何排序(order by)

默認(rèn)升序ASC,指定降序需要寫DESC

select ename,job,sal
from emp
where empno='10'
order by sal DESC

五、一些函數(shù)(方法)

1.時(shí)間函數(shù)

now() curdatetime()

2統(tǒng)計(jì)行數(shù)

count(*)

注意 如果函數(shù)的參數(shù)是列名,不會(huì)統(tǒng)計(jì)null的行數(shù)

六、如何分組(group by)+having

select *
from emp
where job!='SALESMAN'
group by  depno,job  having sum(sal)>4000
order by sum(sal)

七、如何分頁(limit)

select *
from emp
limit 0,10  //0是起始值,也就是索引,10是偏移量,也就是返回條數(shù)
例子:返回4行,9表示從表的第10行開始
SELECT *
FROM emp
LIMIT 4 OFFSET 9
-- 等價(jià)于 select * from Emp limit 9,4

八、多表查詢

select depno,ename,job,sal
from emp left join dept on emp.deptno=dept.deptno
//from emp left join dept using(deptno)
where  
group by   having   
order by    desc

1.產(chǎn)生笛卡爾積問題

2.外連接多表查詢,使用left join 左外連接,on、using 使用時(shí) 關(guān)聯(lián)字段名字需要一樣

九、除了查詢 還有增刪改

//如何增加數(shù)據(jù)
insert into emp(ename,job,sal) values ('kim','itman',10000)
//如何刪除跑路()
delete 
//一般開發(fā)用假刪除:在表中添加一列 用于表示是否刪除,  在查詢數(shù)據(jù)加上改條件 (通用字段)
//如何修改
update emp set job='SALESMAN',sal=1000 where ename='sb'

十、如何創(chuàng)建表

create table emp(
列名 類型 約束
列名 類型 約束

)

有哪些類型?
整型:
tinyint int
浮點(diǎn)型:
float double decimal (價(jià)格精確數(shù)字)
字符串:
varchar(255) char(11) text 文檔

時(shí)間:

timestamp 時(shí)間戳

十一、約束

主鍵約束

行級(jí)約束

create table 表名(
ID int primary key auto_increment,
name varchar(255)
)

表級(jí)約束

create table primary(
ID int auto_increment,
name varchar(255),
constraint PK_ID primary key(id)
)


外鍵約束(如何創(chuàng)建外鍵)

主表的主鍵作為從表的外鍵

行級(jí)添加

create table 表名(
列名 類型,
列名 類型 references 主表(主表列)

)

表級(jí)添加

create table 表名(
列名 類型 主鍵 自增,
列名 類型,
constraint fk_表名_外鍵字段名 foreign key(列名) reference 主表(參考)

)


不能跨數(shù)據(jù)庫建立約束

唯一約束
create table 表名(
UID int primary key auto_increment,
name varchar(255),
is_del int ,
constraint UK_UQ_name unique(name),


)


默認(rèn)以及非空約束(default null)
create  table   t_other(
oid   int   primary key  auto_increment
name  not null,
is_del int  default 0
)

十二、索引

create index 索引名 on 表名(列名) 
create index  idx_user_name on user(name)
# 查看索引
SHOW INDEX FROM user

十三、子查詢

就是在查詢中嵌套查詢

示例代碼:

select  d.deptno ,d.dname,d.loc 
from  dept d
select  count(*),avg(sal)
from emp 
group by deptno
select  d.deptno ,d.dname,d.loc 
from  dept d,(select deptno, count(*),avg(sal)
              from emp 
              group by deptno) temp
where   d.deptno =  temp.deptno   
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容