DBMS(数据库管理系统)
RDBMS(关系型数据库管理系统)
MySQL关系型数据库
NoSql非关系型数据库

1.RDBMS专业术语: 表:具有固定的列数和任意的行数。
         数据库:一些关联表的集合。
         列:一个数据项Field字段。
         行:一条记录 row。
         主键:唯一的,一个表中只能包含一个主键,可以使用主键来查询数据。
         外键:用于关联两个表。
         索引:使用索引可以快速访问数据库表中的特定信息。
        (索引是对数据库表中的一列或多列的值进行排序的一种结构,类似于书籍的目录)
2.MySQL数据库分为两种:系统数据库:information_schema:存储数据库对象信息。
                 mysql:存储数据库服务器性能参数信息。
                 performance_schema:存储数据库用户权限信息。
                 sys:通过这个库可以快速的了解系统的元数据信息。
              用户数据库
3.创建数据库:create database 数据库名称;
4.删除数据库:drop database 数据库名称;
5.查看数据库:show databases;
6.使用数据库:use 数据库名;
7.查看数据库当中有多少张表:show tables;
8.使用顺序: 先查看有哪些数据库-->再使用相应的数据库-->查看数据库中的表。
9.MySQL存储引擎:数据库对象:存储,管理和使用数据的不同结构形式,如表,视图,存储过程,函数等。
        数据库:存储数据库对象的容器。
        存储引擎:MySQL中数据用不同的存储机制、索引技巧,不同的存储引擎的性能不一样。
        事务:
        分类:MYISAM:不支持事务,但访问快。文件后缀:.frm(表).MYD(数据).MYI(索引)
             INNODB:支持事务,有提交,回滚和恢复能力。 (现在最常用的)
             MEMORY:访问快,数据放在内存中,一旦服务器关闭,表数据丢失,表还存在。
10.什么是SQL:Structured Quevy Language(结构化查询语言)    
11.sql功能分类:DDL:数据定义语言,用来定义数据库对象,创建库、表、列等。
           DML:数据操作语言,用来操作数据库表中的记录。
           DQL:数据查询语言,用来查询数据。
           DCL:数据控制语言,用来定义访问权限和安全级别。
12.常用的数据类型:double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数。
          char:固定长度字符串类型。
          varchar:可变长度字符串类型。
          text:字符串类型。
          blob:二进制类型。
          date:日期类型,格式为yyyy-mm-dd。
          time:时间类型,格式为hh:mm:ss。
          datetime:日期时间类型,格式为yyyy-mm-dd hh:mm:ss。
(在mysql中,字符串类型和日期类型都要用单引号括起来。'Myxq' '2020-01-01')。
13.DDL:创建数据库:create database 数据库名 character set utf8;
    创建学生表:create table students(
               -> name vachar(25),
              -> age int,
             -> sex vachar(5)
              -> );
    添加一列:alter table 表名 add 列名 数据类型;
    查看表的列:desc 表名;
    修改列的类型:alter table 表名 modify 列名 数据类型;
    删除一列:alter table 表名 drop 列名;
    修改表名:rename table 表名to 要修改的表名;
    查看表的创建细节: show create table 表名;
    修改表的字符集为gbk: alter table 表名 character set gbk;
    修改表的列名:alter table 表名 change 原列名 新列名 数据类型;
    删除表:drop table 表名;
14.DML:查询表中的所有数据:select * from 表名;   select * from 表名\G;
    插入操作:insert into 表名 (列名1,列名2,...) values
              -> (列值1,列值2,...),
             -> (列值1,列值2,...),
         注意事项:列名与列值一一对应,不能超出列定义长度,日期和字符要用引号括起来。
    更新操作:更改一列的所有列值:update 表名 set 列名=列值;
         更改列中某一项的值:update 表名 set 列名1=列值1,列名2=列值2 where 列名=列值;
    删除操作:删除一行数据:delete from 表名 where 列名=列值;  (可找回)
         删除所有数据:delete from 表名;  (可找回)
         删除所有数据:truncate table 表名;  (不可找回)
15.修改数据库密码:方式一:use mysql;
               update mysql.user set authentication_string=password('***')
               ->where user='root' and Host='localhost';
               flush privileges;
          方式二:mysqladmin -u root -p password ***  (需要配置好环境变量)
16.DQL:查询所有列:select * from 表名;
    结果集:通过查询语句查询出来的数据以虚拟表的形式展示。
    查询指定列的数据:select 列名1,列名2,... from 表名;
    条件查询:在查询语句后面加上where以及一些运算符和关键字。
        SELECT * from students where sex='woman' and age=19;
    模糊查询:根据指定关键字进行查询,使用like关键字后跟通配符(_任意一个字母)(%任意n个字母)
        select * from students where score like '9%';
    字段控制查询:去掉重复记录:select DISTINCT sex from students;
             结果运算:select *,IFNULL(age,0)+IFNULL(score,0) from students;
             起别名:SELECT *,IFNULL(age,0)+IFNULL(score,0) as total from students;
    排序:对查询的结果进行排序,使用关键字order by。
        降序排序:SELECT * from students order by score desc;
        升序排序:SELECT * from students order by score;
    聚合函数:对查询的结果进行统计计算。
        count():统计指定不为NULL的记录行数。
        max():计算指定列的最大值。
        min():计算指定列的最小值。
        sum():计算指定列的数值和。
        avg():计算指定列的平均值。