Mysql 基本语法(学习笔记)

一、数据库的一些基本概念

1) 什么是数据库

​ 数据库是用于存储和管理数据的仓库

2) 数据库有什么特点

  1. 数据库实际上就是一个文件管理系统,是用来持久化存储数据的,就有点类似于我们常见的文件夹。
  2. 它的作用是方便我们存储和管理数据。
  3. 我们可以通过一个统一的方式操作数据库(也就是我们所说的sql语句)。

3) 数据库的一些配置问题

  1. MySQL启动

    1. 手动

      1. 在电脑左下角的搜索框中输入计算机管理

      在这里插入图片描述

      1. 然后在服务和应用的服务中找到服务

      在这里插入图片描述

      1. 然后找到mysql,手动启动mysql

      在这里插入图片描述

    2. 使用cmd 然后输入services.msc 打开服务窗口,其他的步骤同上

    3. 使用管理员身份打开cmd(这里需要cmd的快捷方式打开,我的路径为C:\Users\11743\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\System Tools,大家可以参考一下),下面有两个命令,可以快速启动我们的mysql

      1. net start mysql => 启动mysql的服务
      2. net stop mysql => 关闭mysql服务
  2. Mysql登录

    1. mysql --host=ip --user=root --password=你的密码
    2. mysql -uroot -p密码

二、SQL

1) 什么是SQL

2) SQL通用语法

  1. SQL语句可以单行或者多行书写
  2. 每条SQL语句以分号结尾
  3. 可以使用空格和缩进来增强可读性
  4. 关键字建议大写
  5. 注释
    1. 单行注释: – 注释内容
    2. 多行注释: /*注释*/

3) SQL的一些术语理解

  1. DDL (数据定义语言) :用来定义数据库对象,数据库、表、列等。关键字:create、drop等
  2. DML (数据库操作语言) : 用来对数据库中表的数据进行增删改。关键字: insert 、delete、update 等(重点)
  3. DQL (数据查询语言) : 用来查询数据库中表的数据。关键字 : select 、where等(重点)
  4. DCL(数据控制语言) : 用来定义数据库的访问权限和安全级别。关键字 : GRANT等

三、DDL

1) 操作数据库

  1. 创建(Create):

    1. 创建数据库:
      • create database 数据库名称;
    2. 创建数据库,判断不存在,再创建:
      • create database if not exists 数据库名称;
    3. 创建数据库,指定字符集
      • create database 数据库名称 character set 字符集名;
  2. 查询(Retrieve):

    1. 查询所有数据库的名称:

      • show databases;
    2. 查询某个数据库的创建语句

      • show create database 数据库名称;
  3. 修改(Update):

    1. 修改数据库的字符集
      • alter database 数据库名称 character set字符集名称;
  4. 删除(Delete):

    1. 删除数据库

      • drop database 数据库名称;
    2. 先判断数据库是否存在,然后再删除

      • drop database if exists 数据库名称;
  5. 使用(了解)

    1. 使用数据库
      • use 数据库名称
    2. 查询正在使用的数据库
      • select database();

2) 操作表

  1. 创建

    • create table 表名(

      列名1 数据类型1,

      列名2 数据类型2,

      ……)

    • 数据类型:

      ① int : 整数类型

      ② double : 小数类型

      ③ date :日期,yyyy-MM-dd

      ④ datetime : 日期, yyyy-MM-dd HH:mm:ss

      ⑤ timestamp : 时间戳 , yyyy-MM-dd HH:mm:ss(如果为赋值或为null,那么系统会自动使用当前的时间来作为值)

      ⑥ varchar : 字符串

  2. 查询

    • 查询当前数据库中的所有表的名称(show tables;)
    • 查询表结构(desc 表名;)
  3. 修改

    • 修改表名(alter table 表名 rename to 表名(新))

    • 修改表的字符集(alter table 表名 character set 字符集;)

    • 添加一列(alter table 表名 add 列名 数据类型;)

    • 修改列名称(alter table 表名 change 列名 新列别 新数据类型;)

    • 修改列类型(alter table 表名 modify 列名 新数据类型;)

    • 删除列(alter table 表名 drop列名)

  4. 删除

    • 直接删除

      drop table 表名;

    • 先判断是否存在再删除

      drop table if exists 表名;

四、DML

  1. 添加数据

    1. insert into 表 名 ( 列 名1, 列 名 2 , . . 列 名 n ) values ( 值 1 , 值 2 , . . ,值 n );

    2. 注意

      1. 列名和值要一一对应 。

      2. 如果表名后,不定义列名,则默 认给所有列添加值 。

      insert into 表名 values (值1,值2,...,值n);
      
      1. 除了数字类型,其他类型需 要使用引号( 单双都可以)引起来
  2. 删除数据

    1. delete from 表 名 [where 条 件 ]
    2. 注意
      1. 如果不加条件,则删除表中所有记录。
      2. 如果要删除所有记录
        1. delete from 表 名 ; “ 不推荐使用。有多少条记录就会执行多少次删除 操作
        2. TRUNCATE TABLE 表 名 ; – 推荐使用,效率更高先删除表,然后再创建 一张一样的表。
  3. 修改数据

    1. update 表名 set 列名 1 = 值 1, 列名2 = 值2 , [where 条 件 ] ;
    2. 如果不加任何条件,则会将表中所有记录全部修改。

五、DQL

  1. 排序查询

    1. order by 排序字段1, 排序方式1, 排序字段2, 排序方式2…
  2. 排序方式

    1. ASC :升序(默认)
    2. DESC :降序
  3. 注意

    1. 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。
  4. 聚合函数

    1. count(计算个数)

      1. 一般选择非空的列(主键)

      2. count(*)

    2. max(计算最大值)

    3. min(计算最小值)

    4. sum(计算总和)

    5. avg(计算平均值)

  5. 分组查询

    1. group by 分组字段;
    2. 注意:
      1. 分组之后查询的字段(分组字段以及聚合函数)
      2. where和 having的区别
        1. where在分组之前 进行限定 如果不满足条件,则不参与分组。having 在分 组之后进行限定 如 果不满足结果,则不会被查询出来
        2. where 后不可以跟聚合函数,having 可以迸行聚合函数的判断 。
  6. 基本的查询语法

    select 字段 from 表名 where 条件 group by 分组条件 having 分组之后的条件 order by 排序 limit 分页限定
    
    //去掉重复的结果集
    select distinct number from stu
    
    //如果有null,参与运算,那么计算结果就都为null,我们可以使用IFNULL(参数,替换后的值)来避免
    select name,english,math,chinese,chinese+IFNULL(math,0) from exam
    
  7. 条件查询的基本语法
    8. where子句
    2. 操作运算符

    • Between … AND
    • IN (集合)
    • LIKE
      • 占位符
        • _:单个任意字符
        • %:多个任意字符
    • IS NULL
    • AND (&&)
    • or (||)
    • not (!)

六、设计数据库

  1. 多表之间的联系
    1. 一对一(一个人一个学号)
    2. 一对多或者多对一(一个部门有多名员工)
      1. 实现:在多的一方建立一个外建,指向一的一方的主键
    3. 多对多(一个学生可以有很多课程,一个课程可以有很多学生)
      1. 实现:实际上就是在一对多的关系上再弄出一张表出来,用来存放另外两张表的主键,用来作为外键

七、三大范式

  • 这三大范式其实百度百科已经将的非常清楚了,https://baike.baidu.com/item/%E8%8C%83%E5%BC%8F/8438203

  • 我就简单讲一下我的理解(第二范式)

    • 函数依赖:通过我们的学号,可以唯一确定我们的姓名,这就是函数依赖

    • 完全函数依赖:如果想要确定我们的某科成绩,那么我们需要两个条件来查找,也就是我们的学号以及课程号(缺一不可),就可以查询到我们的分数,这就是完全依赖

    • 部分函数依赖:如果想要确定我们的名字,这里有我们的学号,以及我们的课程号,我们只需要我们的学号就能查找到我们的姓名,这就是部分依赖

    • 传递依赖:我们通过我们的学号可以查找到我们的所在的学院,然后通过学院名我们可以知道院长是谁,这就是传递依赖

猜你喜欢

转载自blog.csdn.net/qq_35540187/article/details/107476382