• mysql-----sql语句(二)



    ORDER
    BY 根据字段排序 SELECT * FROM TABLE ORDER BY COLUME1 ASC|DESC GROUP BY 语句根据一个或多个列结果集进行 分组 在分组的列上我们可以使用count sum avg等函数 -- WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计 SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP; -- 我们将以上的数据表按名字进行分组,再统计每个人登录的次数: -- mysql null 值的处理 -- is null 当列的值为null 此运算符返回true -- is not null 当列的值不为null 运算符返回true 查找数据表中 runoob_test_tbl 列是否为 NULL SELECT * FROM runoob_test_tbl WHERE runoob_count IS NULL; +---------------+--------------+ | runoob_author | runoob_count | +---------------+--------------+ | 菜鸟教程 | NULL | | Google | NULL | +---------------+--------------+ SELECT * from runoob_test_tbl WHERE runoob_count IS NOT NULL; +---------------+--------------+ | runoob_author | runoob_count | +---------------+--------------+ | RUNOOB | 20 | | FK | 20 | +---------------+--------------+ --------------------------------------------------------------------------

    事务

    --------------------------------------------------------------------------
    mysql  事务
    
    在mysql中只有使用了 Innodb 数据库引擎的数据库才支持事务
    事务处理可用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行
    事务用来管理insert  update delete语句
    
    事务必须满足4个条件(ACID): 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability)
    
    原子性: 一个事务中的所有操作, 那么全部完成, 那么全部不完成, 不会结束在中间某个环节。 事务在执行过程中发生错误, 会被回滚到事务开始
            前的状态,就像这个事务重来没有执行过一样
    
    一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏,这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度
            串联性以及后续数据库可以自发性完成预定的工作
     
    隔离性:数据库允许多个事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时 由于交叉执行而导致数据的不一致。
            事务隔离分为不同级别  包括读未提交  读提交  可重复读 和串行化
    
    持久性:事务处理结束后, 对数据的修改就是永久的, 即便系统故障也不会丢失
    
    
    mysql 事务处理主要有两种方法
    用 begin  rollback  commit
    begin 开始一个事务
    rollback 事务回滚
    commit 事务确认
    
    
    mysql> begin;  # 开始事务
    Query OK, 0 rows affected (0.00 sec)
     
    mysql> insert into runoob_transaction_test value(5);
    Query OK, 1 rows affected (0.01 sec)
     
     
    mysql> commit; # 提交事务
    Query OK, 0 rows affected (0.01 sec)
    
    
    
    mysql> begin;    # 开始事务
    Query OK, 0 rows affected (0.00 sec)
     
    mysql>  insert into runoob_transaction_test values(7);
    Query OK, 1 rows affected (0.00 sec)
     
    mysql> rollback;   # 回滚
    Query OK, 0 rows affected (0.00 sec)
    ---------------------------------------------------------------------------------------------
    

    modeify change  rename

    ---------------------------------------------------------------------------------------------
    ALTER TABLE table_1  DROP i;   
    -- 删除字段i
    
    ALTER TABLE table_1 ADD i INT;
    -- 添加字段 i
    
    ALTER TABLE table_1 ADD i INT FIRST;
    -- 添加字段 i  设定位第一列
    
    ALTER TABLE table_1 ADD i INT after c;
    -- 添加字段 设定位于c个字段之后
    
    
    ALTER TABLE table_1 MODIFY c CHAR(10);
    -- 修改字段类型
    
    ALTER TABLE table_1 CHANGE  c c  CHAR(10);
    -- 修改字段类型 change 可以修改字段名
    
    
    ALTER TABLE table_1 CHANGE  c b  CHAR(10);
    -- 修改字段类型
    
    ALTER TABLE table_1 ALTER i SET DEFAULT 1000;  
    -- 修改默认值为100 
    
    ALTER TABLE table_1 ALTER i DROP DEFAULT;
    -- 删除默认值
    
    ALTER TABLE table_1 RENAME TO table_12;
    -- 修改表名
    ---------------------------------------------------------------------------------------------------
    索引分单列索引和组合索引    普通索引    唯一索引
    索引
    索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。
    创建索引时,你需要确保该索引是应用在    SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
    实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
    
    
    索引提高查询速度,但会降低更新表的速度,如对表进行insert  update  delete , mysql 不仅要保存数据,还要保存一下索引文件
    建立索引会占用磁盘空间的索引文件
    
    
    -- 创建 普通索引
    create  index indexname  on  mytable(username))
    --  如果是char varchar类型  length可以小于字段长度; 如果是blob和text类型,必须指定length
    
    -- 修改表结构(添加索引)
    alter table  tablename add index indexname(colume1)
    
    
    -- 创建表的时候直接指定
    create table  mytable(
        id  int not null,
        username varchar(16) not null,
        index indexname (username))
    );
    
    
    -- 删除索引
    drop index indexname on  mytable;
    
    
    --------------------------------
    唯一索引
    索引列的值必须唯一,但允许有空值,如果是组合索引 则列值组合必须唯一
    
    -- 创建索引
    create unique index indexname ON mytable(username);
    
    -- 修改表结构(添加索引)
    alter table mytable add  unique indexname (username));
    
    -- 创建表的时候直接指定
    create table table(
    id int  not null,
    username varchar(16) not null,
    unique indexname (username)
    );
    
    
    
    
    ALTER TABLE tbl_name ADD PRIMARY KEY (column_list);
    --该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
    
    ALTER TABLE tbl_name ADD UNIQUE index_name (column_list);
    -- 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)
    
    ALTER TABLE tbl_name ADD INDEX index_name (column_list);
    -- 添加普通索引,索引值可出现多次。
    
    ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list);
    -- 该语句指定了索引为 FULLTEXT ,用于全文索引
    临时表
    -- 删除mysql 临时表
    --  默认情况下 当断开与数据库的连接后, 临时表就会自动被销毁,也可以手动去删除, 和删除普通的表示一样的
    -- 创建临时表  TEMPORARY
    create TEMPORARY table  SalesSummary(
        product_name  VARCHAR(50) not null,
        total_sales DECIMAL(12,2) not null DEFAULT 0.00,
        avg_unit_price DECIMAL(7,2) not null DEFAULT 0.00,
        total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
    );
    
    insert into SalesSummary values('cucumber',100.25, 90,2);
    
    SELECT * from SalesSummary;

    复制表

    -- 复制表
    -- 复制表结构
    create table test like apps;
    -- 复制表中的数据
    insert into test  SELECT * from apps;
     mysql元数据
     
     查询结果信息: select  update 或delete语句影响的记录数
     数据库和数据表的信息: 包含了数据库及数据表的结构信息
     mysql服务器信息:  包含了数据库服务器的当前状态,版本号
     
     
    SELECT VERSION( )    服务器版本信息
    SELECT DATABASE( )    当前数据库名 (或者返回空)
    SELECT USER( )        当前用户名
    SHOW STATUS            服务器状态
    SHOW VARIABLES        服务器配置变量
  • 相关阅读:
    Java工作中常用到的工具
    得到区块链直播记录
    如何高效的解决问题
    pgsql数据库应用两点注意
    flask如何使模板返回大文件,又不消耗大量内存
    python内存诊断
    pycharm整体缩进的快捷键
    gdb生成的core文件位置
    gdb源码安装,指定使用的python版本
    gdb源码安装过程中的问题:no termcap library found
  • 原文地址:https://www.cnblogs.com/augustyang/p/9774539.html
Copyright © 2020-2023  润新知