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.函数举例:

除了多行函数(max,min,count,sum,avg),都是单行函数

函数的分类

lower(ename),upper(ename);改变每一条结果,每一条数据对应一条结果 --单行函数

max(sal),min(sal),count(sal),sum(sal),avg(sal);多条数据,最终展示一个结果 --多行函数



其他函数:查看数据库信息

select database(),user(),version() from dual;

21.group by 分组


22.多表查询:

---自然连接:natural join

---优点:自动匹配所有的同名列,同名列只展示一次,简单

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);

多表连接查询的类型:

1.交叉连接 cross join

2.自然连接 natural join

3.内连接 using子句

4.内连接 on子句

-- 外连接:除了显示匹配的数据以外,还可以显示不匹配的数据

-- 左外连接 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.视图:

posted @   进步+吃饭  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示