zoukankan      html  css  js  c++  java
  • MySQL 基本语法(1.表字段操作,2表记录管理 3.运算符管理4.SQL查询 5.约束6.索引

    1、表字段的操作
        1、语法:alter table 表名 执行动作;
        2、添加字段(add)
            1、添加到末尾
                alter table 表名 add 字段名 数据类型;
            2、添加到第一列
                alter table 表名 add 字段名 数据类型 first;
            3、添加到指定位置
                alter table 表名 add 字段名 数据类型 after 字段名;
        3、删除字段(drop)
            alter table 表名 drop 字段名;
        4、修改字段数据类型(modify)
            alter table 表名 modify 字段名 新的数据类型;
        5、修改字段名(change)
            alter table 表名 change 旧字段名 新字段名 数据类型;
        6、修改表名(rename)
            alter table 表名 rename 新表名;
    2、表记录的管理
        1、删除表记录
            1delete from 表名 where 条件;
            2、注意
                delete语句后如果不加where条件子句会将表中所有记录全部删除
            3、示例
                create table t4(
                id int(3) zerofill,
                name varchar(20),
                sex enum("boy","girl")
                );
    
                insert into t4 values
                (1,"Lucy","girl"),
                (2,"Tom","boy"),
                (3,"Bob","boy");
    
                select * from t4;
        2、更新表记录
            1update 表名 set 字段名=值1,字段名=值2,...,where 条件;
            2、注意
                update语句后如果不加where条件会将表中所有的值修改
            3、练习(见建表脚本MOSHOU.hero.txt)
                1、查找所有蜀国人的信息
                    select * from hero where country="蜀国";
                2、查找女英雄的姓名、性别和国家
                    select name,sex,country from hero where sex="女";
                3、把曹操的国籍改为蜀国
                    update hero set country="蜀国" where name="曹操";
                4、把魏延的性别改为 女 ,国籍改为 泰国
                5、把id为2的记录的姓名改为司马懿,性别为男,国家为魏国
                6、删除所有的泰国人
                7、将表中所有的记录的国家改为吴国
                8、删除所有英雄的信息
    3、运算符操作(配合查询、修改、删除)
        1、数值比较&字符比较
            1、数值比较运算符:=!=>>=<<=
            2、字符比较运算符:=!=
            3、练习
                1、找出攻击力高于150的英雄的名字和攻击力的值
                2、找出防御力值不是66的英雄信息
        2、逻辑比较
            1、运算符:and(多个条件同时满足) 
                                 or(多个条件有一个满足即可)
            2、练习
                1、找出攻击值大于200的蜀国英雄的名字、攻击值及国家
                2、将吴国英雄中攻击值为110的英雄的攻击值设置为100,防御值设置为60
                3、查找蜀国和魏国的英雄信息
        3、范围内比较
            1、运算符:between andinnot in
            2、语法
                字段名 between 值1 and 值2
                字段名 in(值1,值2,...,值N)
                字段名 not in(值1,值2,...,值N)
            3、练习
                1、查找攻击值在100-200之间的蜀国英雄信息
                2、找到蜀国和吴国以外的国家的女英雄信息
                3、找到编号为1、3或5的蜀国英雄和貂蝉的编号、姓名、国家
        4、匹配空、非空
            1、空:is null
            2、非空:is not null
            3、练习
                1、查找姓名为空值(NULL)的蜀国男英雄信息
                2、查找姓名为空字符串("")的英雄信息
            4、注意
                1NULL :空值,必须用is或者is not去匹配
                2、""   :空字符串,用 = 或者 != 去匹配
                    
    
                   5.模糊比较
                               1.语法
                                    字段名 like 表达式
                              2. 表达式
                                    1. _ :匹配单个字符
                                    2. %:匹配0到多个字符
                             3. 练习
                                   1 select  id, name, from sanguo where  name like '_%_';
                                   匹配名字中至少有两个字符
                                  2. select id,name, from sanguo where name like '%';
                                    匹配所有的
                                 3.select id, name from sanguo where name like '___';
                                     匹配名字中至少有3个字符的
                                   4. select id, name from sanguo where name like '赵%';
     
    4. SQL查询
                       1. 总结(执行顺序)
                            3.  select ...聚合函数 from ...
                            1 . where...
                            2.  group by...
                            4.  having...
                            5.  order by...
                            6.  limit...
                        2. order by
                             1. 作用: 给查询的结果进行排序
                             2. 排序方法
                                    1. ASC(默认):升序
                                    2. DESC: 降序
                         3. 语法格式
                              order by 字段名   排序方法
                          4. 练习
                              1.将英雄信息按防御值从低到高排序 
                                      select * from sanguo order by fangyu ASC
                              2.将蜀国英雄信息按攻击值从高到低排序
                                      select * from sanguo where country='蜀国' order by gongji DESC
                               3 将蜀国两国的男英雄的名字为三个字的英雄按防御力升序排列
    
    
                            3.limit(永远在SQL语句的最后写)
                                     1.作用: 限制显示查询记录的条数
                                     2.用法
                                            1.limit  n-->显示几条记录
                                            2.limit m,n
                                                m->从第几条记录开始显示,n表示显示几条
                                                       m的值是从0开始计数,3则是表示从第四条记录开始
                                      3 练习
                                               1. 查找攻击值前三名且名字不为空值的蜀国英雄的姓名,攻击值和国家
                                                select name,gongji country from sanguo
                                                where
                                                name is not null and country ='蜀国
                                                order by gongji desc
                                                limit 3;
                                                2. 查找防御值倒数第二名到倒数第四名的蜀国英雄记录
                                                 select * from sanguo
                                                 where country='蜀国'
                                                 order by fangyu asc
                                                 limit 1, 3;
                              4. 聚合函数
                                       1.分类
                                              1.avg(字段名) : 求字段的平均值
                                              2. sum(字段名) : 求字段的和
                                              3. max(字段名) :求字段的最大值
                                              4. min(字段名) :求字段的最小值
                                              5.count(字段名) :统计该字段的记录个数
                                         2.练习
                                              1.  攻击力最强值是多少? 
                                                    select max(gongji) from sanguo;
                                              2, 统计一下啊表中id,name字段分别有多少条记录
                                                    select count(id), count(name) from sanguo;
                                                   ##空值NULL不会被统计,空字符串""会被统计
                                               3.计算一下蜀国英雄的总攻击力
                                                    select sum(gongji) from sanguo where country ='蜀国';
                                                4.统计蜀国英雄中攻击力大于200的英雄
                                                   select count(*) from sanguo where country='蜀国' and gongji>200;
    
                                       
                                  5. group by 
                                           1. 作用:给查询的结果进行分组
                                           2. 练习
                                               1. 查询三国表中一共有几个国家
                                                      select country from sanguo group by country
                                               2. 计算各个国家的平均攻击力
                                                      select country avg(gongji) from sanguo group by country 
                                               3. 查找所有国家中英雄数量最多的前两名的国家名称和英雄数量
                                                   select country,count(*) from sanguo 
                                                    group by country
                                                    order by desc limit 2;
    
                                            3.注意
                                               1. group by 之后的字段名必须要为select之后的字段名相同
                                               2.如果select之后的字段和group by 之后的字段名不一致,则必须要对该字段名进行聚合处理(聚合函数)
    
     
                                    6. having 语句
                                           1.作用: 对查询的语句进行进一步的删选
                                           2.练习 
                                                 1.找出平均攻击力大于105的国家的前两名,显示国家名和平均攻击力
                                                       select country, avg(gongji) from sanguo 
                                                       group by country 
                                                       having  avg(gongji) >105
                    order by avg(gongji) desc
                                                       limit 2;
                                             3.注意
                                                1.having语句通常与group by语句联合使用,用于过滤由group by 语句返回的记录集
                                                 2.having语句的存在弥补了where条件子句不能与聚合函数联合使用的不足,where只能操作表中实际操作的值
                                                 ,having操作的是聚合函数生成的列
                                        7. distinct
                                                1.作用:不显示字段的重复值
                                                2 .练习
                                                      1.sanguo表中有哪几个国家
                                                           select distinct country from sanguo
                                                           #多个字段用逗号隔开
                                                       2. 计算蜀国一共有多少个英雄
                                                          select count(distinct name) from sanguo where country='蜀国';
                                                       3. 注意
                                                           1. distinct 处理的是di'stinct 与 from 之间的所有字段,全部相同才能去重
                                                            2. distinct 不能对任何字段做聚合处理
                                           8. 查询表记录时做数学运算
                                                  1. 运算符
                                                        +-, * ,/. %
                                                  2. 练习
                                                       1. 查询显示所有英雄的攻击力全部 乘以10
                                                          select id, name, country, gongji*10 as xgj from sanguo 
                                                       2 查询时显示所有英雄的防御力+5
                                                          select id, name, country, gongji+5 as xgj from sanguo 
    
    5. 约束
            1.作用
                   为了保证数据的完整型,
                    可以限制无效的数据插入到数据表中
             2. 约束分类
                 1.默认约束(default)
                     1 作用: 在插入记录时,如果不给该字段赋值,则使用默认值
                     2 格式: 字段名, 数据类型 default值
                  2,非空约束(not null) 
                       1.作用:不允许该字段的值有NULL记录
                        2.格式 :字段名 数据类型 not null 
    
    6. 索引 
              1.定义
                   对数据库中表的一列或者多列的值进行排序的一种结构
                    (MySQL中用BTREE方式)
                       MySQL 中支持分三层
    
               2. 优点 
                  1. 可以加快数据的检索速度
               3. 缺点
                   1. 当你对表中的数据进行增加修改和删除的时候索引也要动态维护,降低了数据的维护速度;
                   2. 索引需要占用物理空间
                4. 索引类型
                   1. 普通索引(index)
                         1. 使用规则
                              1 一个表中可以有多个index字段
                              2. 字段的值可以有重复,且可以为NuLL值
                              3. 经常把做查询条件的字段设置为index字段
                              4  index字段的key标志是MUL
                          2 创建index
                               1. 创建表时创建
                                   index(字段名1), index(字段名2)
                                2. 在已有表中创建index
                                   create index 索引名(字段名) on 表名(字段名)
                                3.注意
                                   索引名一般和字段名相同
                           3.  查看普通索引
                                1. desc 表名; -->查看key标志为MUL
                                2. show index from 表名
                            4. 删除普通索引
                                  drop index 索引名 on 表名
                                  注意:
                                      删除索引只能一个一个删除
                             
                     2. 唯一索引
                     3. 主键索引
                     4. 外键索引       
  • 相关阅读:
    「B/S端开发」DevExtreme初级入门教程 Vue篇入门指南
    界面控件DevExpress WinForm MVVM命令讲解(三)
    界面控件DevExpress WPF入门级教程 调用表达式编辑器
    界面控件Telerik UI for WinForms入门教程 Telerik Upgrade API Analyzer
    响应式UI部件DevExtreme正式发布v21.2.4
    python枚举之Enum模块
    MessageBox的用法
    dotnet中的时间差
    在C#中API函数的调用
    关于C#中timer类 在C#里关于定时器类就有3个
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/9387890.html
Copyright © 2011-2022 走看看