知识回顾
    DML数据操作语言
    操作表中的数据
    写入操作
    新增insert
    insert into 表名 values();
    删除delete
    delete from 表名 [where…];
    修改update
    update 表名字 set列=值, 列=值 [where…]
    读取操作DQL
    查询select
    select 列, 列, 列 from 表名字[where];
    select from 表名字;
    建议大家不叫使用
    底层需要做列名匹配 性能比较慢
    补充一个创建数据库或表格时处理中文字符的问题
    创建database 每一个表格都可以存储中文
    create database 名字 [default character set = ‘字符集’];
    create database student [default character set=utf8];
    创建table 设置支付机
    create table 名字(
    列 类型 长度..
    )[character set utf8][collate 排序规则];
    utf8 utf8_general_ci
    排序方式utf*_general_ci 默认 性能比较高 可能不太精准 俄罗斯 越南
    排序方式utf8_unicode_ci 性能比较低 扩展性好

    还可以通过show table status from 数据库名字 like ‘表格名字’;
    =============================================================

    在找寻数据的时候做一个筛选

    条件筛选 where

    1. 除了insert 以外的其他三
    2. 个语句都可以做筛选
      1. where 是一个关键字 拼接再出了insert 语句以外的其他语句基本结构之后
      2. delete from 表where …;
      3. update 表 set 列=值 where…;
      4. select 列 from 表 where…;
    3. 筛选用来筛选出符合条件的记录行数
      1. 并不是控制显示的列
    4. 按照某一个列或者是一某一些条件进行筛选
      1. 列 满足一定条件
    5. where 后面具体怎么使用 链接什么东西

    比较运算符号 > < >= <=
    select * from student where chinese > 95;
    select * from student where english < 85;
    select * from student where physical = 99;
    算数运算符号: + - * /
    一个要求需要一个学生两年以后年龄> 20岁的
    select * from student where sage+2>20;
    逻辑运算符 &(and) |(or) !(not)
    如果and 和 or同时执行, and比or的优先级高
    语文成绩满足95 && 英语成绩满足95
    select * from student where chinese >= 95 and englise >=95;
    数据库底层做的事情
    1.解析SQL 知道了表格 查询到所有记录 筛选记录
    2.从表格中把所有数据都读取出来 放在数据库缓存 集合List
    3.将list集合做一个遍历循环 每一次拿到一个元素(一行记录) 条件
    假设我们的表格有7条记录
    如果只写一个where条件
    执行7次循环就可以比价出来了
    如果使用了and这个语句至少有两个条件那它会先用第一个条件先筛一遍, 然后用后面那个条件 再筛一遍(执行效率较慢) 一般第一遍筛选要把条件苛刻的写在前面**
    //条件查询所有的男生|| 年龄>17岁
    select from student where sname = “nan”o ssex = 17;
    {between and}
    //条件 查询物理成绩>=75 并且 <= 90分
    select from student where betwenn physics >= 75 and physics <=90;
    in 满足条件就可以
    select from student where chinese in(99, 92);(满足括号条件其中一个)
    select
    from student where not chinese in(99, 92);不在这个范围里面的**

    • *like 模糊查询 %表示0个或多个 _用来代替1个字符(有且只有一个)
    • //条件我想找 与’z’开头的
    • select * from student where sname like ‘z%’
    • select * from student where sname like ‘_h%’;
    • //条件我想找带n字母的名字
    • select * from student where sname like ‘%n%’;
    • //条件我不想找带n字母的名字
    • select * from student where sname not like ‘%n%’;
    • 删除:
    • delete from student where sname = ‘wangwu’;
    • 修改其中的属性信息
    • update student set ssex = ‘nv’ where sname = ‘lisi’;
      • 排序
    • 连接在查询的语句之后的
    • order by 列
    • 升序排列 asc (默认就是升序的 可以省略不写)
    • 降序排列 desc
    • //条件: 我想先筛选出来年龄 然后再按照降序排列
    • select * from student where ssex = 18 order by english desc;
    • //条件我想按照语文降序排列 如果语文成绩有相同的 我就按照英语成绩降序排列
    • select * from student order by chinese desc , english asc;
      1. select * from student where ssex = ‘nan’, or sage = 17;

    创建一个学生表格 用来记录学生信息
    学号 名字 性别 年龄 生日 中文 英文 物理 化学 班级编号
    float(m,n);总共可以存储m位数字 小数点之后有n位
    m取值范围1-65 n取值范围0-30
    m是10, n是0
    (5,2) 999.99 这是存储的最大类型
    create table student(
    sid int(3),
    sname varchar(20),
    ssex varchar(3),
    sage int(3),
    sbirthday date,
    chinese float(5,2),
    english float(5,2),
    physics float(5,2),
    physical float(5,2),
    classid int(4)
    )character set utf8;
    select * from student where chinese > 95;