数据库(第十五天):MySql数据库的操作

一,概念

        简而言之,就是存储数据,管理数据的仓库

二,结构:数据库--》表--》数据(字段,字段的值)

三,Sql语言

        是一种数据库查询和程序设计语言,用于存取数据及查询,更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名

        分类:DML:数据库操纵语言

如:insert delete update select(插入,删除,修改,检查)简称CRUD操新增Create

        DDL:数据定义源,是指创建的SQL语法

        DCL:数据控制语言,是值权限的分配

        DQL:数据库查询语言,是指对数据的各种查询语法

1,常用操作:

对数据库的操作,对表的操作,对数据的操作/对表的操作

①查看所有数据库

show databases;

②创建表

        create database 数据库名; 

③设置编码

create database 数据库名 default character set utf-8 ;

 ④删除数据库

drop database 数据库名;

⑥创建表列

create table 表名(

字段1,

字段2,

字段3

);

⑦查看表

show tables;

⑧删除表

drop table 表名; 

⑨查看表结构

desc 表名;

2.修改表结构

alter table 表名 add column 列名 字段类型(字段长度,小数位数);

3.查询表记录

select*from 表名;

插入表数据

insert into 表名 values (字段1,字段2);

防止中文乱码

set names gbk;

4.修改表

update 表名 set 字段名 where 字段名

5,删除表中带有字符段的数据

delete from 表名 where 字符段;

6,删除表记录

delete from 表名;

7约束

CREATE TABLE a(id INT)
CREATE TABLE b(id INT PRIMARY KEY)#主键(唯一+非空)

#AUTO_INCREMENT自增
CREATE TABLE c(id INT PRIMARY KEY AUTO_INCREMENT)#主键自增
#非空约束
CREATE TABLE d(NAME VARCHAR(10))
#唯一约束unique
CREATE TABLE f(tel VARCHAR(11))
CREATE TABLE g(tel VARCHAR(11) UNIQUE)

8.函数

为了方便的操作数据库里的数据,MySQL提供了很多函数

常见的有:lower,upper length substr concat 日期

①lower:全转小写 upper 全转大写

select 数据列1,数据列2 lower(数据列1),upper(数据列2)from 表名;

②length获取长度

select 字段,length(字段)from 表名;

③concat拼接字符串

select  字段,concat(字段,“连接的串”,....)from 表名;

④substr截取字符串

select 字段,substr(字段,3)from 表名;

⑤replace(1,2,3)替换1是字段,要把2换成3

select 字段,replace(字段,‘a’,‘666’)from 表名

⑥ifnull判断是否为null,是就替换200

select 字段,ifnull(字段,200)from 表名

⑦求和

select 字段1,字段2,字段1+字段2 from 表名;

⑧round四舍五入,ceil向上取整,floor向下取整

select 字段1,round(字段1),ceil(字段1),floor(字段1)from 表名;

⑨日期

#now year month day hour minute second

select now()

9.条件查询

①distinct关键字,去除重复的记录行

select disinct 字段1  from 表名

②where关键字

select * from 表名 where id=1 or deptno;#查询id=1并且depton的数据

select * from 表名 where id in(2,3);#查询id=1的数据

③like模糊查询

select * from 表名 where 字符段 like '%o%'#判断字符段列是否包含o

select * from 表名 where 字符段 like '%o'#判断字符段列是否以o结束

select * from 表名 where 字符段 like 'o%'#判断字符段列是否以o开始,最高效。

④null操作空数据

select * from 表名 where 字符段 is null;查是null

 select * from 表名 where 字符段 is not null;查不是null 

⑤between and

select * from 表名 where 字符段>100 and 字符段<60;

select * from 表名 where btween100 and 60;

⑥去重

distinct

select distinct 字段 from 表名

10.

分页

①limit

select * from limit 2#只展示两条数据

select *from limit n,m#1代表从第n+1行开始2代表第m行

②order by 排序(默认升序)

select * from 表名 order by 字段名 

select  *from 表名 order by 字段名 desc #降序

 查询2017年以前入职的员工信息

select *from emp where year(hiredate)<2017

计算入职年份

select *,year(now())-year(hiredate)as year from emp;#as起别名

统计年薪

select *,sal*13+ifnull(comm,0) *13 as 年薪 from emp;

11,聚合函数

指把一列的值聚合在一起,在做分析

聚合函数:max() min() avg()sum()count()

查最高薪资

select  max(sal)from  emp;

查最低薪资

select  min(sal)from  emp;

查平均薪资

select  avg(sal)from  emp;

查工资总和

select sum(sal)from emp;

统计个数

select count(*)from emp;

select count(1) from emp;

select count(empno) from emp;#尽量不要用,null不在统计范围

12grop up分组

查询每个部门的最高薪‘

select ma(sal) from emp grop by deptno;

查询每个岗位的平均工资 

select avg(sal)from emp grop up jop;

注:口诀:当查询时出现聚合列和非聚合列,最后就按非聚合列分组

查询每年入职的人数

select dept,count(1) from emp grop up year(hiredate);  

查询每个部门的人数,人数>1的部门

having完成分组后的过滤

select count(1) ,deptno from emp grop up deptno having count(1)>1;

查询每个岗位的平均工资,只要大于8000的

select job,avg(sal)from emp grop up job avg(sal)>8000;

select job avg(sal) from emp where avg()sal grop up jpb;#这种方式效率高

查询每年入职的人数,只要人数》1的

select year(day),count(1) from emp grop up year(day) having count(1)>1;za

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员慕慕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值