超详细的SQL基本语句讲解

推荐使用安装包的方式安装,安装完成之后通过修改mysql的配置文件my.ini将字符集修改为utf8

显示数据库

show databases;

如果数据库mysql9_17已经存在就删除mysql9_17

drop database if exists mysql9_17;

创建数据库mysql9_17并设置字符集为utf8

create database if not exists mysql9_17 character set utf8mb4;

查看mysql9_17数据库中有哪些表

show tables;

如果表student已经存在就删除student

drop table if exists student;

创建部门表depart,字段有depart_id(主键自增),name

create table depart(depart_id int primary key auto_increment,name varchar(20));

查看depart表结构

在这里插入图片描述

创建员工表staff,字段有staff_id,name,age,depart_id

create table staff(staff_id int primary key auto_increment,name varchar(20),age int,depart_id int);

查看staff表的结构
在这里插入图片描述

创建薪资表salary,字段有salary_id,staff_id,salary,month

create table salary(salary_id int primary key auto_increment,staff_id int,salary decimal(11,2),month datetime);

查看salary表的结构
在这里插入图片描述
表创建好了之后,现在往三个表里面插入数据,在往表里插入数据的过程中,可以指定插入的列,默认为所有列;同时,也可以一次插入多条数据,括号之间用逗号隔开,一般认为一次插入多条数据比一次插入一条数据更高效

insert into depart values(null,'市场部');
insert into depart values(null,'技术部');
insert into staff values(null,'鲁硕',23,1),(null,'喻能',23,1),(null,'孙医贵',23,2),(null,'朱佳龙',23,2);
insert into salary values(null,1,10000,'2021-9-18 10:00:00'),(null,2,10000,'2020-9-18 10:00:00'),(null,3,10000,'2019-9-18 10:00:00'),(null,3,10000,'2018-9-18 10:00:00');

查看三张表的所有数据
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
查询薪资表将每个人的工资增加10000的数据(查询结果只是临时表,不会影响磁盘上的数据)

select salary+10000 from salary; 

在这里插入图片描述

去重操作:针对查询到的结果去除salary表中工资相同的数据

select distinct salary from salary;

在这里插入图片描述
根据salary_id进行升序或者降序排列显示

在这里插入图片描述
在这里插入图片描述
更改salary表中staff_id为2的salary的值为20000
注意update语句如果不指定where的话就是修改所有数据,比较容易出错。

update salary set salary=20000 where staff_id=2;
update salary set salary=30000 where staff_id=3;
update salary set salary=40000 where staff_id=4;

条件查询:查询salary表中工资大于25000的数据信息

select * from salary where salary>25000;

在这里插入图片描述
注意判断null值的<=> <>

update salary set salary=null where salary_id=4;
select * from salary where 

在这里插入图片描述
条件查询中还可以使用逻辑与(and)逻辑或(or)
同时还有关键字 in

分页查询(也是为了防止传输量过大是出现问题):分页查询的两种方式

select * from salary limit 1;
select * from salary limit 1 offset 1;
--从第二条数据开始,往后取一条数据
select * from salary limit 1 offset 2;
select * from salary limit 1 offset 3;

从第三条数据开始,往后取一条数据
select * from salary limit 3,1;

删除salary表
删除salary表里面的所有数据
删除salary表里面的某些数据

drop table salary;
delete from salary;
delete from salary where salary_id=1;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL的嵌套查询语句是指在一条查询语句中,使用另一条查询语句作为子查询,以实现更加复杂和精细的数据查询和分析。 嵌套查询语句基本语法如下: ``` SELECT 列1, 列2, … FROM 1 WHERE 列X IN (SELECT 列Y FROM 2 WHERE 子查询条件); ``` 其中,子查询就是在括号内的查询语句,它返回的结果将作为外部查询语句的条件之一,常用的子查询包括: 1. 标量子查询:返回单个值的查询语句,通常用于比较和计算。 2. 列子查询:返回单列值的查询语句,通常用于过滤或聚合查询。 3. 行子查询:返回多列多行的查询语句,通常用于联结查询或子查询中的。 举个例子,假设我们有两个,一个是学生(student),另一个是成绩(score),我们想查询出所有学生的姓名和平均分数,但只要平均分数大于班级平均分数的学生,那么我们可以使用嵌套查询语句来实现: ``` SELECT name, AVG(score) AS avg_score FROM student WHERE AVG(score) > (SELECT AVG(score) FROM score) GROUP BY name; ``` 在上述嵌套查询语句中,子查询返回的是成绩的平均分数,而外部查询语句则按照学生姓名分组,计算每个学生的平均分数,并筛选出平均分数大于班级平均分数的学生。 需要注意的是,嵌套查询语句可能会影响查询的效率和性能,特别是在处理大量数据和复杂查询条件时。因此,我们应该尽量避免嵌套查询语句的滥用,尽可能使用其他SQL高级特性和优化技术来实现复杂的数据查询和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值