MySQL入门学习,整理笔记

MySQL

1. sql、DB、DBMS分别是什么,他们之间的关系

  • DB:
    • DataBase(数据库,数据库实际上在硬盘上以文件的形式存在)
  • DBMS:
    • DataBase Management System(数据库管理系统,常见的有:MySQL Oracle DB2 Sybase SqlServer…)
  • SQL:
  • 结构化查询语言,是一门标准通用的语言。标准的sql适合于所有的数据库产品
  • SQL属于高级语言。只要能看懂英语单词的,写出来的sql语句,可以读懂什么意思
  • SQL语句在执行的时候,实际上内部也会先进行编译,然后再执行sql(sql语句的编译由DBMS完成)
  • DBMS负责执行sql语句,通过执行sql语句来操作DB当中的数据
  • DBMS -(执行)-> SQL -(操作)-> DB

2、什么是表

  • 表:table是数据库的基本组成单元,所有的数据都以表格的形式组织,目的是可读性强。
  • 一个表包括行和列:
    • 行:被称为数据/记录(data)
    • 列:被称为字段(column)
    • 每一个字段应该包括哪些属性
      • 字段名、数据类型、相关的约束

3、学习MySQL主要还是学习通用的SQL语句,那么SQL语句包括增删改查,SQL语句怎么分类呢?

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

4、导入数据

  • 第一步:登录mysql数据库管理系统
    • mysql -uroot -pxxx;(这里的xxx是设置的密码)
  • 第二步:查看有哪些数据库
    • show databases; (这个不是SQL语句,属于MySQL的命令)
  • 第三步:创建属于我们自己的数据库
    • create database xxx; (这个不是SQL语句,属于MySQL的命令)
  • 第四步:使用数据
    • use bjpowernode; (这个不是SQL语句,属于MySQL的命令)
  • 第五步:查看当前使用的数据库中有哪些表
    • show tables; (这个不是SQL语句,属于MySQL的命令)
  • 第六步:初始化数据
    • source xxx.sql;(这里的xxx是以.sql结尾的文件)

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

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

6、删除数据库:drop database xxx;

  • 此操作极其危险,不要轻易操作

7、查看表结构

  • desc 表名;

8、表中的数据

  • select * from 表名;

9、常用命令

  • select database(); 查看当前使用的是哪个数据库
  • select version(); 查看mysql的版本号
  • \c 命令,结束一条语句
  • exit 命令,退出mysql

10、查看创建表的语句

  • show create table 表名;

11、简单的查询语句(DQL)

  • 语法格式:
    • select
      • 字段名1,字段名2,字段名3,…
    • from
      • 表名;
  • 注意:
    • 1、任何一条sql语句以“;”结尾
    • 2、sql语句不区分大小写
    • 3、字段可以参与数学运算
  • 给查询结果的列重命名
    • select 字段名 as 新字段名 from 表名;(新字段名可以是中文但是如果是中文的话必须以这样的形式写 ‘新字段名’ )
    • as关键字可以省略
    • 注意:标准sql语句中要求字符串使用单引号括起来。虽然mysql支持双引号,尽量别用
    • 查询所有字段
      • 语法:select * from 表名; 实际开发中不建议使用 * 因为 * 代表全部,效率低

12、条件查询

  • 语法格式:
    • select
      • 字段1,字段2,字段3…
    • from
      • 表名
    • where
      • 条件;
    • 执行顺序from—>where—>select
    • 区间查询
      • select 字段1,字段2… from 表名 where 条件 between 条件小边界 and 条件大边界;
      • between and在使用的时候必须左小右大
      • between and除了可以使用在数字方面之外,还可以使用在字符串方面
      • 使用between and时如果是数字那么左右全部是闭区间,如果是字符串,则是左闭右开原则
      • 在数据库当中NULL不是一个值,代表什么也没有,为空
      • 空不是一个值,不能用等号衡量。
      • 必须使用 is null或者is not null
      • select 字段1,字段2,字段3… from 表名 where 查询条件 is null;
      • 注意:当运算符的优先级不确定的时候加小括号
      • 注意:and和or是和、或的意思,但有时,和要的是or,或要的是and(in等同于or)
      • select 字段1,字段2,字段3… from 表名 where 字段 = ‘查询条件’ or 字段 = ‘查询条件’;
      • select 字段1,字段2,字段3… from 表名 where 字段 in(‘查询条件’, ‘查询条件’);
      • in后面的值不是区间,是具体的值
    • 模糊查询like
      • 在模糊查询当中,必须掌握两个特殊的符号,一个是%,一个是 _
      • %代表任意多个字符, _ 代表任意1个字符
      • select 字段1,字段2… from 表名 where 字段 like ‘%条件%’;
      • 意为:找出(xxx表)中(xxx字段)含有(xxx条件)的(xxx信息)
      • select 字段1,字段2… from 表名 where 字段 like ’ _ A%’;
      • 意为:找出(xxx表)中(xxx字段)中(第二个字符为a或A)的(xxx信息)
      • select 字段1,字段2… from 表名 where 字段 like ‘%T’;
        • 意为:找出(xxx表)中(xxx字段)中(最后一个字符为t或T)的(xxx信息)

13、排序(升序、降序)

  • 语法:
    • select
      • 字段1,字段2…
    • from
      • 表名
    • order by
      • 字段
    • asc(desc);
    • 注意:默认是升序。怎么指定升序或者降序呢?asc表示升序,desc表示降序
    • 注意:越靠前的字段越能起到主导作用。只有当前面的字段无法完成排序的时候,才会启用后面的字段
    • 执行顺序from—>where—>select—>order by

14、分组函数

  • count 计数
  • sum 求和
  • avg 平均值
  • max 最大值
  • min 最小值
  • 记住:所有的分组函数都是对“某一组”数据进行操作的
  • 语法:
    • select count( * ) from 表名;(求总数)
    • select sum( * ) from 表名;(求总和)
  • 分组函数一共5个
  • 分组函数还有另一个名字:多行处理函数
  • 多行处理函数的特点:输入多行,最终输出的结果是1行
  • 分组函数也能组合起来用
  • 分组函数自动忽略NULL
  • SQL语句当中有一个语法规则,分组函数不可直接使用在where子句当中
    • selec
    • from
    • where
    • group by
    • having
    • order by
    • 执行顺序from—>where—>group bu—>having—>select—>order by
    • count( * )和count(具体的某个字段),他们有什么区别
      • count( * ):不是统计某个字段中数据的个数,而是统计总记录条数(和某个字段无关)
      • count(xxx): 表示统计xxx字段中不为NULL的数据总数量

15、单行处理函数

  • 输入一行,输出一行
  • 重点:所有数据库都是这样规定的,只要有NULL参与的运算结果一定是NULL
    • 使用ifnull函数
      • select 字段,(字段+ifnull(字段,0)) * 12 as 新字段名 from 表名;
    • ifnull() 空处理函数
    • ifnull(可能为NULL的数据,被当做什么处理) : 属于单行处理函数

16、group by 和 having

  • group by : 按照某个字段或者某些字段进行分组
  • having : having是对分组之后的数据进行再次过滤
  • 注意:分组函数一般都会和group by联合使用,这也是为什么它被称为分组函数的原因
  • 并且任何一个分组函数(count sum avg max min)都是在group by语句执行结束之后才会执行
  • 当一条sql语句没有group by的话,整张表的数据会自成一组
  • 记住一个规则:当一条语句中有group by的话,select后面只能跟分组函数和参与分组的字段

17、总结一个完整的DQL语句怎么写

  • select
  • from
  • where
  • group by
  • having
  • order by
  • 执行顺序:from—>where—>group by—>having—>select—>order by

猜你喜欢

转载自blog.csdn.net/weixin_43840873/article/details/115191375