数据库软件:
     关系型数据库:
         Mysql   
         Oracle
         SqlServer
         Sqlite  
     非关系型数据库:
         Redis
         NoSQL
 1.数组、链表、文件、数据库
 
     数组、链表: 内存存放数据的方式(代码运行结束、关机数据丢失)
     文件、数据库: 外存存放数据的方式(代码运行结束、关机数据不会丢失)
    文件:数据量很小         处理效率很低
     数据库:数据量很大       处理数据(增删改查)效率高
2.安装sqlite数据库:
     1.让虚拟机能够上网
     2.apt-get工具集配置好
     3.sudo apt-get install sqlite3 
     4.启动sqlite3 
         sqlite3 
     5.输入.quit退出
3.SQL命令:
     1. .headers on/off 打开/关闭 数据库中列名称
     2. .mode csv/column/html/insert/line/list/tabs/tcl 
     3. .schema 表名称   查看表名称对应的表的格式(有哪几列?每一列类型?)
     4. .width 宽度      设置显示时的数据宽度 
     5..tables          查看数据库文件中的所有表
4.SQL语言:
     数据的:增、删、改、查
    1.使用sqlite3打开数据库文件 
       sqlite3 数据库文件名
       sqlite3 ./student.db 
     2.创建表 
       create table 
       
       示例:
         sqlite> create table student (id integer primary key asc, name varchar(255), sex varchar(32), age integer, score integer);
    3.插入数据
       insert into 
      示例:
         sqlite> insert into student values (1001, "张三", "男", 19, 80);
         sqlite> insert into student (id, name, score) values (1002, "李四", 100);
         sqlite> insert into student values (1002, "王二", "女", 18, NULL);
    4.查找数据
       select 
      示例:
         sqlite> select * from student;
         sqlite> select name, score from student;
    5.内容匹配
       where 
      示例:
         sqlite> select * from student where name like "%张%";
练习:数据库完成对订单的管理:
     1.创建一张订单表,由 ID, 订单号, 货物信息, 生产厂商, 联系人, 联系电话, 订单时间
                       1    D202403120001
     2.在表中插入随机给定的10条数据
     3.查找 联系人为 "张三" 的所有订单号
       select ordername from order_manager where contactperson="张三";
      查找 订单号为 "D202403120001" 的所有订单信息
       select * from order_manager where ordername="D202403120001";
      查找 订单时间截止到当天的所有订单号及联系人、联系电话
       select ordername,contactperson,contactphone from order_manager where ordertime < "20240310 24:00:00";
      查找 货物信息包含 "手机" 内容的所有订单信息及货物信息
       select ordername,orderinfo from order_manager where orderinfo like "%手机%";
      查找 生产厂商是"华为" 的所有货物信息包含 "平板" 的订单信息  
       select * from order_manager where factoryname="华为" and orderinfo like "%平板%";
    6.主键:
         key:键值 
         内键:在表中唯一标识一条数据称为内键
         外键:与外部表进行标识的数据称为外键 
    7.删除
         delete from 
        示例:
             delete from student where name="李四";
    8.修改
         update 
        示例:
             update student set sex="男",age=19 where name="王二";
    9.排序
         order by 
        示例:
             select * from order_manager order by ordertime desc;
多表联合查询:
     1.交叉连接
         cross join 
        示例:
         sqlite> select student.name as 学生姓名, lesson.name as 课程名
         ...> from student cross join lesson;
     2.内连接
         inner join 
        示例:
         sqlite> select score.id as 成绩编号, student.name as 学生姓名, score.score as 成绩
         ...> from score inner join student on score.stuid=student.id;
     3.外连接
         outer join 
        示例:
         sqlite> select score.id as 成绩编号, student.name as 学生姓名, score.score as 成绩
         ...> from student left outer join score on score.stuid=student.id;
     示例:
         sqlite> select score.id as 成绩编号, student.name as 学生姓名, score.score as 成绩
         ...> from student left outer join score on score.stuid=student.id
         ...> where name="张三"
         ...> order by 成绩 desc;
 作业:
     1.从终端输入一个单词,在文件中查找单词含义并打印在终端
         
     2.1037
     https://pintia.cn/problem-sets/994805260223102976/exam/problems/994805284923359232?type=7&page=0