• MySQL知识总结


    1.MySQL数据库
        MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,从而增加了速度并提高了灵活性。
        MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中
      小型网站的开发都选择 MySQL 作为网站数据库,搭配 PHP 和 Apache 可组成良好的开发环境。
    2.MySQL存储方式
        一台数据库服务器中会创建很多数据库,在数据库中会创建很多张表,在表中会有很多记录。
    3.SQL结构化查询语言
         SQL是高级的非过程化编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚
      本文件的扩展名,可以嵌套,具有极大的灵活性和强大的功能。
    4.SQL语言的分类
        (1)DDL(数据定义语言)
        (2)DML(数据操作语言)
        (3)DCL(数据控制语言)
        (4)DQL(数据查询语言)
    5.MySQL数据库的创建、修改和删除
        (1)创建数据库
            语法: create database 数据库名称 [character set 字符集 collate 字符集校对规则](一般忽略);
        (2)查看数据库
          查看所有数据库:
            语法: show databases;
          查看某个数据库:
            语法: show create database 数据库名称;
        (3)修改数据库:
            语法:alter database 数据库名称 [character set 字符集 collate 字符集校对规则](一般忽略);
        (4)删除数据库:
            语法:drop database 数据库名称;
        (5)使用或者切换数据库:
            语法:use 数据库名称;
    6.MySQL表的创建、修改和删除
        (1)创建表
            语法:create table 表名(
                数据名称 数据类型(长度) 约束,
                .......
            );
            注:括号内的语句用逗号进行多次创建,最后的语句不加任何标点符号
            数据类型:(MySQL所对应的Java类型)
             Java中的类型                        MySQL中的类型
                byte/short/int/long             tinyint/smallint/int/bigint
                float                            float
                double                            ouble
                boolean                            bit
                char/String                        char和varchar类型
                                                 char和varchar的区别:
                                                  char代表是固定长度的字符或字符串。
                                                   定义类型char(8),向这个字段存入字符串hello,那么数据库使用三个空格将其补全。
                                                  varchar代表的是可变长度的字符串。
                                                   定义类型varchar(8), 向这个字段存入字符串hello,那么存入到数据库的就是hello。
                Date                            date/time/datetime/timestamp
                                                 datetime和timestamp区别
                                                  datetime就是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用null存入
                                                  到数据库中
                                                  timestamp也是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用当前的
                                                  系统时间存入到数据库中。
                File                            BLOB/TEXT
            约束:
              约束作用:保证数据的完整性
              单表约束:
                主键约束:primary key (主键约束默认就是唯一 非空的)
                唯一约束:unique
                非空约束:not null
        (2)查看表
            查看一个数据库下的所有的表:
              语法:show tables;
            查看单独一个表:
              语法:desc 表名;
        (3)删除表
              语法:drop table 表名;
        (4)修改表
            增添列:
              语法: alter table 表名 add 列名 数据类型(长度) 约束;
            修改列类型,长度和约束:
              语法: alter table 表名 modify 列名 数据类型(长度) 约束;
            删除列:
              语法: alter table 表名 drop 列名;
            修改列名称:
              语法: alter table 表名 change 旧列名 新列名 数据类型(长度) 约束;
            修改表名:
              语法: rename table 表名 to 新的表名;
            修改表的字符集:
              语法: alter table 表名 character set 字符集;
    7.MySQL数据的增删改查
        (1)添加表记录
            向表中插入某些列:
              语法: insert into 表名 (列名1,列名2,列名3…) values (值1,值2,值3…);
            向表中插入所有列:
              语法: insert into 表名 values (值1,值2,值3…);
          注意:
            1.值的类型与数据库中表列的类型一致;
            2.值的顺序与数据库中表列的顺序一致;
            3.值的最大长度不能超过列设置最大长度;
            4.值的类型是字符串或者是日期类型,使用单引号引起来。
        (2)修改表记录
              语法: update 表名 set 列名=值,列名=值 [where 条件];
          注意:
            1.值的类型与列的类型一致;
            2.值的最大长度不能超过列设置的最大长度;
            3.字符串类型和日期类型添加单引号。
        (3)删除表记录
              语法: delete from 表名 [where 条件];(或者truncat from 表名;)<注:truncat删除表数据无法恢复>
          注意:
            1.删除表的记录,指的是删除表中的一行记录;
            2.删除如果没有条件,默认是删除表中的所有记录。
        (4)查看表记录
              语法: select  *(或者列名) from 表 [条件];
    8.MySQL解决向数据库中插入中文记录会出现错误
        解决方法:
            需要将MySQL数据库服务器中的客户端部分的字符集改为gbk,找到MySQL的安装路径:my.ini文件,修改文件中[client]下的字符集,将
          [default-charaacter-set=ISO-8895-1]改成[default-charaacter-set=gbk],然后再重新启动MySQL的服务器。
    9.按不同方式查看表记录
        (1)按条件查询:
            使用where 字句
             > ,< ,<= , >= , <> *不等 , =
            like:模糊查询 , in:范围 查询 ,  条件关联:and or not
            查询李四信息: select * from 表名 where 列名[name = 李四] = '李四';
            查询李四信息并且英语大于90: select * from 表名 where 列名[name = 李四] ='李四' and 列名[Englist]>90;
            在lik可以使用: _ , %  _只能带表一个字符 %带表多个字符  * %王% 带表中间包含着个字就行
            查询姓李的学生信息: select * from 表名 where name like '%李%'
            查询英语成绩是69,75,89的学生: select * form 表名 where 列名[english] in (69 , 75 , 89);
        (2)查询排序:
            使用order by 字段名称 asc/desc; *默认是用asc , 倒序desc;
            查询学生信息按成绩排: selech * from order by 列名[english];
            查询学生成绩按倒序: selech * from order by 列名[english] desc;
            查询学生按语文成绩倒序再按英语升序排列: select * from order by  列名[chinese] desc, 列名[english] asc;
            查询姓李的学生,英语按倒序排列: select * from 表名 where 列名[name] like '李%' order by 列名[english] desc;
        (3)分组统计查询:
            聚合函数:
              sum(); 获得总数: count();*个数;  最大值:max() 最小值:min() 平均值:avg;
                获得所有成绩的和: select sum(exam)from 表名;
              count();
                获得所有的计数: select count(*) from 表名;
              max()/min();
                获得某门考试的最大和最小成绩: select max(math) from 表名;/select min(math) from 表名;
              avg()
                获得平均数:select avg(chinese) from 表名;
            分组查询
              语法:使用group by 字段名称;
               按商品名称统计,每类商品所花费的总金额:select product,sum(price) from orderitem group by product;
             注意:
                where的子句后面不能跟着聚合函数。如果现在使用带有聚合函数的条件过滤(分组后条件过滤)需要使用一个关键字HAVING;
                例:select product,sum(price) from orderitem  group by product having sum(price) > 5000 order by sum(price) asc;
    10.单表查询的执行顺序流程
        select ... from ... where ...  group by ... having ...order by ...;
    11.多表查询
          表与表之间的关系-外键
            作用:保证多张表之间的数据如果有关联,则关联的数据的完整性。
          设计与建表原则
            一对多:将外键设置在多的一方,指向一的主键
            多对多:必须有第三张表,这张表中最少会有两个字段作为外键,指向多对多的两张表的主键
            一对一:唯一外键约束
                    主键对应:
                      实质就是建立外键并且让这个外键唯一。
          查询:
            准备环境:多表分析创建
            连接查询:关联条件就是外键
                内连接:交集, select * from 表1, 表2 where 条件
                左外连接:左表的数据和交集数据
                    select * from 表1 left join 表2 on 条件
                右外连接:右表的数据和交集数据
                    select * from 表1 right join 表2 on 条件
            子查询
    12.分页查询
        select * from 表名 limit begin, length  :begin 从0开始,表示索引;length:表示查询多少条记录
        select * from 表名 limit number; 从第一条数据开始,总共查询number条数据。
    13.MySQL常见bug
         select * from 表名 where score = '80abc' 实质就是:SELECT * FROM stu where score = 80, 会将不能转化为数值的字符舍弃
         select * from 表名 where NAME = 'abC' :MySQL查询的时候不区分大小写      
            解决方法:
                select * from stu where BINARY NAME = 'Abc'

  • 相关阅读:
    实现mypwd
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp9 Web安全基础
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp8 Web基础
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp7 网络欺诈防范
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp6 MSF基础应用
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp5 信息搜集与漏洞扫描
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp4 恶意代码分析
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp3 免杀原理与实践
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp1+ 逆向进阶
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp2 后门原理与实践
  • 原文地址:https://www.cnblogs.com/xu-cceed3w/p/8747342.html
Copyright © 2020-2023  润新知