数据库(一)

数据库基础知识

目录

数据库介绍

数据库类型

数据库语法

创建表

主键外键

什么是索引

总结:后续持续更新数据库知识,感兴趣的朋友点点赞!!!


数据库介绍

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。

数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子信息场所,用户可以对数据库里的数据进行新增、查询、更新、删除等操作。

数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据

数据库类型

关系型数据库: MySQL  Oracle   Sqlserver  SQlite

优点

1、易于维护:都是使用表结构,格式一致;

2、使用方便:SQL语言通用,可用于复杂查询;

3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。

缺点:

1、读写性能比较差,尤其是海量数据的高效率读写;

2、固定的表结构,灵活度稍欠;

3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈

非关系型数据库:redis  

优点:

1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。

2、高扩展性;(可用不同方式储存信息)

3、成本低:nosql数据库部署简单,基本都是开源软件。

缺点:

1、不提供sql支持,学习和使用成本较高;

2、数据结构相对复杂,复杂查询方面稍欠。

Mysql与Oracle的区别

Mysql数据库:开源不收费,运行速度快,安全性,稳定性一般。

Oracle数据库:不开源收费,运行速度慢,安全性,稳定性高。可跨平台使用。

数据库语法

连接数据库的命令:Mysql  -u 用户名 -p

SQL语句

创建一个数据库:Create  database 数据库名;

删除一个数据库:drop  database  数据库名;

查看所有数据库:show  databases;

选择一个数据库:use 数据库名;

查看当前数据库内都有哪些表:Show tables;

退出     Exit    Quit

创建表

创建一个表:Create table 表名(列1名 列1类型  列1的默认值,列2名 列2类型  列2的默认值,....) engine myisam charset utf8;

可以声明:避免出现null 可以设置默认值,列1名 列1类型 not null ,

例子

创建一个chenyu111表,字段为id,int型,3个字节、name,char型,10个字节、class,字符串类型,10个字节;

create table chenyu111(

id int(3),

name char(10),

class char(10),

Time date,

Score float

)engine myisam charset utf8;

字符类型:

int(整数型)(有关计算的)

Char/varchar(字符串型)(有关于字符)

Float    double        有关于带小数的

Float 小数点前后7-8位     double  小数点前后20位

Date(有关于日期,时间的)

enum    set  有关选项的

enum 单选,枚举     set 多选

 Mysql5.0版本以下:一个字符=2字节    一个数字=1字节

 Mysql5.0版本以上:一个字符=1字节    一个数字=0.5字节

  例子

create  table  A(name char(10) ,age int(2),class char(4)) engine myisam charset utf8;

create  table  A(name char(10),age int(3),class Char(4),result enum(‘优’,’差’)) engine myisam charset utf8;

创建一个chenyu_C表包含id字段为int型 3字节, result字段为单选类型,要求输入优、差、良,time为date类型;

Create table chenyu_C(

Id int(3) not null primary key,

Result enum(,,),

Time date

)engine myisam charset utf8;

主键外键

创建表的时候添加主键

主键   primary key 

主键是不能重复的,不能为空,可以区分每一行的列。

外键 foreign key    

外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。

创建外键

create table T(id int(10) not null primary key,E_id int(2) foreign key(E_id) references E(id))engine myisam charset utf8;

注!  创建外键时,“E_id”为想要把该表的E_id字段设置成外键;

    “id”为对应表的主键字段;

自增  auto_increment   (可与主键一块出现)

创建主键

create table A(id int(5)not null primary key,name chvar(20) ,salary float);

主键自增

create table A(id int(5) not null primary key auto_increment,name char(20) ,salary float);

主键不能为空,也不能相同,所以不能设置为默认值

添加默认值

create table D(id int(10) not null primary key auto_increment,name char(10) default ‘小明’,foreign key(id) references chenyu_D(id))engine myisam charset utf8;

字段注释

create table DDDDDDDDD(id int(10) not null primary key auto_increment comment '编号',name char(10) default 333 comment '名字',sal float comment '工资')engine myisam charset utf8;

什么是索引

SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间 

下面举两个简单的例子:

图书馆的例子:一个图书馆那么多书,怎么管理呢?建立一个字母开头的目录,例如:a开头的书,在第一排,b开头的在第二排,这样在找什么书就好说了,这个就是一个聚集索引,可是很多人借书找某某作者的,不知道书名怎么办?图书管理员在写一个目录,某某作者的书分别在第几排,第几排,这就是一个非聚集索引

字典的例子:字典前面的目录,可以按照拼音和部首去查询,我们想查询一个字,只需要根据拼音或者部首去查询,就可以快速的定位到这个汉字了,这个就是索引的好处,拼音查询法就是聚集索引,部首查询就是一个非聚集索引.

    看了上面的例子,下面的一句话大家就很容易理解了:聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。就像字段,聚集索引是连续的,a后面肯定是b,非聚集索引就不连续了,就像图书馆的某个作者的书,有可能在第1个货架上和第10个货架上。还有一个小知识点就是:聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。

语法:

创建普通索引

Create index 索引名字 on 表名(列名)

Create index chenyu_name on chenyu (tel,name,id)

创建唯一性索引

Create unique index 索引名字 on 表名(列名)

创建普通组合索引

Create index 索引名字 on 表名(列1,x列2)

索引的使用原则:经常在查询中用作条件的列应当添加索引,频繁进行排序或分组的列(即进行order by 或group by的列),应当为其添加索引;一个列的值域很大时应当为其添加索引。

修改表名

①rename  table  旧表名  to  新表明;

②alter  table  旧表名  rename  to  新表明;

删除一张表

drop  table 表名;

Drop table chenyu;

清空表数据

①delete  from 表名;

②truncate  table  表名称   (清空表里所有行,比delete更彻底)

查看表结构

desc 表名;(单独查看一张表)

查看建表语句

show create table 表名;

总结:后续持续更新数据库知识,感兴趣的朋友点点赞!!!

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值