mysql中sal_Mysql基础常用的sql语句总结1

mysql中sal_Mysql基础常用的sql语句总结1数据库及表操作 创建 删除 查看数据库 create database mysql1 charset utf8 drop database mysql1 show databases use mysql1 创建 删除 查看表 create table mytab id int primary key auto increment

大家好,我是讯享网,很高兴认识大家。

数据库及表操作

创建、删除、查看数据库create database mysql1 charset utf8;

drop database mysql1;

show databases;

use mysql1;

创建、删除、查看表create table mytab(

id int primary key auto_increment,

name varchar(50),

gender varchar(10) not null,

date date,

);

//查看表结构

desc mytab;

drop table mytab;

新增、更新、删除表记录insert into mytab value(null,"张三","男","2222-1-22");

update mytab set name="张三" where id=1;

delete from mytab where id=1;

//查询所有学生信息

select * from mytab;

//查询所有男生

select * from mytab where gender="男";

// 查询男生的名字

select name from mytab where gender="男";

// 查询id>3的

select * from mytab where id>3;

// 使用as指定表头别名,as可省略

select name as 姓名 from mytab;

查询表记录

emp10;~~~~select * from emp;

select job,dept from emp;

//去除重复数据

select distinct job,dept from emp;

// 选出sal大于3000的所有的人名

select name from emp where sal>3000;

// 选出sal和bonus的和大于4500的人名~~有null值的显示不出来

select name from emp where sal+bonus>4500;

// ifnull(bonus,0),如果存在null,就设置为0

select name from emp where sal+ifnull(bonus,0)>4500;

//

select name,sal from emp where sal>3000 and sal<4500;

// 包含4500~~~~

select name,sal from emp where sal between 3000 and 4500;

// 选出sal为3700,4500,4200

select name,sal from emp where sal=3700 or sal=4500 or sal=4200;

select name,sal from emp where sal in (3700,4500,4200);

// 选出不在的

select name,sal from emp where sal not in (3700,4500,4200);

//

select name,sal from emp where sal<3000 or sal>4500;

select name,sal+bonus from emp where sal+ifnull(bonus,0)<3000 or sal+ifnull(bonus,0)>4500;

.查询没有部门的员工(即部门列为null值)

select dept from emp where dept is null;

如何查询有部门的员工(即部门列不为null值)

select dept from emp where dept is not null;

模糊查询查询emp表中姓名中以"刘"字开头的员工,显示员工姓名。

select name from emp where name like "刘%";

查询emp表中姓名中包含"涛"字的员工,显示员工姓名。

select name from emp where name like "%涛%";

查询emp表中姓名以"刘"开头,并且姓名为两个字的员工,显示员工姓名

select name from emp where name like "刘_";

多行函数查询

多行函数也叫做聚合(聚集)函数,根据某一列或所有列进行统计多行函数

作用

COUNT( 列名 | * )

统计结果集中指定列的记录的行数。

MAX( 列名 )

统计结果集中某一列值中的最大值

MIN( 列名 )


讯享网

统计结果集中某一列值中的最小值

SUM( 列名 )

统计结果集中某一列所有值的和

AVG( 列名 )

统计结果集中某一列值的平均值

注意:

(1)聚合函数不能使用在where子句中~~~~

(2)聚合函数的结果和和是否分组有关

(3)聚合函数统计时会对null值进行过滤

~~~~统计emp表中薪资大于3000的员工个数

select count(*) from emp where sal>3000

求emp表中的最高薪资

select MAX(sal) from emp;

统计emp表中所有员工的薪资总和(不包含奖金)

select SUM(sal) from emp;

统计emp表员工的平均薪资(不包含奖金)

select AVG(sal) from emp;

分组查询 group by对emp表,按照部门对员工进行分组,查看分组后效果。

select * from emp group by dept;

select dept,count(*) from emp group by dept;

对emp表按照职位进行分组,并统计每个职位的人数,显示职位和对应人数

select job,count(*) from emp group by job;

对emp表按照部门进行分组,求每个部门的最高薪资(不包含奖金),显示部门名称和最高薪资

select dept,MAX(sal) from emp group by dept;

排序查询 order by对emp表中所有员工的薪资进行升序(从低到高)排序,显示员工姓名、薪资。

select name,sal from emp order by sal;

对emp表中所有员工的奖金进行降序(从高到低)排序,显示员工姓名、奖金。

select name,sal from emp order by sal desc;

分页查询 limit查询emp表中的所有记录,分页显示:每页显示3条记录,

select * from emp limit 0,3;

求emp表中薪资最高的前3名员工的信息,显示姓名和薪资

select name,sal from emp order by sal desc limit 0,3;

其他函数函数名解释说明curdate()获取当前日期,格式是:年月日

curtime()获取当前时间 ,格式是:时分秒

sysdate()/now()获取当前日期+时间,格式是:年月日 时分秒

year(date)返回date中的年份

month(date)返回date中的月份

day(date)返回date中的天数

hour(date)返回date中的小时

minute(date)返回date中的分钟

second(date)返回date中的秒

CONCAT(s1,s2..)将s1,s2 等多个字符串合并为一个字符串

CONCAT_WS(x,s1,s2..)同CONCAT(s1,s2,..)函数,但是每个字符串之间要加上x,x是分隔符.查询emp表中所有【在1993和1995年之间出生】的员工,显示姓名、出生日期。

select name,birthday from emp where birthday>"1993-1-1" and birthday

或者

select name,birthday from emp where year(birthday)>=1993 and year(birthday)<=1995;

查询emp表中本月过生日的所有员工

select name,birthday from emp where month(birthday) = month(now());

查询emp表中员工的姓名和薪资(薪资格式为: xxx(元) )

select name,concat(sal,"(元)")as 薪资 from emp ;

查询emp表中员工的姓名和薪资(薪资格式为: xxx/元 )

select name,concat_ws("/",sal,"元")as 薪资 from emp ;

mysql的字段约束1.主键约束 primary key

主键的特点就是:唯一且不能为空.

2.非空约束

not null;

3.唯一约束 uinque

特点:数值唯一不能重复

4.外键约束:foreign key(x) references TBALE(x)

多表查询

db30查询部门和部门对应的员工信息

select * from emp c,dept p where c.dept_id=p.id;

内连接查询

select * from emp c join dept p where c.dept_id=p.id;

查询【所有部门】及部门对应的员工,如果某个部门下没有员工,员工显示为null;左外连接查询,将左边表中的数据都显示出来,如果右边的表没有对应的数据,就显示null;

select * from emp c left join dept p on c.dept_id=p.id;

union,可以将左外键和右外键查询连接起来,但是左右两表中查询的结果数必须一致,列的顺序和数量也必须一致;union自动去重

小讯
上一篇 2025-03-06 23:47
下一篇 2025-03-23 13:28

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/129341.html