文章目录

  • 一、SQL, DB, DBMS 分别是什么, 他们之间的关系?
  • 二、什么是表(table)?
  • 三、学习通用的 SQL 语句,sql 语句分类:
  • 四、导入数据
  • 五、什么是sql脚本?
  • 六、查看表结构(desc):
  • 七、常用命令
  • 八、简单的查询语句(DQL 数据查询语言)
  • 九、条件查询
  • 十、排序(升序、降序)
  • 十一、分组函数
  • 十二、group by 和 having
  • 十三、总结一个完整的DQL语句


一、SQL, DB, DBMS 分别是什么, 他们之间的关系?

DB: DataBase (数据库, 实际上在硬盘上以文件的形似存在)
DBMS: Database Management System(数据库管理系统,常见的有:MySQL, Oracle DB2 Sybase, SqlServer…)
SQL: 结构化查询语言, 是一门标准通用语言, 标准的sql语句适用于所有的数据库产偶
DBMS 负责执行 sql 语句, 通过执行 sql 语句来操作 db 中的数据
DBMS -----(执行)> SQL 语句 -(操作)-> DB


执行

操作

DBMS

SQL语句

DB


二、什么是表(table)?

表(table)是数据库的基本组成单元, 所有的数据都以表格的格式组织 一个表包括行和列:
行: 被称为数据/记录(date) 列: 被称为字段(column) 字符串(varchar)
每个字段名包含哪些信息: 字段名, 数据类型, 相关约束

三、学习通用的 SQL 语句,sql 语句分类:

DQL(数据查询语言): 查询语句, 凡是 select 语句都是 DQL
DML(数据操作语言):insert /delete /update 对表当中的数据进行增删改
DDL(数据定义语言):createdropalter , 对表结构的增删改
TCL(事务控制语言):commit 提交事务, rollback 回滚事务
DCL(数据控制语言):grant 授权, revoke 撤销权限等

四、导入数据

  • 第一步:登录mysql数据库管理系统
    dos命令窗口
    mysql -uroot -p0320
  • 第二步:查看有哪些数据库
    show databases;(这个不是SQL语句,属于MySQL的命令。)
  • 第三步:创建属于我们自己的数据库
    create database cqnb; (这个不是SQL语句,属于MySQL的命令。)
  • 第四步:使用cqnb数据
    use cqnb; (这个不是SQL语句,属于MySQL的命令。)
  • 第五步:查看当前使用的数据库中有哪些表?
    show tables; (这个不是SQL语句,属于MySQL的命令。)
  • 第六步:初始化数据
    source D:\resources\bjpowernode.sql

五、什么是sql脚本?

xxxxxxx.sql, 这个文件以sql结尾,这样的文件被称为 “sql脚本”

当一个文件的扩展名是.sql,并且该文件中编写了大量的sql语句,我们称这样的文件为sql脚本。
注意:直接使用source命令可以执行sql脚本。
sql脚本中的数据量太大的时候,无法打开,请使用source命令完成初始化。

删除数据库:drop database xxxxx;

六、查看表结构(desc):

熟悉MySQL数据库是要到什么程度 初识mysql_字段

七、常用命令

select datebase(); 查看当前使用的是哪个数据库
select version(); 查看mysql的版本号
\c 命令,结束一条语句
exit 命令,退出mysql
show create table emp; 查看创建表的语句

八、简单的查询语句(DQL 数据查询语言)

语法格式:
select 字段1,字段2,字段名,... from 表名;提示:

  1. 任何一条sql语句以";"结尾
  2. sql语句不区分大小写

    给查询结果的列重命名?
select ename,sal*12 as yearsal from emp;
select ename,sal*12 as '年薪' from emp;

注意:
标准sql语句中要求字符串使用单引号括起来。倏然mysql支持双引号,尽量别用。
as关键字可以省略。
查询所有字段?
select * from emp; // 实际开发中不建议使用*,效率较低!!!

九、条件查询

语法格式:

select 字段,字段... from 表名 where 条件; 执行顺序:先from,然后where,最后select

熟悉MySQL数据库是要到什么程度 初识mysql_熟悉MySQL数据库是要到什么程度_02


between…and… 使用时左小右大[…~…]

between…and…还可以使用在字符串方面[…~…)

模糊查询like //在模糊查询当中,必须掌握两个特殊的符号,一个是 % ,一个是 _

十、排序(升序、降序)

select ename , sal from emp order by sal;     //升序(默认)
select ename , sal from emp order by sal asc; //升序
select ename , sal from emp order by sal desc; //降序

select 执行顺序
字段 ------>3
from
表名 ------->1
where
条件 ------->2
order by
… ------->4
order by 是最后执行的。

十一、分组函数

count 计数
sum 求和
avg 平均值
max 最大值
min 最小值
记住: 所有的分组函数都是对"某一组"数据进行操作。

记住:所有的分组函数都是对"某一组"数据进行操作。
select sum(sal) from emp; // 找出工资总和
select max(sal) from emp; // 找出最高工资
select min(sal) from emp; // 找出最低工资
select avg(sal) from emp; // 找出平均工资
select count(*) from emp; // 找出总人数

分组函数一共5个。
分组函数还有另一个名字:多行处理函数。
多行处理函数的特点:输入多行,最终输出的结果是1行

ifnull()空处理函数
ifnull(可能为null的数据,被当做什么处理)
分组函数自动忽略NULL
重点:所有的数据库都是这样规定的,只要有NULL参与的运算结果一定是NULL。

单行处理函数
什是单行处理函数?
输入一行,输出一行。

count(*)和count(具体的某个字段),他们有什么区别?

count(*): 不是统计某个字中数据的个数,而是统计总记录条数。(和某个字段无关)
count(comm): 表示统计comm字段中不为NULL的数量总数量。

十二、group by 和 having

group by : 按照某个字段或者某些字段进行分组。

having : having是对分组之后的数据进行再次过滤。

熟悉MySQL数据库是要到什么程度 初识mysql_数据库_03


注意: 分组函数一般都会和group by联合使用,这也是为什么它被称为分组函数的原因。

并且任何一个分组函数(count sum acg max min)都是group by语句执行结束之后才会执行的。

当一条sql语句没有group by的话,整张表的数据会自成一组。

select ename,max(sal),job from emp group by job;

以上在mysql当中,查询结果是有的,但是结果没有意义,在Oracle数据库当中会报错。语法错误。

记住一个规则: 能跟分组函数和参与分组字段。

熟悉MySQL数据库是要到什么程度 初识mysql_数据_04

十三、总结一个完整的DQL语句

熟悉MySQL数据库是要到什么程度 初识mysql_字段_05