Live2D

MySQL学习笔记

数据库(MySQL)

  1. 分类

    • 关系型数据库(SQL)
      • MYSQL,Oracle,Sql Server,DB2,SQLlite
    • 非关系型数据库(NOSQL)
      • Redis,MongDB
    • DBMS(数据库管理系统)
      • 数据库管理的软件,科学有效的管理和操作数据
    • MYSQL
      • 关系型数据库管理系统(RDBMS)
      • 开源
      • 体积小、速度快、总体成本低
  2. 解压缩安装

    • 解压到系统环境资源路径下

    • 配置环境变量

    • 新建MySQL配置文件ini

      [mysqld]
      #目录更改为自己的
      basedir=D:\environment\mysql-2.7.19\
      datadir=D:\environment\mysql-2.7.19\data\
      prot=3306
      #skip-grant-tables
      
    • 启动管理员模式下的cmd命令行

      • 切换到MySQL的bin目录下

      • 执行 mysqld-install

      • 执行 mysqld --ini tialize-insecure --user=mysql

      • 执行 net start mysql

      • 执行 mysql -u root -p

      • 执行空密码

      • 执行 update mysql user set authentication_string=password('root') where user='root' and Host = 'localhost';

      • 执行 flush privileges;

      • 注释ini文件最后一行的无密码进入

  3. 注释--、#、/**/

  4. myisam 支持非聚集索引 innodb 支持聚集索引

  5. curd

    • insert into 表名 (列1,列2,。。。)values(值1,值2,。。。)
    • delete from 表名 where 列名=值
      • truncate table 表名(自增会归零 ,不会影响事务)
    • update 表名 set 列1=值,列2=值 where 列3=值
    • select * from 表名
      • select 列1,列2 from 表名
  6. 别名 as

    • select 列1,列2 AS 别名1,别名2 from 表名
  7. 去重 distinct

    • select distinct 列 from 表
  8. where 条件 子句

    • select * from 表 where 列=值 AND where 列=值
  9. 模糊查询

    • select * from 表 where 列 like '刘_'
    • select * from 表 where 列 like '%文%'
    • select * from 表 where 列 in(值1,值2.。。。)
    • select * from 表 where address is null
    • select * from 表 where address is not null
  10. 连表查询

    • select 列1,列2 from 表1 AS 1 inner join 表2 AS 2 where 1.列1=2.列1

      --inner join
      select s.studentNo,studentName,studentResult 
      from student AS s 
      INNER JOIN result AS r 
      WHERE s.studentNo=r.studentNo
      --right join
      select s.studentNo,studentName,studentResult 
      from student s 
      RIGHT JOIN result r 
      ON s.studentNo=r.studentNo
      --left join
      select s.studentNo,studentName,studentResult 
      from student s 
      LEFT JOIN result r 
      ON s.studentNo=r.studentNo
      --三表查询,,查询多张表,先查询两张表,在一个表一个表的增加
      select studentNo,studentName,SubjectName,studentResult
      from student s
      right join result r
      on r.studentNo = s.studentNo
      inner join `subject` sub 
      on r.SubjectNo = sub.SubjectNo
      
      • inner join--如果表中有一个匹配,就返回行
      • left join--会从左表中返回所有的值,即使右表中没有匹配
      • right join--会从右表中返回所有的值,即使左表中没有匹配
  11. 自连接

    • 自己的表和自己的表连接,核心:一张表拆分为两张一样的即可
  12. 排序

    • ORDER BY Student Result ASC(升序)
    • ORDER BY Student Result DESC(降序)
    • HAVING(过滤,不能用where)
  13. 分页

    • 缓解数据库压力,给人的体验更好, 现在:瀑布流
    • 语法:limit 起始值,页面大小
    • 网页:当前页,总页数,页面大小
    • limit(n-1)*pageSize,pageSize
  14. 嵌套查询(由里及外)

  15. MySQL常用函数

    • 聚合函数

      select ABS(-8) --绝对值
      select CELLING(9.4) --向上取整
      SELECT FLOOR(9.4) --向下取整
      SELECT RAND() --返回一个0~1之间的随机数
      SELECT COUNT(*) FROM `student`;
      SELECT COUNT(1) FROM `student`;
      SELECT COUNT(`studentNo`) FROM `student`;
      SELECT AVG(``)--平均分
      SELECT MAX(``)--最大值
      SELECT MIN(``)--最小值
      
      
    • 字符串函数

      SELECT CHAR_LENGTH('即使再小的帆也能远航')--返回字符串的长度
      
    • 时间和日期函数

      SELECT CURRENT_DATE()--获取当前的日期
      SELECT CURDATE()--获取当前日期
      SELECT NOW()--获取当前时间
      SELECT LOCALTIME()--获取本地时间
      SELECT SYSDATE()--获取系统时间
      
      SELECT YEAR(NEW())--获取当前年份
      SELECT MONTH(NEW())--获取当前月份
      SELECT DAY(NEW())--获取当前天数日期
      SELECT HOUR(NEW())--获取当前小时
      SELECT MINUTE(NEW())--获取当前分钟
      SELECT SECOND(NEW())--获取当前秒数
      
  16. MD5加密

    • update 表 SET 列1=MD5(列1) WHERE id=1
  17. 事务(ACID原则)

    • 转账
    • 要么都成功,要么都失败
    • (ACID)原子性,一致性,隔离性,持久性
  18. 索引--帮助MySQL高效获取数据的数据结构

    • 主键索引
      • 唯一的标识,主键不可重复,只能有一个列作为主键
    • 唯一索引
      • 避免重复的列出现,唯一索引可以重复,多个列都可以标识 唯一索引
    • 常规索引
      • 默认的,index/key关键字设置
    • 全文索引
      • 特定的数据库(MYISAM)下才有
      • 快速定位数据
  19. 用户管理

    CREATE USER lix IDENTIFIED BY '123456'--创建用户
    SET PASSWORD = PASSWORD('12345')--修改密码
    RENAME USER lix TO ll--重命名
    GRANT ALL PRIVILEGES ON *.* TO lix--授权
    REVOKE ALL PRIVILEGES ON *.* FROM lix--撤销权限
    
  20. 备份

  21. 规范数据库设计(节省内存空间、保证数据的完整性、方便我们开发系统)

    • 分析需求
    • 设计E-R图
    • 三大范式
      • 第一范式:原子性:保证每一列不可再分
      • 第二范式:前提:满足第一范式。每张表只描述一件事情
      • 第三范式:满足第二范式的前提下。每一列数据都要和主键直接相关,而不能间接相关。
    • 关联查询的表最多不能超过三张表
  22. JDBC

    • SQL注入
      • sql语句漏洞被攻击,导致数据泄露

posted @ 2021-09-02 15:37  六爻呈乾  阅读(75)  评论(0)    收藏  举报