数据库学习笔记

这篇博客详细介绍了数据库的基础知识,包括数据库类型、SQL语言、数据类型、表操作、索引和事务等内容。重点讲解了MySQL数据库的使用,如连接数据库、创建与删除数据库、表的增删改查操作,以及SQL语句的分类和注意事项。此外,还涉及到了数据约束、索引的工作原理和事务管理,是学习MySQL数据库的好资料。
摘要由CSDN通过智能技术生成

数据库概述

  • 数据库:存储和管理数据的仓库
  • 常见的数据库分为:
    关系型数据库:Oracle、mysql、sqlserver、access
    非关系型数据库:MongoDB、Redis、Solr、ElasticSearch、Hive、HBase
  • 关系型数据库
    底层以二维表的形式保存数据的库就是关系型数据库
    在这里插入图片描述
  • 非关系型数据库
    非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档键值对图形等。
    在这里插入图片描述
  • 扩展内容(了解即可)
    常见的关系型数据库
    ·MySQL:Oracle公司产品,08年被Sun公司收购,09年Sun被Oracle收购,开源产品,为了担心MySQL闭源MySQL创始人离开Oracle创办了MariaDB,市占率第一
    ·Oracle:Oracle公司产品,闭源产品,性能最高价格最贵,市占率第二
    ·SQLServer:微软公司产品,闭源产品,市占率第三;网站整套解决方案:编程语言+web服务软件+操作系统+数据库软件
    ·DB2:IBM公司产品,主要应用在IBM整套解决方案中,主要服务于对安全性要求极高的场景 比如银行
    ·SQLite:轻量级数据,安装包只有几十kb

数据库相关概念

  1. 数据库服务器
    数据库服务器是一个软件,将数据库软件安装在电脑上,当前电脑就是一个数据库服务器。就可以对外提供存取数据的服务
    在一个数据库服务器中可以创建多个数据库,每一个数据库都是一个单独的仓库。
  2. 什么是数据库
    数据库就是存储管理数据的仓库

  3. 一个数据库中可以创建多张表,每张表用于存储一类信息
  4. 什么是表记录
    一张表中可以包含多行表记录,每一行表记录用于存储某一个具体数据
    在这里插入图片描述

连接mysql服务器

1.连接mysql服务器:

mysql -uroot -p

-u:用户名
-p(小写):密码
2. 连接mysql服务器并指定ip和端口

mysql -uroot -proot -h127.0.0.1 -P3306

-h:服务器主机名或ip地址,默认连接本机
-P(大写):端口3306,默认连接3306
3. 快捷打开方式
– windows: 开始菜单中找到MySQL/MariaDB 里面的 MySQL Client 并点击, 输入自己的密码后回车
– linux/苹果系统: 桌面空白右键 打开终端 输入 mysql -uroot -p 回车 输入密码再回车
4.退出客户端命令
quit exit \q
5.FAQ:常见问题:
在这里插入图片描述
解决方法:复制mysql安装目录下的bin目录的路径,将bin目录的路径添加到path环境变量中!!

可以在cmd中通过 echo %path% 检查path环境变量的值。

sql语句

什么是sql语言

Structured Query Language 结构化查询语言

SQL是一门用于操作关系型数据库的通用的语言(使用SQL可以操作所有的关系型数据库)

使用SQL可以操作数据库、表、表记录

(1)创建数据库、删除数据库、修改数据库、查询数据库

(2)创建表、删除表、修改表、查询表

(3)新增表记录、删除表记录、修改表记录、查询表记录

使用SQL也可以操作存储过程/视图/索引等。

提示:SQL是一个标准通用的操作关系型数据库的语言(普通话),每个数据库厂商为了增强自己数据库的功能,都提供了支持自己数据库的语言,称之为数据库的方言。方言不通用!

ssql语句的分类

SQL规范非常成熟,分为下面的部分:

  • DDL: 数据定义语言, 包括数据库和表相关的SQL语言
  • DML:数据操作语言, 包括数据的增删改相关SQL
  • DQL:数据查询语言, 只包括查询SQL
  • DCL: 数据控制语言, 包括权限分配相关SQL
  • TCL: 事务控制语言, 包括事务相关的SQL

最常见的是CRUD相关的SQL语句:创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete),每个程序员必须掌握,也是面试必考内容。

sql语句注意事项

  • 以分号结尾
  • 对大小写不敏感。推荐关键字使用大写,自定义的名称(库名,表名,列名等)使用小写。mysql习惯全小写.
  • 在自定义名称时,针对多个单词不要使用驼峰命名,而是使用下划线连接。(例如:tab_name,而不是 tabName )
  • 可以有多个换行和空格

导入*.sql批处理文件

  • 下载emp.zip解压得到emp.sql 把文件移动到某个盘的根目录,其他系统放到桌面

  • 在终端中执行以下命令:

    source d:/emp.sql;
    
  • 测试是否成功:

    show tables;     会显示2个表  emp和dept
    select * from emp ;   如果出现乱码 执行  set names gbk; 再次查询
    

mysql的数据类型

数值类型

整型

MySQL中支持多种整型,其实很大程度上是相同的,只是存储值的大小范围不同而已。

tinyint:占用1个字节,相对于java中的byte

smallint:占用2个字节,相对于java中的short

int:占用4个字节,相对于java中的int

bigint:占用8个字节,相对于java中的long

浮点型

浮点类型即:float和double类型

float:4字节单精度浮点类型,相对于java中的float

double:8字节双精度浮点类型,相对于java中的double

float/double(m,d):m是总个数,d是小数位

定点型

decimal: 定点数,浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。

字符串类型

1、char(n) 定长字符串,最长255个字符。n表示字符数,例如:

– 创建user表,指定用户名为char类型,字符长度不超过10

create table user(
    username char(10),
    ...
);

所谓的定长,是当插入的数据的长度小于指定的长度时,剩余的空间会用空格填充。(这样会浪费空间)

char类型在插入数据时,比varchar类型效率要高!

char类型往往用于存储长度固定的数据。

2、varchar(n) 变长字符串,最长不超过65535个字节,n表示字符数,一般超过255个字符,会使用text类型,例如:

iso8859-1码表:一个字符占用1个字节,1*n < 65535, n最多等于 65535
utf8码表:一个中文汉字占用3个字节,3*n < 65535,n最多等于 65535/3
GBK码表:一个中文汉字占用2个字节,2*n < 65535,n最多等于 65535/2

– 创建user表,指定用户名为varchar类型,长度不超过10个字符

create table user(
	username varchar(10)
);

所谓的不定长,是当插入的数据的长度小于指定的长度时,剩余的空间可以留给别的数据使用。(节省空间)

总结:长度固定的数据,用char类型,这样既不会浪费空间,效率也比较高

如果长度不固定,使用varchar类型,这样不会浪费空间。

3、大文本(长文本)类型

最长65535个字节,一般超过255个字符列的会使用text。

– 创建user表:

create table user(
	resume text
);

另,text也分多种,其中bigtext存储数据的长度约为4GB。

扩展内容3:(面试题)char(n)、varchar(n)、text都可以表示字符串类型,其区别在于:

(1)char(n)在保存数据时,如果存入的字符串长度小于指定的长度n,后面会用空格补全,因此可能会造成空间浪费,但是char类型的存储速度较varchar和text快。

因此char类型适合存储长度固定的数据,这样就不会有空间浪费,存储效率比后两者还快!

(2)varchar(n)保存数据时,按数据的真实长度存储,剩余的空间可以留给别的数据用,因此varchar不会浪费空间。

因此varchar适合存储长度不固定的数据,这样不会有空间的浪费。

(3)text是大文本类型,一般文本长度超过255个字符,就会使用text类型存储。

日期类型

date:年月日

time:时分秒

datetime:年月日 时分秒, 默认是null, 最大9999-12-31

timestamp:时间戳,年月日 时分秒,默认当前系统时间, 最大2038-1-19

图片

blob 二进制数据,可以存放图片、声音,容量4g。早期有这样的设计。但其缺点非常明显,数据库庞大,备份缓慢,这些内容去备份多份价值不大。同时数据库迁移时过大,迁移时间过久。所以目前主流都不会直接存储这样的数据,而只存储其访问路径,文件则存放在磁盘上。

数据库操作(DDL)

查询所有数据库

  • 格式: show databases;

创建数据库

  • 默认字符集格式: create database 数据库名;

  • 指定字符集格式: create database 数据库名 character set utf8/gbk;

    需要注意的是,mysql中不支持横杠(-),所以utf-8要写成utf8;

  • 举例:

    create database db1;
    create database db2 character set utf8;
    create database db3 character set gbk;
    

    show databases; 检查是否创建成功

查询数据库详情

  • 格式: show create database 数据库名;

  • 举例:

    show create database db1;
    show create database db2
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值