0
点赞
收藏
分享

微信扫一扫

SQL学习笔记(1)

IT影子 2022-03-17 阅读 78

目录

一、什么是数据库?什么是数据库管理系统?什么是SQL?

1、数据库:

2、数据库管理系统:

3、SQL:

4、三者之间的关系?

二、MySQL常用命令

 1、用命令启动停止MySQL服务

2、服务启动了,怎么使用客户端登录mysql数据库呢?

3、MySQL 常用命令

① 退出MySQL :exit

② 查看mysql中有哪些数据库?

​③ 怎么选择使用某个数据库呢?

​④ 怎么创建数据库呢?

​⑤  查看某个数据库下有哪些表?(先选择数据库再查看当下数据库的表)

​⑥ 查看mysql数据库的版本号:

 ⑦ 查看当前使用的是哪个数据库

 ⑧ 导入数据表库.sql(得先创建一个同名的数据库)

 ⑨ 怎么查看表中的数据呢?

​ ⑩ 不看表中的数据,只看表的结构,有一个命令(describe缩写为:desc):

4、表(table)

5、SQL语句的分类

6、select语句

(1)简单查询

7、条件查询 (where)

8、排序(order by)

9、数据处理函数(又称单行处理函数)

① 转换小写 lower

② 转换大写 upper

③ 取子串 substr

 ④ 字符串的拼接 concat

 ⑤ 取长度 length

 ⑥ 去空格 trim

⑦ str_to_date 将字符串转换成日期    date_format 格式化日期    format 设置千分位

⑧ case..when..then..when..then..else..end

 ⑨ 四舍五入 round   生成随机数   rand()

⑩ ifnull 空处理函数 (将null 转换为 具体值)

10、分组函数(多行处理函数)

11、分组查询****(非常重要!!!)group by

12、having:对分完组之后的数据进一步过滤。

大总结:

1、关键词书写顺序(不能颠倒)

2、关键字的执行顺序(不能颠倒)


一、什么是数据库?什么是数据库管理系统?什么是SQL?

1、数据库:

  • database,简称:DB,按照一定格式存储数据的一些文件的组合。
  • 顾名思义,存储数据的仓库,实际上就是一堆文件。这些文件中存储了特定格式的数据。

2、数据库管理系统:

  • DataBasemMnagement,简称DSMS
  • 数据库管理系统是专门用来管理数据库中数据的,数据库管理系统可以对数据库当中的数据进行增删改查。
  • 常见的数据库管理系统:MySQL、Oracle、MS SQLserver、DB2、sybase等。。。

3、SQL:

  • 结构化查询语言
  • 程序员需要学习SQL语句,程序员通过编写SQL语句,然后DBMS负责执行SQL语句,最终来完成数据库中数据的增删改查操作。
  • SQL是一套标准,程序员主要学习的就是SQL语句,这个SQL在mysql中可以使用,同时在Oracle中也可以使用,在DB2中也可以使用。   

4、三者之间的关系?

  • DBMS--执行--> SQL --操作--> DB

二、MySQL常用命令

 1、用命令启动停止MySQL服务

语法:net start 服务名称

           net stop 服务名称

(要用管理员身份打开cmd才有权限)其它服务的启停都可以采用以上的命令。

2、服务启动了,怎么使用客户端登录mysql数据库呢?

语法:mysql -u root -p123456 (显示密码)或 mysql -u root -p (隐藏密码)

3、MySQL 常用命令

① 退出MySQL :exit

查看mysql中有哪些数据库?

show databases;
#注意:以分号结尾,分号是英文的分号。

怎么选择使用某个数据库呢?

use sys;


怎么创建数据库呢?

create database test;


 ⑤  查看某个数据库下有哪些表?(先选择数据库再查看当下数据库的表)

show tables;


⑥ 查看mysql数据库的版本号:

select version();

 ⑦ 查看当前使用的是哪个数据库

select database();

 注意:

  • 以上的命令不区分大小写;
  • mysql是不见“;”不执行,“;”表示结束!
  •  \c用来终止一条命令的输入。

 ⑧ 导入数据表库.sql(得先创建一个同名的数据库)

bjpowernode.sql 资源(提取码:sl9v)icon-default.png?t=M276https://pan.baidu.com/s/1grtAeFGM71BIjrKfhNsGkA

source C:\Users\86184\Desktop\SQL\bjpowernode.sql

导入完成!

查看数据库的表单,(dept是部门表;emp是员工表;salgrade 是工资等级表)

 ⑨ 怎么查看表中的数据呢?

select * from 表名;
select * from dept;
select * from emp;
select * from salgrade;

⑩ 不看表中的数据,只看表的结构,有一个命令(describe缩写为:desc):

desc 表名;
desc dept;
desc emp;
desc salgrade;

 

4、表(table)

数据库当中是以表格的形式表示数据的,表是数据库最基本的单元。

5、SQL语句的分类

6、select语句

(1)简单查询

①查询表中的字段(查询两个字段时,用逗号隔开)

select 字段 from 表名;

  要想查询所有字段?

  • 方法1:列出所有字段
  • 方法2:用*代替所有字段

② 给查询的列起别名?

#用as 或者 空格 隔开 原名 和 别名;

select JOB,SAL as SL from emp;

select JOB,SAL SL from emp;

#别名中有空格时,用单引号或者双引号把别名括起来

  • 用单引号才标准,双引号在Oracle数据库用不了
  • 别名是中文也用单引号括起来
select JOB,SAL "S L" from emp;

 

 注意:

  • 只是把显示的查询结果列名显示为‘SL’,原列名还是‘SAL’;
  • select语句永远不会进行修改操作,只是负责查询。

③ 字段的计算(字段可以使用数学表达式!)

例如:计算员工年薪?

 

7、条件查询 (where)

select ename,sal from emp where sal = 800 or sal = 5000 or sal=3000;
select ename,sal from emp where sal in(800, 3000,5000); 

 

想找出名字中有_的?(用转义字符对_转义

mysql> select ename,empno from emp where ename like '%\_%';

8、排序(order by)

select ename,sal from emp order by sal;//默认升序排序
select ename,sal from emp order by sal desc;//指定降序
select ename,sal from emp order by sal asc;//指定升序

 两个字段排序?条件A如果相等,按照条件B排序。

select ename,sal from emp order by sal asc,ename asc;

注意:在前的条件起主导

了解:根据字段的位置也可以排序

  • select ename,sal from emp order by 2;

// 2表示第二列。第二列是sal按照查询结果的第2列sal排序。了解一下,不建议在开发中这样写,因为不健壮。因为列的顺序很容易发生改变,列顺序修改之后,2就废了。

 练习题:

        找出工资在1250到3000之间的员工信息,要求按照薪资降序排列。

select ename,sal from emp where sal between 1250 and 3000 order by sal desc;

9、数据处理函数(又称单行处理函数)

  • 特点:一个输入对应一个输出
  • 对应的函数是:多行处理函数:多个输入一个输出

常见的单行处理函数:

① 转换小写 lower

select lower(ename) as ename from emp;

② 转换大写 upper

③ 取子串 substr

select substr(ename,1,1) as ename from emp;

 练习:(找出员工名字第一个字母是A的员工信息?)

方法一:

方法二:

 ④ 字符串的拼接 concat

 ⑤ 取长度 length

 ⑥ 去空格 trim

⑦ 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   生成随机数   rand()

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

⑩ ifnull 空处理函数 (将null 转换为 具体值)

计算每个员工的年薪?

select ename,(sal+ifnull(comm,0))*12 as salcomm from emp;

10、分组函数(多行处理函数)

计算最高工资?最低工资?总工资?平均工资?人数?

 使用分组函数时应注意:

  1. 分组函数自动忽略NULL
  2. 分组函数中count(*)和count(具体字段)有区别;
  3. 分组函数不能够直接使用在where子句中。找出比最低工资高的员工信息?
  4. 所有的分组函数可以组合起来一起用。

11、分组查询****(非常重要!!!)group by

先分组,再查询

计算每个工作岗位的工资和?
计算每个工作岗位的平均薪资?
找出每个工作岗位的最高薪资?

 练习:找出“每个部门,不同工作岗位”的最高薪资?

练习:找出每个岗位的平均薪资,要求显示平均薪资大于1500的,除MANAGER岗位之外,要求按照平均薪资降序排。

select job,avg(sal) from emp where job <>'manager' group by job having avg(sal)>1500 order by avg(sal) desc;

举报

相关推荐

0 条评论