MySQL笔记(一)

一、Mysql常用命令:

1.基础命令:

打开:mysql -uroot -p   password:root

退出:exit

查看数据库:show databases;   [ ; 英文分号结尾]

创建数据库:create database bjpowernode(数据库名字);

选择数据库:use bjpowernode(数据库名字);

查看当前使用的数据库:select database();

导入一下提前准备好的数据:source D:\course\03-MySQL\document\bjpowernode.sql(文件路径)表中相关命令:

2.表格:

查看表中的数据:select * from emp(表名);

查看表的结构:desc dept(表名);

3.简单查询:

查询一个字段:select dname(字段名) from dept(表名);

查询两个字段,或者多个字段:select deptno,dname from dept;//使用逗号隔开“,”

查询所有字段:select a,b,c,d,e,f... from tablename;

给查询的列起别名:select deptno,dname as deptname from dept;//select语句是永远都不会进行修改操作的(因为只负责查询)

假设起别名的时候,别名里面有空格:select deptno,dname 'dept name' from dept; //加单引号

计算员工年薪:select ename,sal*12 from emp; // 结论:字段可以使用数学表达式!   select ename,sal*12 as '年薪' from emp; //别名是中文,用单引号括起来。

4.条件查询:

▲语法格式:select字段1,字段2,字段3... from表名where条件;

= 等于  <>或!= 不等于  < 小于  <= 小于等于  > 大于  >= 大于等于

between … and …. 两个值之间, 等同于 >= and <=                             is null 为 null(is not null 不为空) and 并且  or 或者

in 包含,相当于多个 or (not in 不在这个范围中)  like 模糊查询

= 查询薪资等于800的员工姓名和编号:select empno,ename from emp where sal = 800;

查询SMITH的编号和薪资:select empno,sal from emp where ename = 'SMITH'; //字符串使用单引号

!= 查询薪资不等于800的员工姓名和编号:select empno,ename from emp where sal != 800;

查询薪资在2450和3000之间的员工信息:select empno,ename,sal from emp where sal between 2450 and 3000;//使用between and的时候,必须遵循左小右大。(between and是闭区间,包括两端的值。)

or 查询工作岗位是MANAGER和SALESMAN的员工:select empno,ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';//and 优先级比or 高,如果想让or先执行,需要加“小括号”。

in 查询工作岗位是MANAGER和SALESMAN的员工:select empno,ename,job from emp where job in('MANAGER', 'SALESMAN');//in不是一个区间,in后面跟的是具体的值。

like 找出名字中含有O的:select ename from emp where ename like '%O%';

找出名字以T结尾的:select ename from emp where ename like '%T';

找出第二个字每是A的:select ename from emp where ename like '_A%';

 找出名字中有“_”的:select name from t_student where name like '%\_%';    // \转义字符。

5.排序:

▲select ... from ... where ... order by...

▲执行顺序:from  where  select  order by(排序总在最后执行)

查询所有员工薪资,排序:select ename,sal from emp order by sal (asc); //默认是升序!

怎么降序:select ename,sal from emp order by sal desc;

查询员工名字和薪资,要求按照薪资升序,如果薪资一样的话,再按照名字升序排列:select ename,sal from emp order by sal asc, ename asc; // sal在前,起主导,只有sal相等的时候,才会考虑启用ename排序。

(综合)找出工资在1250到3000之间的员工信息,要求按照薪资降序排列:select enmae,sal from emp where sal between 1250 and 3000 order by sal desc;

6.单行处理函数:

  lower转换小写:select lower(ename) as ename from emp;

  upper转化大写:select upper(name) as name from t_student;

  substr取子串:select substr(ename,1,1) as ename from emp;//substr(被截取的字符串,起始下标,截取的长度)  起始下标从1开始,没有0.

找出员工名字第一个字母是A的员工信息:①模糊查询:select ename from emp where ename like ‘A%’;  ②substr函数:select ename from emp where substr(ename,1,1) = ‘A’;

  concat函数进行字符串的拼接:select concat(empno,ename) from emp;

  length取长度:select length(ename) enamelength from emp;

  trim去空格:select * from emp where ename = trim(‘  KING’);

  str_to_date将字符串转换成日期

  date_format格式化日期

  format设置千分位

  case..when..then..when..then..else..end:当员工的工作岗位是MANAGER的时候,工资上调10%,当工作岗位是SALESMAN的时候,工资上调50%,其它正常(注意:不修改数据库,只是将查询结果显示为工资上调):select ename,job,sal as oldsal,(case job when ‘MANAGER’then sal*1.1 when ‘SALESMAN’then sal*1.5 else sal end) as newsal from emp;

round四舍五入:select round(36.567, 0) as result from emp; //保留整数位。      

select round(1236.567, 1) as result from emp; //保留1个小数        

select round(1236.567, -1) as result from emp; // 保留到十位。

select 字段(字面量/字面值) from 表名;  select 'abc' as bieming from emp;// select后面可以跟某个表的字段名(可以等同看做变量名),也可以跟字面量/字面值(数据)。

rand()生成随机数:select round(rand()*100,0) from emp; // 100以内的随机数

ifnull 可以将 null 转换成一个具体值(在所有数据库当中,只要有NULL参与的数学运算,最终结果就是NULL):ifnull(数据, 被当做哪个值)  select ename, (sal + ifnull(comm, 0)) * 12 as yearsal from emp;

7. 分组函数(多行处理函数):

  多行处理函数的特点:输入多行,最终输出一行。(count计数  sum求和  avg平均值  max最大值   min最小值)//分组函数在使用的时候必须先进行分组,然后才能用。如果你没有对数据进行分组,整张表默认为一组。

  找出最高工资:select max(sal) from emp;

  找出最低工资:select min(sal) from emp;

  计算工资和:select sum(sal) from emp;

  计算平均工资:select avg(sal) from emp;

  计算员工数量:select count(ename) from emp;

  分组函数注意:①分组函数自动忽略NULL,你不需要提前对NULL进行处理。select count(comm) from emp; 

②分组函数中count(*)和count(具体字段)的区别:   

count(具体字段):表示统计该字段下所有不为NULL的元素的总数。   、count(*):统计表当中的总行数。(只要有一行数据count则++)因为每一行记录不可能都为NULL,一行数据中有一列不为NULL,则这行数据就是有效的。   

select count(*) from emp;  select count(comm) from emp;

③分组函数不能够直接使用在where子句中。

④所有的分组函数可以组合起来一起用。

8.分组查询:

▲select ... from ... where ... group by…having…order by...

▲执行顺序:from  where   group by   having  select  order by(排序总在最后执行)

  找出每个工作岗位的工资和:select  job,sum(sal) from emp group by job;// 在一条select语句当中,如果有group by语句的话,select后面只能跟 参加分组的字段,以及分组函数,其它的一律不能跟。

  找出每个部门的最高薪资:select deptno,max(sal) from emp group by deptno;

  找出“每个部门,不同工作岗位”的最高薪资:select deptno, job, max(sal) from emp group by deptno, job;// 两个字段联合成1个字段看。(两个字段联合分组)

  使用having可以对分完组之后的数据进一步过滤(having不能单独使用,having不能代替where,having必须和group by联合使用)

找出每个部门最高薪资,要求显示最高薪资大于3000的:①select deptno,max(sal) from emp group by deptno;  select deptno,max(sal) from emp group by deptno having max(sal) > 3000;

②select deptno,max(sal) from emp where sal > 3000 group by deptno;// where和having,优先选择where,where实在完成不了了,再选择having。

二、关于SQL语句的分类:

SQL语句有很多,最好进行分门别类,这样更容易记忆。

分为:DQL  DML  DDL  TCL  DCL

DQL:数据查询语言(凡是带有select关键字的都是查询语句)select...

DML:数据操作语言(凡是对表当中的数据进行增删改的都是DML)

  insert 增delete 删update 改   这个主要是操作表中的数据data。

DDL:数据定义语言(凡是带有create、drop、alter的都是DDL。)

主要操作的是表的结构。不是表中的数据。

create:新建,等同于增 drop:删除 alter:修改

这个增删改和DML不同,这个主要是对表结构进行操作。

TCL:是事务控制语言

包括:事务提交:commit;  事务回滚:rollback;

DCL:是数据控制语言。

例如:授权grant、撤销权限revoke....

编辑来源:老杜带你学_mysql入门基础(mysql基础视频+数据库实战)_哔哩哔哩_bilibili

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值