美文网首页
Sql分类详解及单表curd

Sql分类详解及单表curd

作者: dev晴天 | 来源:发表于2018-11-06 17:29 被阅读0次
    再次看下我们的知识架构
    image.png
    补充:

    我们要想操作数据库必须登录数据库软。登录数据库软件的方式有多种

    • cmd窗口登录方式
    • Mysql 命令行方式
    • 图形化界面方式
      图解:


      登录mysql软件.png

    一 数据定义语言-DDL

    image.png

    1 操作数据库

    • 数据库的创建
    • 数据库的删除
    • 数据库的修改
    语法:
    1 数据库的创建:
     create database 数据库名
    2 数据库的删除:  
     drop database 数据库名   
    3 数据库的修改
      一般修改字符集,数据库名 作用不大。
    
    ps:show databases 可查看当前所有的数据库名字
            use 数据库名     可进入指定的数据库中
      
    

    2 操作表

    • 创建表
    • 修改表
    • 删除表
    语法:
    1 表的创建:
    create table 表名(字段描述,字段描述);
    字段描述:字段名 字段类型[约束条件]
    注意:约束可以不写
    
    例如创建学生(stu)表:
    create table stu(id int primary key auto_increment,username varchar(20));
    
    ps: show tables:查看当前数据库下面的所有表
    
       desc 表名:查看表结构(也就是表的描述)
    
       show create table 表名:查看建表语句(有时需要吧表拿来写个相似的,可以看过源码直接粘贴)
    
    2 修改表
        2.1修改表名:
            alter table 表名 rename to 新表名
        2.2表添加字段
            alter table 表名 add 列名 字段描述
            例如向stu添加pwd字段
            alter table student1 add pwd varchar(20);
         2.3修改字段名
                  alter table 表名 change 字段名称 新字段描述
                   例如吧stu表的pwd字段修改为password:
                   alter table stu change pwd password varchar(20);  
                   注意:修改字段名时字段描述也可以改,如上代码varchar(20)
                   也可以写为 int(20),亦可以使用如下2.4代码修改
         2.4修改字段描述
                  alter table 表名 modify 字段名称 字段类型[约束]
                  例如 alter table stu modify password int;
                  注意:这种方式不能修改字段名字 否则报错的
         2.5删除字段
               alter table 表名 drop 字段
               例如删除stu表的 password字段:
                 alter table stu drop password;
             收获感觉2.4的语法更灵活可以取代2.5的功能。
      3 删除表:
           drop table 表名; 
    

    二 数据操纵语言-DML

    • 操作对象记录(行)
    • 关键词: insert,update,delete

    Demo表:


    image.png
    1 插入
      语法1:insert into 表名 values(字段值1,字段值2.....);
    
         注意:
         默认给全部字段插入值(上表id,username,pwd字段)
         必须保证values后面的值的类型和顺序与表结构中的一致
    
         例如:上表的id int类型,username字符类型,pwd字符类型,则你插入 的值必须为 int ,字符,字符类型。
     
          如向上表插入一些值:
          insert into stu values(10,'kate','123');
          注意:上表有三个字段 你value(xxx)xxx也要满足三个值,少一个就不行。
    
       语法2(常用):
       insert 表名 (字段1,字段2,...)values(值1,值2,...)
       
        注意:
        指定字段插入指定的值
        必须保证values后面的值的类型和顺序与表结构中的一致
    
        也就是如上表你要向id ,pwd 这两个字段插入值,则:
    
        insert into stu(id,pwd) values(30,15); 只要类型一致就行,username没 
        插入数据,查询时显示null。(但是你指定两个字段此处你插入三个值或者插入一个就报错,还是少一个也不行)
    
    2 修改
    
    语法:
    update 表名 set 字段名1=字段值1,字段名2= 字段名2...[where 条件]
    
     例如 吧username为tom的用户名改为john
     update stu set username = 'john' where username = 'tom';
     注意:上代码如果不写where条件默认吧所有的用户名改为john
     当然你也可以根据id改变name字段:
     update stu set username = 'kate' where id = 10;吧id为10 的username 改 
     为kate
    
    总结:修改就是修改字段值,根据某一字段值
    
    3 删除
      语法:
     delete from 表名 [where 条件]
     例如删除id为30 的 某项
    delete from stu where id = 30;
    则id为30 的某一相关信息都会删除。
    

    三 数据查询语言-DQL(非官方叫法)

    关键词:select

    • 基本查询
    • 基本条件查询
    • 高级查询
    完整的语法格式:
    select 字段  from 表名 where条件  group by 分组字段 having 条件 order by 排序字段  ase|desc(增或者减顺序)
    
    1基本查询:
    
    
    1 简单的案例:查询表中所有字段信息
    select * from products;
    2 查看指定的字段信息
    select 字段名1,字段名2,.... from table;
    例如:
    select pname from products;
    
    3查询时还可以去掉重复的字段值:
    例如
    select distinct price from products;
    (多个相同的price 只显示一个)
    4 还可以在查询结果上进行运算(+ - *  / 等),但是不会影响数据库中的值。
    例如:将所有商品的价格+10元进行显示
    select price+10 from products;
    
    5 还可以给查询的结果起个别名
    格式 字段名 别名
    例如:select price+10 ‘新价格’ from products;
    注意 新的字段名最好用字符形式(‘’)否则容易出错(比如新*价格就出错,不用‘’时)
    
    
    注意:sql的语法 查询的结果是一张新表,显示给你看的。
    
    
    2 基本条件查询
    1 查询所有:
     select * from 表名;
    2 指定范围查询
        例如:查询商品价格>60元的所有的商品信息:
        select * from product where price>60;
    3.模糊查询
      模糊匹配  格式: 字段名 like "匹配规则"
    
                     匹配规则:  内容匹配"%"
                                数字匹配"_":_ 代表占个位
     例如:"龙" 值为龙
          "%龙" 值以龙结尾
           "龙%" 值 以龙开头
           "%龙%" 值 包含龙
    
     案例 查询商品名称中包含”新”的商品:
     select *  from products where pname like "%新%";
    
    4.查询价格为38,68,98的商品
     or 或者in的用法
     or: 或者
     in:(a,b,c):满足 含有a,或者b 或者 c的。
    and 并且
    例如:
    select * from products where price=38 or price=68 or price = 98;
    select * from products where price in(38,68,98);
    
    5 查询所有薪资在 50 -70之间的
       select * from products where price between 50 and 70;
       select * from products where price >=50 and price<=70 ; 
    小总结:
    where后的条件写法:
         > ,<,=,>=,<=,<>
         like 使用占位符 _ 和 %  _代表一个字符 %代表任意个字符. 
    
          in:在某个范围中获得值.(值不一定连续)
          between num1 and num2 :代表在某一连续区间 例如[num1,num2]   
    

    3 高级查询

    • 排序查询: order by
    • 聚合函数 sum() avg() max() min() count()
    • 分组:group by
    案例驱动举例子:
    1 排序查询
        查询所有的商品,按价格进行排序.(asc-升序,desc-降序)
          select * from products order by price desc;(降序)
        查询名称有“新”的商品的信息并且按价格降序排序.
          select * from products where pname like"%新%"order by price desc;
    2 聚合函数
     sum(字段)求和
     avg(字段) 平均值
     max(字段) 最大值
     min(字段) 最小值
     count(字段) 总数
     round(数字,保留小数位数)  四舍五入
     
     注意:
      以前我们操作的都是行的数据,而聚合函数操作的是列的数据 并且返回 
      一个结果,但是聚合函数会忽略null的值。
    
      获得所有商品的价格的总和:
      select sum(price) from products ;
    
      获得商品表中价格的平均数:
       select round(avg(price),2) from products ;
    
      获得商品表中有多少条记录(多少个字段)
      select count(*) from products ;
    
    3 分组
    语法要求满足:在where的后面 在order by 前面
    ***一般分组伴随着聚合函数***
    
    语法:
    根据某字段分组,伴随聚合函数(一般分组都伴随聚合) from 表 group by 字段
    select 字段,聚合函数 from table group by 字段
    
    举个栗子:
    根据cno字段分组,分组后统计商品的个数
    select cno,count(cno) from products group by cno;
    
    *******************************再举个重要的栗子******************************
    根据cno分组,分组统计每组商品的总数量,并且总数量> 200;
    
    select cno,sum(pnum) from products group by cno having sum(pnum)>200;
     
    注意: where 与having 的区别:
               where是对分组前的数据进行过滤 having是对分组后的数据进行过滤
               where 后面不能使用聚合函数 having可以
    
    

    相关文章

      网友评论

          本文标题:Sql分类详解及单表curd

          本文链接:https://www.haomeiwen.com/subject/yfguxqtx.html