zoukankan      html  css  js  c++  java
  • mysql基础篇(上篇)

    一.数据库
    1.数据库介绍
    2.RDBMS专业术语
    3.MySQL数据库
    4.常用数据库命令

    1.数据库介绍
    :什么是数据库
    数据库就是按照数据结构来组织、存储和管理数据的仓库.
    我们常常讲的数据库往往都是指数据库管理系统。
    :数据库发展史
    最早的数据库:通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来进行数据的处理,其运行结果在纸上打印出来或者制成新的穿孔卡片。而数据管理就是对所有这些穿孔卡片进行物理的存储和处理

    当时随着计算机开始广泛应用于数据管理,(数据与数据关系越来越多),对数据的共享提出了越来越高的要求。传统的文件系统已经不能满足人们的需要。能够统一管理和共享数据的数据库管理系统(DBMS)应运而生。
    :数据库管理系统DBMS
    它是一种操纵和管理数据库的大型软件,用于建立,使用和维护数据库,简称DBMS。它对数据进行统一的管理和控制,以保证数据库的安全性和完整性。
    用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。
    数据库管理系统是数据库系统的核心,是管理数据库的软件。
    我们一般说的数据库,就是指DBMS:数据库服务器
    :常见的数据库(DBMS)
    Oracle:甲骨文,运行稳定,可移植性高,功能齐全,性能超群!适用于大型企业领域,收费的价格昂贵。
    DB2:速度快,可靠性高,适用于海量数据,恢复性极强(数据丢失等恢复)。适用于大中型企业领域,收费的。
    SQL Server:全面,效率高,界面友好,操作容易,但是不跨平台(只能windows系统)。使用于中小型企业领域,收费的。
    Mysql:开源免费,体积小,速度快。适用于中小型企业。

    :结构化查询语句SQL(对DBMS数据存取操纵)
    SQL语言的功能包含查询,操纵,定义和控制,是一个综合的,通用的关系型数据库语言

    :非关系型数据库NOSQL(not only sql)
    MangoDB,Redis,Hbase...Neo4j

    2.RDBMS专业术语(关系型DBMS)
    表,数据库,列,行,主键,外键,索引。
    表:具有固定的列数和任意的行数
    数据库(实例):数据库是一些关联表的集合。
    列:一个数据项Field 字段 如姓名或年龄
    行:一条记录 row。(一行对应java中的一个类,一个字段对应类中的字段)
    主键:主键是惟一的(不重复的)。一个数据表只能含一个主键(如身份证号码,不能重复)。 你可以使用主键来查询数据。

    外键:外键用于关联两个表。

    索引:使用索引为了可快速访问数据库表中的特定信息。
    索引是对数据库表中的一列或多列的值进行排序的一种结构。类似于书籍的目录。

    3.MySQL数据库
    Mysql介绍:
    Mysql是一个关系型数据库管理系统,由瑞典MYSQL AB公司开发,目前属于Oracle公司。Mysql是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度和提高了灵活性。
    Mysql是开源免费的,所以你不需要支付额外的费用。
    Mysql 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
    Mysql 使用标准的SQL数据语言形式(通用语言)。
    Mysql可以允许 于多个系统上,并且支持多种语言。这些编程语言包括c,C++,python,Java,Perl,Ruby,Eiffel和Tcl等
    Mysql安装:
    Windows系统,mac系统,linux系统等
    Win为例:
    点击文件.msi进行安装,下一步现在custom自定义安装,
    下一步点击选择mysql server点开这个选项到底,选择mysql版本及相应位数的X64位,下一步,,在工作类型和网络选择默认standalone就可以,点击下一步配置类型,选择默认开发者就可以了,端口号可以修改需要记住,再下一步设置root账号密码,需要记住,可以添加账户。再下一步,,,点击finish,再点击下一步,再finish就可以了。
    检测成功:进入安装bin目录下命令行模式,mysql -u root -p 输入密码成功后,就代表成功了。

    Mysql的存储引擎:

    4常用数据库命令
    Mysql数据库分为两种:
    系统数据库(数据库服务器自带的,自带的4个):
    Information_schema:存储数据库对象信息,如用户表信息,列信息,根除,字符,分区。里面内容我们不能动。
    Performance_schema:存储数据库服务器性能参数信息。
    Mysql:存储数据库用户 权限信息(哪些用户访问哪些数据库)
    Sys:从5.7才有,通过这个库可以快速了解系统的元数据信息。这个库是通过视图的形式把information_schema,performance_schema结合起来,查询出更加令人容易理解的数据。

    用户数据库:
    可以自己创建的。

    创建数据库:
    Create database 数据库名;
    删除数据库:
    Drop database 数据库名;
    查看数据库:
    Show databases;
    使用数据库:
    Use 数据库名;
    查看数据库中有多张表:
    Show tables;
    注意写的顺序先使用数据库,再去该具体数据库查看有多少张表。

    5.SQL语言
    使用Navicat图形化界面工具基本使用:
    1创建数据库:右键创建数据库,设置数据名,设置字符集;设置collation(属于校对规则,字符集比较与排序等比如是不是区分大小写);

    字符集:
    字符集由来:计算机只能识别二进制代码无论是计算机程序还是数据,最终都会转换成二进制,计算机才能认识。
    为了计算机不只是能做科学计算,也能处理文字信息。
    人们想出了给每一个文字符号编码便于计算机识别处理的办法,这就是字符集的由来。
    ASSCII:一套文字符号及其编码,比较规则的集合。最早的。20世纪60年代初。美国标准化组织ANSI发布了第一个字符集。ASSCI后来又进一步变成了国际标准ISO-646。
    各大字符集:
    自ASSCII后,为了处理不同的文字。各大计算机公司,各国,标准化政府,组织先后发明了几百种字符集。(ISO-8859,GB2312-80,GBK,BIG5)
    五花八门的字符集编码规则各不相同。给计算机开发和移植带来很大困难。一个软件在不同国家和地区发布,没法使用,必须要做到本地化开发。基于这个原因,要统一字符集。
    Unicode:国际化标准ISO在1984年发布ISO-10646。遭到美国公司反对,占得位数多。1988美国公司联合制定了新标准于1991年推出了unicode1.0。
    为了统一字符集,ISO和unicode后来谈判,1991年10月达成协议。ISO将unicode收编,起了名BMP。
    UTF-16:ISO-10646足以容纳从古至今的使用过的文字和字符。但很多文字很少使用了,超过百分之99 的在用文字字符都编入了BMP。因此,大部分情况下,unicode双字节方式都能满足需求,而且比双字节编码方式4字节的原始编码来说,更省内存和处理时间,这就是unicode流行的原因。
    使用了BMP以后的文字字符怎么办?unicode提出了UTF-16的解决办法。

    UTF-8:最终解决方案(所有字符)。虽然utf-16解决了上面以后文字的问题,但当时计算机和网络世界还是ASSCII码的天下,只能处理单字节数据流。Utf-16离开了unicode环境,在传输和处理,都存在问题。于是提出了UTF-8解决方案。
    Utf-8按一定的规则将一个ISO10646和unicode转换成1至4字节的编码
    其中ASSCII码转换成单字节编码,也就兼容了ASSCII字符集。UTF-8
    的2,3,4字节用于转换ISO-10646标准的ucs-4原始码。。
    Utf-8-utf-8Unicode 通用的。

    汉字的一些常见字符集:
    GB2312(国标),GB13000,GBK,GB18030

    Mysql存储引擎(理解):
    数据库对象:存储、管理和使用数据的不同结构形式,如表,视图,存储过程,函数,触发器,事务等。
    数据库:存储数据库对象的容器。
    什么是存储引擎:
    采用不同的引擎存储性能是不同的(安装时选择)。
    Mysql中数据用各种不同的技术存储在文件(或内存)中。
    每一种技术使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的而不同的功能和能力。
    通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
    不同的存储引擎性能是不一样的。

    什么是事务(功能):
    是指作为单个逻辑工作单元执行的一系列操作,要么完全执行,要么完全不执行。如转账(账号扣,对方账号加),分几步,每一步失败都不能成功。

    存储引擎分类:(注意MYISAM与Innodb区别)
    MYISAM:它不支持事务,也不支持外键,尤其访问速度快,对事务完整性没有要求或select,insert为主的应用基本都可以使用
    每个MYISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:.frm(存储表定义),.MYD(MYDATA,存储数据),.MYI(MYINDEX,存储索引)
    INNODB(5.5以后默认):InnoDB存储引擎提供了具有提交,回滚和崩溃恢复能力的事务安全(要求会越来越高)。但是对比MYISAM的存储引擎,InnoDB写的处理效率差一些和使用更多的磁盘空间用以保留数据和索引。
    MEMORY:memory使用存在内存中来创建表。每个memory表实际对应一个磁盘文件,格式是.frm
    Memory类型的表访问速度最快,因为它的数据是放在内存中,并且默认使用hash索引,但是一旦服务器关闭,表中数据会全部丢失,但表还会存在。

  • 相关阅读:
    ACM-ICPC 2017 西安赛区现场赛 A. XOR(线性基+线段树)
    ACM-ICPC 2017 西安赛区现场赛 K. LOVER II && LibreOJ#6062. 「2017 山东一轮集训 Day2」Pair(线段树)
    Codeforces Round #512 (Div. 2, based on Technocup 2019 Elimination Round 1) E. Vasya and Good Sequences(DP)
    URAL 2052 Physical Education(数位DP)
    Educational Codeforces Round 50 (Rated for Div. 2) F
    Codeforces Round #509 (Div. 2) F. Ray in the tube(思维)
    Codeforces Round #509 (Div. 2) E. Tree Reconstruction(构造)
    ACM-ICPC 2018 青岛赛区网络预赛 J. Press the Button(数学)
    ACM-ICPC 2018 焦作赛区网络预赛 K. Transport Ship(DP)
    [ Codeforces Round #549 (Div. 2)][D. The Beatles][exgcd]
  • 原文地址:https://www.cnblogs.com/ITniu/p/10741573.html
Copyright © 2011-2022 走看看