MySQL知识点整理

MySQL

  • 数据库认知
    • 数据库认知
      • 数据库:存放数据的仓库,本质是一个文件系统,将数据以特定的格式存储在一张张表中。
      • 特定:持久化存储
      • 功能:增删改查
  • 数据库管理系统
    • 简称DBMS,是一款用来管理、维护、建立数据库的软件。
    • 用户需要用数据库管理系统来完成数据库中存储在表中的数据
    • 常用数据库管理系统:MySQL,MariaDB,SQLite,redis,mongoDB IBM DB2等
  • MySQL的使用
    • 在DOS里登录MySQL
      • MySQL -uroot -p123456 (123456为数据库密码)
      • mysql -v 查看当前mysql版本号
    • 远程连接数据库
      • mysql -uroot -h(对方主机ip) -P3306 -p123456(123456为对方密码)
        • -u : 用户名
        • -h:host,对方主机ip
        • -P 端口,数据库端口为3306
        • -p 要连接数据库的密码
    • SQL语句
      • SQL语句的认知
        • 使用Java与数据库交互,必须用到数据库独有语言sql,它是数据库的代码
      • sql语句的分类
        • 数据库定义语言(DDL),定义数据库对象
        • 数据库操作语言(DML),对数据库中表的记录进行更新
        • 数据控制语言(DCL),定义数据库的访问权限和安全级别以及创建用户
        • 数据查询语言:(DQL),用来查询数据库中标的记录
      • sql语句的语法规范
        • 可单行,多行书写,以分号结尾
        • 使用空格缩进增强代码的可读性
        • 关键字不区分大小写(大小写不敏感),但自定义的标识符要严格区分
        • /* */,多行注释; #和-- 单行注释
  • SQLyog的使用
    • 在询问里写数据库代码
    • ctrl + 滚轮来调节字体大小
    • 选中要执行的sql 语句,点击执行,快捷键F9.
    • 数据定义语言:DDL
    • 数据库操作:
      • 显示所有数据库 :show databases;
      • 创建数据库 :create database 数据库名 ;
        • 右键刷新,显示最新数据库
      • 查看当前使用数据库的版本号 :select version();
      • 使用(切换)数据库 :use 数据库名 ;
      • 查看当前数据库中所有的表 : show tables;
      • 在当前数据库中查看其它数据库的表 : show tables from 其它数据库名称;
    • 查看当前正在使用的数据库 : select database();
      • 查看创建数据库的建表语句信息 : show create database 表名;
      • 创建数据库时,指定数据库的编码集 : create database 数据库名 default charset 编码方式;
        • 如果没有指定字符集,则会使用创建mysql服务时设置的默认编码集
      • 删除数据库 :drop database 数据库名;
    • 表操作
      • 表的创建:create table 表名(
        字段名1 字段类型1 约束1,
        字段名2 字段类型1 约束2,
        字段名3 字段类型3 约束3,
        字段名n 字段类型n 约束n
        • 最后一个字段数据不用加逗号
        )
        • sql中常用的数据类型
          • 整数 : int
          • 字符 : varchar(字符的长度)
          • 小数 : double
          • date : 日期
        • 创建表之前先检查表是否存在,不存在再创建,并设置编码格式为gbk;
          • create table if not exists 表名(
            表内容
            )default charset gbk;
      • 查看表的结构,也就是表的字段: desc 表名;
        • field 字段 表头的名称
        • type 字段的类型
      • 查看建表语句 :show create table 表名;
      • 删除表 :drop table 表名;
      • 在表中增加一个字段 :alter table 表名 add 字段 字段类型 字段约束;
      • 修改现有字段的字段类型 :alter table 表名 modify 字段名称 新类型 新约束;
      • 修改现有字段的字段名称 :alter table 表名 change 旧列名 新列名 新类型;
      • 删除表中的一个字段 :alter table 表名 drop 字段名;
      • 修改表的名称 :rename table 旧表名 to 新表名; //数据库名称无法修改
      • 修改表的默认编码集 :alter table 表名 charset 编码名称 ;
    • DML : 数据操作语言,对数据库中的表进行操作
      • 表数据的增加
        • inset into 表名 (字段1,字段2,字段3,.... ) values(字段值1,字段值2,字段值3,.....);
          • 注意事项 :
            • 传值时,传入数值的顺序要和字段的顺序一致
            • 传值时,传入的数值类型要和对应字段的数据类型一致
            • 传值时,除了数值类型以外,其他类型都需要引号包括,单双引号都可以
            • 传值时,给某一字段传入空值
              • 直接不写该字段
              • 给字段传入 null
      • 一次给数据库中传入多条数据:
        • inset into 表名 (字段1,字段2,字段3,...)
          value
          ? (字段值1,字段值2,字段值3,..),
          ? (字段值1,字段值2,字段值3,..),
          ? (字段值1,字段值2,字段值3,..);
      • 表数据的删除
        • 删除一条记录 :delete from 表名 where 限定条件;
        • 删除多条记录:用 or 拼接在where后的限定条件;
        • 逐条删除全部记录:
          • delete from 表名;
          • truncate table 表名;
            • truncate:截断,删除
          • ==delete 与 truncate 的区别==
            • ==delete 删除数据时是逐条删除==
            • ==truncate是直接删除整个表,相当于 drop table 表名; 然后新建一个新表==
            • 数据量较大时,使用truncate效率较高.
      • 表数据的修改
        • update 表名 set 要修改的字段="修改后的字段值" 后一般增加限定条件 where
          • 如果不加限定字段,会将整列结果设置为指定值
          • 修改多条记录可用or链接
    • 【MySQL知识点整理】DQL:数据库查询语言,从数据的表中查找记录. Q querry 查询.
      • select 字段1,字段2,字段3,.... from 表名 where 限定条件
        • select * from 表名
          • 查询表中所有数据
        • 给查询字段起别名 as
          • select 字段 AS 给该字段起的别名 from 表名
          • 查询结果为源数据查询到的结果拼接而成,是临时的视图,并不是真实存在的.
          • as可以省略,但是需要在字段和别名见加一个空格
        • 去除重复数据 distinct
          • select distinct 要去重的字段 from 表名;
          • 对多个字段去重,去重时,去重的效果是多个字段拼接以后再去重.
            • select distinct 要去重的字段1,要去重的字段2 from 表名;
          • distinct 要写在所有字段的前面.
        • if null 如果是空,用指定值替换.
          • 在sql中,数值+数值可以正常运算.数值+字符串如果字符串可以转换为数值,则可以正常运算,如果不可以转换为数值,则为原来的数值.
          • if null(字段,0); 如果字段为空,用0替换
        • 拼接字符串 concat("字符串","字段")
          • select concat("我的姓名是","sname") from 表名;
        • 使用限定的逻辑表达 与 and, 或 or, 非 not ; 大于 > ,小于 < ,等于 =,不等于 <>;
        • 和null比较的两种方法
          • <=> null; 是null
          • is null; 是null
          • is not null ; 不是null
        • and
          • select * from emp where sal >10000 and sal < = 20000;
          • select * from emp where sal ==between== 10000 and 20000 between包含10000和20000
        • or
          • select * from emp where eid =10 or eid = 20;
          • select * from emp where eid in (10,20) ;
        • not
          • select * from emp where comm not null ;
        • like,模糊查询,
          • %任意个数 0-n;
          • _一个;
          • select * from 表名 like "张%"; 查找姓张的所有人
          • select * from 表名 like "张_"查找出姓张名字为一个字的人
          • select * from 表名 like "%一%"查找出名字中所有带有一的人
      • 限定条件
        • where
          • where 某字段(列名)=该字段的值(列值),以该字段值为条件限定

    推荐阅读