SQL數據庫基礎語句
SQL語言
1.創建數據庫:

單行注釋 :##
多行注釋:/*
? */
2.創建數據庫表:
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.查看表的結構:展示表的字段的詳細信息
desc t_student;
4.查看表中的數據:
select * from t_student;
5.查看建表語句:
show create table t_student;
6.在t_student數據庫表中插入數據
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','計科二班','1255@com');
inster into t_student values (005,'彩彩','女',19,now(),'軟件一班','8990@com');
inster into t_student (sno,sanme,email) values (006,'莎莎','9990@com');
7.修改表中數據:
update t_student set sex = '女';
update t_student set sex = '女' where sno = 004;
8.刪除表中數據:
delete from t_student;
delete from t_student where sno = 001;
9.修改表的結構--->增加一列:
alter table t_student add score double(5,2);
-- (----->5:總位數 2:小數位)
-- 放在最前面:
alter table t_student add score double(5,2) first;
-- 放在sex列的后面:
alter table t_student add score double(5,2) after sex;
10.修改表的結構--->刪除一列:
alter table t_student drop score;
11.修改表的結構--->修改一列:
alter table t_student modify score float(4,1);
-- modify修改的是列的類型的定義,但是不會改變列的名字
alter table t_student change score score1 double(5,1); -- change修改列名和列的類型的定義
12.刪除表:
drop table t_student;
13.完整性約束:


14.外鍵約束:


15.DDL和DML補充:

16.算數運算符:

17.去重操作:

18.排序:

19.where查詢:



20.函數舉例:

除了(le)多(duo)行(xing)函數(shu)(max,min,count,sum,avg),都(dou)是單行(xing)函數(shu)
函數的分類
lower(ename),upper(ename);改變(bian)每(mei)一(yi)條結果(guo),每(mei)一(yi)條數據對應一(yi)條結果(guo) --單行函數
max(sal),min(sal),count(sal),sum(sal),avg(sal);多條數(shu)據,最終展(zhan)示(shi)一個結(jie)果 --多行函數(shu)



其他函數(shu):查(cha)看數(shu)據庫(ku)信(xin)息
select database(),user(),version() from dual;

21.group by 分組


22.多表查詢:

---自(zi)然(ran)連接:natural join
---優點:自動匹配所(suo)有的同名列,同名列只展示一次(ci),簡單
select *
from emp
natural join dept;
select empno,ename,sal,dname,loc
from emp
natural join dept;
-- 缺點:查詢字段的時候,沒有指定字段所屬的數據庫表,效率低
-- 解決:指定表名
select emp.empno,emp.ename,emp.sal,dept.dname,dept.loc ,emp.deptno
from emp
natural join dept;
-- 缺點:表明太長
-- 解決:表起別名
select e.empno,e.ename,e.sal,d.dname,d.loc ,d.deptno
from emp e
natural join dept d;
-- 自然連接natural join缺點:自動匹配表中所有的同名列,但是有時候我們希望只匹配部分同名列:
-- 解決:內連接 -- using字句:
select *
from emp e
inner join dept d
using(deptno) -- 這里不能寫natural join了,這里是內連接
-- using 缺點:關聯的字段,必須是同名的
-- 解決:內連接 - on子句:
select *
from emp e
inner join dept d
on (e.deptno = d.deptno);
多表(biao)連接查(cha)詢(xun)的類型:
1.交(jiao)叉連接 cross join
2.自然(ran)連(lian)接 natural join
3.內連接 using子句
4.內連接 on子(zi)句
-- 外連接:除了顯示匹配的數據以外,還可以顯示不匹配的數據
-- 左外連接 left outer join --左面的那個表的信息,即使不匹配也可以看出效果
select *
from emp e
left outer join dept d
on e.deptno = d.deptno;
-- 右外連接 right outer join -- 右面的那個表地信息,即使不匹配地也可以查看出效果
select *
from emp e
right outer join dept d
on e.deptno = d.deptno;
-- 全外連接 full outer join --這個語法在mysql中不支持,在oracle中支持 展示左,右表全部不匹配的數據
-- scott , 40號部門都可以看見
select *
from emp e
full outer join dept d
on e.deptno = d.deptno;
--解決mysql中不支持連接的問題:
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 中對集合操作支持比較弱,只支持并集操作,交集,差集不支持(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.相關子查詢:

26.事務:


27.視圖:

