zoukankan      html  css  js  c++  java
  • 数据库小白小彬同学

    数据库基本操作概述

      数据库:数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增删改查。

    数据库管理系统:数据库管理系统是指一种操作和管理数据库的大型软件,用于建立,使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据。

    常见的数据库管理系统:

      MySQL、Oracle、DB2、SqlServer、SyBase、SQLite。

    MySQL:开源免费的数据库,小型的数据库已经被Oracle收购了。Oracle:收费的大型数据库。

    关系型数据库和非关系型数据库:

      关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。优点:1.易于维护,都是使用表结构,格式一致2.使用方便,SQL语言通用,可用于复杂查询3.复杂操作,支持SQL,可用于一个表以及多个表之间非常复杂的查询。缺点:1.读写性能差,尤其是海量数据的高效率读写2.固定的表结构,灵活度稍欠3.高并发读写需求,硬盘I/O是个很大的瓶颈。非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。优点:1.格式灵活,存储格式可以是key、value形式、文档形式、图片形式等等2.速度快,不仅可以使用硬盘,还可以使用随机存储器作为载体3.高扩展性4.成本低。缺点:学习和使用成本高,数据结构相对复杂。非关系型数据库的分类:文档型,key-value型,列式数据库,图形数据库。mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,redis是非关系型数据库,也是缓存数据库,即将数据存储在缓存中,用来存储使用频繁的数据。一般二者配合使用。

    数据库与数据管理系统的关系:

      客户端通过TCP协议与数据库管理系统建立联系,管理系统又直接面向多个数据库,在数据库中真正存储数据的是表格(数据库表),不同的数据库又面向多个表格。管理系统来建库建表管理数据。

    数据库表:

      数据库中以表为组织单位存储数据。表类似我们的Java类,每个字段都有对应的数据类型。用java和关系型数据库对比,类对应表,类中属性对应表中字段,类的对象对应表中记录。

    SQLYog软件和SQL语句:

      SQLYog可以代替命令行来执行命令从而操作数据库。数据库是不认识Java语言的,SQL语句是数据库的代码,全称结构化查询语言,是一种数据库查询和程序设计语言。SQL语句不区分大小写,建议关键字大写,自己定义的符号小写。int整型,double浮点型,varchar字符串型,date日期类型。

    数据库操作:

      创建数据库:create database 查看数据库:show database(安装MySql会默认生成四个库) 删除数据库:drop database(数据库操作没有确认键)

      创建数据表:1.create database mydatabase2.use mydatabase3.create table{列名,数据类型,约束};约束是在表中定义的用于维护数据库完整性的一些规则,若某个约束条件只作用于某个列,可以将其定义为列约束或表约束,若某个约束条件作用于多个列,则必须将其定义为表约束。一般约束可以分为:主键约束,外键约束,检查约束,默认约束,唯一约束,非空约束。

    举一个带主键约束的例子:首先,主键是用于标识当前记录的字段,特点是非空和唯一,在开发中主键一般是不具备任何含义,只是用于标识当前记录。

    CREATE TABLE users{

      uid  INT  PRIMARY KEY  AUTO_INCREMENT

      uname  VARCHAR(20)

      uaddress  VARCHAR(200)

    }

      常见表操作:显示库中所有的表:show tables;查看具体的表结构:desc 表名;删除表:drop table 表名---这三个操作用的不是很多  

      修改表结构:添加列:alter table 表名 add 列名 数据类型 约束;修改列的类型长度及约束:alter table 表名 modify 列名 类型(长度)约束;修改列名:alter table 表名 change 旧列名 新列名 类型(长度) 约束;

    删除列:alter table 表名 drop 列名;修改表名:rename table 表名 to 新表名;

      数据表添加数据: insert into 表名(列名1,列名2,列名3)values(值1,值2,值3),这是考虑主键的添加语句。例如insert into product(id,pname,price) values(1,'笔记本',5555), sql语句中没有字符串之说,都是采用单引号。insert into product(id,pname,price) values(2,'智能手机',9999),考虑主键后每次添加语句主键的值都要不一样,可见这样比较麻烦,于是我们采用下面这种添加方式:insert into 表名(列名) values(值),这种添加方式不用考虑主键的变化了,因为之间在创建表的时候已经给了主键约束和aoto_increment了,这种添加方式最常用。接下来一种方式是:insert into 表名 values(全列值),例如insert into product values(4,'电磁炉',400),这种添加方式不需要输入列名,但是必须加主键。还有一种方式是批量写入:insert into 表名(列名1,列名2,列名3) values(值1,值2,值3),(值1,值2,值3),逗号可以持续累加,所以是批量写入。

    数据表添加过程中可能出现断号问题,但问题不大。

      更新数据表中的数据:数据在原有的基础上更改,格式:update 表名 set 列1=值1,列2=值2 where 条件(where条件:数据中的唯一性)例如:update product set price = 15999 where id=2,修改条件的写法:id=6,id<>6(<>是不等于的意思,就类似java中的!=),id<=6,sql语句中与:and,或:or,非:not,id in (1,3,4,5,6),id not in (1,3,4,5,6)

      删除数据:delete from 表名 where 条件,或者truncate table 表名,二者区别:delete一条一条删,不清空auto_increment记录数,truncate直接将表删除,重新建表,auto_increment将置为零,从新开始。

      查询数据:查询指定列的数据:select 列名1,列名2 from 表名;查询所有列的数据:select * from 表名;查询去掉重复记录:select distinct 列名 from 表名;查询临时重命名列:select 列名 as ‘新列名’ from 表名;查询数据中,直接进行数学计算:举个例子select zname,zmoney+1000 from zhangwu

      条件查询:有各种各样的条件查询方式,前面也提到了一些,主要是使用where关键字,在此着重讲一些重要的用法。like,模糊查询,配合通配符,举例:select * from zhangwu where zname like‘%支出%’。

      分组查询:格式:group by 被分组的列名,必须跟随聚合函数,select查询的时候,被分组的列要出现在select选择列的后面;举例:select sum(zmoney),zname from zhangwu group by zname

    DOS操作数据乱码解决:

      在使用cmd打开创建的mysql服务器查看数据表的时候会发现有乱码问题存在,这是由于mysql的客户端编码用的是utf8,而系统的cmd窗口编码是gbk,解决方案为修改mysql客户端编码。cmd命令行中执行set names gbk。

    聚合函数:

      count,对表中的数据的个数求和:count(列名),举例:select count(*) from zhangwu

      sum,对一列中数据(如果数据类型不是数字则作为0)进行求和计算:sum(列名), 举例:select sum(zmoney) from zhangwu

      max,min函数格式如上所示,不再列出格式和举例了

      avg也类似,但是求指定列数据平均值的时候,如果指定列类型不是数值类型,计算结果设为0

      count,sum,avg使用频率最高,尤其是count。

  • 相关阅读:
    js调用手机震动
    模拟器 Android Studio
    不修改代码,让调用方法 替换到另外一个方法
    springboot 获取请求 / 响应 接收和设置请求头 、请求码的方法
    mysql binlog 实现数据库同步先占位 有空研究下
    Airtest无线连接android手机
    springboot + spring cloudeureka
    更新一条数据多个字段的方法
    PyAutoGUI 操作C端 识别图片 点击(有空就看一下) 可以替代 Autoit
    playwright入门
  • 原文地址:https://www.cnblogs.com/1996yrb/p/12375254.html
Copyright © 2011-2022 走看看