SQL數(shù)據(jù)庫(kù)基礎(chǔ)語(yǔ)句
SQL語(yǔ)言
1.創(chuàng)建數(shù)據(jù)庫(kù):

單行注釋 :##
多行注釋:/*
? */
2.創(chuàng)建數(shù)據(jù)庫(kù)表:
create table t_student(
sno int(6) not null,
sname varchar(5),
sex char(1),
age int(3),
enterdate date,
classname varchar(10),
email varchar(15)
);
3.查看表的結(jié)構(gòu):展示表的字段的詳細(xì)信息
desc t_student;
4.查看表中的數(shù)據(jù):
select * from t_student;
5.查看建表語(yǔ)句:
show create table t_student;
6.在t_student數(shù)據(jù)庫(kù)表中插入數(shù)據(jù)
inster into t_student values (001,'麗麗','女',19,'2019-6-9','軟件二班','1233@com');
inster into t_student values (002,'美美','女',19,'2019-6-10','軟件一班','4555@com');
inster into t_student values (003,'天天','男',19,'2019-6-9','軟件二班','1333@com');
inster into t_student values (004,'飛飛','男',19,'2019-7-9','計(jì)科二班','1255@com');
inster into t_student values (005,'彩彩','女',19,now(),'軟件一班','8990@com');
inster into t_student (sno,sanme,email) values (006,'莎莎','9990@com');
7.修改表中數(shù)據(jù):
update t_student set sex = '女';
update t_student set sex = '女' where sno = 004;
8.刪除表中數(shù)據(jù):
delete from t_student;
delete from t_student where sno = 001;
9.修改表的結(jié)構(gòu)--->增加一列:
alter table t_student add score double(5,2);
-- (----->5:總位數(shù) 2:小數(shù)位)
-- 放在最前面:
alter table t_student add score double(5,2) first;
-- 放在sex列的后面:
alter table t_student add score double(5,2) after sex;
10.修改表的結(jié)構(gòu)--->刪除一列:
alter table t_student drop score;
11.修改表的結(jié)構(gòu)--->修改一列:
alter table t_student modify score float(4,1);
-- modify修改的是列的類型的定義,但是不會(huì)改變列的名字
alter table t_student change score score1 double(5,1); -- change修改列名和列的類型的定義
12.刪除表:
drop table t_student;
13.完整性約束:


14.外鍵約束:


15.DDL和DML補(bǔ)充:

16.算數(shù)運(yùn)算符:

17.去重操作:

18.排序:

19.where查詢:



20.函數(shù)舉例:

除了多行函數(shù)(max,min,count,sum,avg),都是單行函數(shù)
函數(shù)的分類
lower(ename),upper(ename);改變每一條結(jié)果,每一條數(shù)據(jù)對(duì)應(yīng)一條結(jié)果 --單行函數(shù)
max(sal),min(sal),count(sal),sum(sal),avg(sal);多條數(shù)據(jù),最終展示一個(gè)結(jié)果 --多行函數(shù)



其他函數(shù):查看數(shù)據(jù)庫(kù)信息
select database(),user(),version() from dual;

21.group by 分組


22.多表查詢:

---自然連接:natural join
---優(yōu)點(diǎn):自動(dòng)匹配所有的同名列,同名列只展示一次,簡(jiǎn)單
select *
from emp
natural join dept;
select empno,ename,sal,dname,loc
from emp
natural join dept;
-- 缺點(diǎn):查詢字段的時(shí)候,沒(méi)有指定字段所屬的數(shù)據(jù)庫(kù)表,效率低
-- 解決:指定表名
select emp.empno,emp.ename,emp.sal,dept.dname,dept.loc ,emp.deptno
from emp
natural join dept;
-- 缺點(diǎn):表明太長(zhǎng)
-- 解決:表起別名
select e.empno,e.ename,e.sal,d.dname,d.loc ,d.deptno
from emp e
natural join dept d;
-- 自然連接natural join缺點(diǎn):自動(dòng)匹配表中所有的同名列,但是有時(shí)候我們希望只匹配部分同名列:
-- 解決:內(nèi)連接 -- using字句:
select *
from emp e
inner join dept d
using(deptno) -- 這里不能寫natural join了,這里是內(nèi)連接
-- using 缺點(diǎn):關(guān)聯(lián)的字段,必須是同名的
-- 解決:內(nèi)連接 - on子句:
select *
from emp e
inner join dept d
on (e.deptno = d.deptno);
多表連接查詢的類型:
1.交叉連接 cross join
2.自然連接 natural join
3.內(nèi)連接 using子句
4.內(nèi)連接 on子句
-- 外連接:除了顯示匹配的數(shù)據(jù)以外,還可以顯示不匹配的數(shù)據(jù)
-- 左外連接 left outer join --左面的那個(gè)表的信息,即使不匹配也可以看出效果
select *
from emp e
left outer join dept d
on e.deptno = d.deptno;
-- 右外連接 right outer join -- 右面的那個(gè)表地信息,即使不匹配地也可以查看出效果
select *
from emp e
right outer join dept d
on e.deptno = d.deptno;
-- 全外連接 full outer join --這個(gè)語(yǔ)法在mysql中不支持,在oracle中支持 展示左,右表全部不匹配的數(shù)據(jù)
-- scott , 40號(hào)部門都可以看見
select *
from emp e
full outer join dept d
on e.deptno = d.deptno;
--解決mysql中不支持連接的問(wèn)題:
select *
from emp e
left outer join dept d
on e.deptno = d.deptno
union -- 并集 去重 效率低
select *
from emp e
right outer join dept d
on e.deptno = d.deptno;
-- MySQL 中對(duì)集合操作支持比較弱,只支持并集操作,交集,差集不支持(oracle中支持)
多表查詢(三張表)
select e.name,e.sal,e.empno,e.deptno,d.dname,s.*
from emp e
right outer join dept d
on e,deptno = d.deptno
inner join salgrade s
on e.sal between s.losal and s.hisal
23.子查詢:

24.多行子查詢:



25.相關(guān)子查詢:

26.事務(wù):


27.視圖:


浙公網(wǎng)安備 33010602011771號(hào)