数据库总结(二)

    xiaoxiao2026-01-07  7

    基本查询:

    表名product

    Distinct去重复

    #查询商品名和商品价格. select pname,price from product;

    #去掉重复值. select distinct price from product;

    #查询结果是表达式(运算查询):将所有商品的价格+10元进行显示.

    select pname,price+10 from product;

    #查询商品名称为“花花公子”的商品所有信息:

    SELECT * FROM product WHERE pname = '花花公子'

    #查询价格为800商品 SELECT * FROM product WHERE price = 800

    #查询价格不是800的所有商品

    SELECT * FROM product WHERE price != 800

    SELECT * FROM product WHERE price <> 800

    #查询商品价格大于60元的所有商品信息 SELECT * FROM product WHERE price > 60;

    #查询商品价格在200到1000之间所有商品

    SELECT * FROM product WHERE price >= 200 AND price <=1000; SELECT * FROM product WHERE price BETWEEN 200 AND 1000;

    #查询商品价格是200或800的所有商品

    SELECT * FROM product WHERE price = 200 OR price = 800;

    #查询含有'霸'字的所有商品 SELECT * FROM product WHERE pname LIKE '%霸%';

    #查询以'香'开头的所有商品 SELECT * FROM product WHERE pname LIKE '香%';

    #查询第二个字为'想'的所有商品 SELECT * FROM product WHERE pname LIKE '_想%';

     排序查询

    SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC;

    #ASC 升序 (默认) #DESC 降序

    #在价格排序(降序)的基础上,以分类排序(降序) SELECT * FROM product ORDER BY price DESC,category_id DESC;    # category_id是表格中的类型

    #使用价格排序(降序) SELECT * FROM product ORDER BY price DESC;

    #在价格排序(降序)的基础上,以分类排序(降序)

    SELECT * FROM product ORDER BY price DESC,category_id DESC;

     #显示商品的价格(去重复),并排序(降序)

    SELECT DISTINCT price FROM product ORDER BY price DESC;

     聚合查询

    count:统计指定列不为NULL的记录行数;

    sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

    max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

    min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

     

    #查询商品的总条数    SELECT COUNT(*) FROM product;

    #查询价格大于200商品的总条数

    SELECT COUNT(*) FROM product WHERE price > 200;

    #查询分类为'c001'的所有商品的总和

    SELECT SUM(price) FROM product WHERE category_id = 'c001';

     分组查询

    SELECT 字段1,字段2… FROM 表名 GROUP BY分组字段 HAVING 分组条件;

    #统计各个分类商品的个数

    SELECT category_id ,COUNT(*) FROM product GROUP BY category_id ;

    #统计各个分类商品的个数,且只显示个数大于1的信息

    SELECT category_id ,COUNT(*) FROM product GROUP BY category_id HAVING COUNT(*) > 1;

     JDBC

    JDBC实际上就是一种执行sql语句的java api    是访问数据库的标准规范,能够为不同的关系型数据库提供统一访问

           通过jdbc实现数据库的增删改查

     数据库的数据类型

    整数类型:tinyint, smallint, mediumint, int, bigint

    浮点数类型:float, double

    定点小数:decimal

    日期时间类型:year, time, date, datetime, timestamp

    字符串类型:char, varchar, text, enum, set

    二进制类型:bit, binary, varbinary, blob

     数据库的索引

    索引是快速搜索的关键

    索引分为单列索引, 组合索引

                   单列索引:一个索引只包含单个列,一个表有多个单列索引

                   组合索引:一个索引包含多个列

    Mysql的索引类型:

                                 普通索引

                                 唯一索引

                                 主键索引

                                 组合索引

    索引的不足:    降低更新表的速度

                                建立索引会占用磁盘空间的索引文件,如果在一个表上创建太多的索引

           什么情况下使用索引造成索引失效:

                                       对索引进行运算,隐式转换,使用oracl内部函数,sql代码中使用双引号不使用分区索引,

     

     数据库的优化 避免全表扫描,该考虑在where以及order by涉及的列上建立索引避免在where子句中进行null值判断避免在where子句中使用!=或者<>操作符避免在where子句中使用or做链接符In, not in 慎用避免在where中使用参数避免where子句中对字段进行表达式操作,函数操作不要再where子句中=左边进行函数算术运算或者其他表达式运算尽量避免没有意义的查询用exists代替in在表中创建索引时尽量不要超过6个否则会降低insert和update的效率不要使用*,使用具体的字段代替*尽量使用varchar, nvarchar代替char, nchar避免频繁创建和删除临时表,使用表变量代替临时表尽量避免大事务的操作提高系统并发能力  Mysql的事务隔离级别

    事务基本要素:原子性,一致性,持久性,隔离性

    事务的并发问题:脏读,幻读,不可重复度

    事务的隔离级别:读未提交,读已提交,重复度,序列化

    默认的事物隔离级别是:读已提交

    数据库的版本控制是什么

    Mvcc

    Mysql引擎innodb和myisam的区别

    MyIASM是MySQL默认的引擎,但是它没有提供对数据库事务的支持,也不支持行级锁和外键

    Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别。该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统

    1、MyIASM是非事务安全的,而InnoDB是事务安全的

    2、MyIASM锁的粒度是表级的,而InnoDB支持行级锁

    3、MyIASM支持全文类型索引,而InnoDB不支持全文索引

    4、MyIASM相对简单,效率上要优于InnoDB,小型应用可以考虑使用MyIASM

    5、MyIASM表保存成文件形式,跨平台使用更加方便

     

     

    最新回复(0)