MySQL数据库基础(Part 1)

1. 数据库

数据库概述:

数据库是对数据进行存储和管理的仓库

数据库的发展历程:

数据库经历了三大阶段

1. 人工管理阶段

在这个阶段数据是由手工管理的,一般数据量较少、难以长期保存数据,且数据冗余度极高。

2. 文件系统阶段

应用程序可以采用统一的方法存储数据,将数据存在一个个文件中,虽然可以存储更多的数据,但数据中的各个属性没有相互关系,且数据冗余度依然很高。

3. 数据库系统阶段

数据通常以属性划分,将一组数据中不同属性分别存放,而每个数据都是由各个属性组合起来的,也就是说这个阶段是采用复杂的数据模型来存储数据的,数据模型不仅能表示数据,还能表示数据之间的关系,大大降低了数据的冗余度,且存储容量是三个阶段中最大的。

如何理解数据库

我们所学的数据库指的是关系数据库(RDBMS Relational Database Management System),在DBMS的基础上强调数据的关系,RDBMS包括管理员和数据库(DB),一个数据库可以存储多个二维的表,在表中,标识属性/字段的称为列(column),数据在表中的存在形态就是一行一行的记录,所以每一个数据称为行(row)。至于为什么关系数据库的冗余度低,本人的理解就是数据库会把一组数据分成不同字段分别存储,对于多个数据中出现的重复字段,在数据库中只保留一份。正是如此,多个字段中的某些信息经组合分析产生新的数据。

2. SQL语句(Part 1)

概述

SQL(Structured Query Language)就是结构化查询语言,虽然我们了解过MySQL、SQL Server等数据库,但SQL不是数据库,而是对数据库、数据、用户进行操作、控制的语言,SQL按照用途分可分为:

DDL数据定义:用于对数据库、数据表、列进行定义和修改

DML数据操纵:用于对数据库中数据(记录)进行定义和修改

DQL数据查询:用于对数据库中数据(记录)进行查看

DCL数据控制:用于定义和修改用户访问权限和数据的安全级别

使用SQL语句应当遵守如下规范:

1. SQL关键字虽然不区分大小写,但为了更好的区分关键字和自定义的字段名、信息等,关键字一般全部大写

2. 自定义字段名时应当避开SQL关键字防止系统误识别

3. 二元运算符的周围,普通标点符号右侧均应当有一个空格,并且在适当位置缩进,这样可以增加可读性。

DDL数据定义

操作数据库

新建:create database 【if not exists】数据库名;

切换:use 数据库名;

删除:drop database 【if exists】数据库名;

数据类型

MySQL数据类型与编程语言一样,有数据类型,主要用在 属性/字段/列 上

MySQL数据类型分为数值、字符串、日期时间

常用数值类型

tinyint(1B), smallint(2B), mediumint(3B), int(4B), bigint(8B)

float(4B), double(8B)

常用字符串类型

char(0~255B)定长字符串,可以理解为字符数组

varchar(0~65535B)变长字符串,但处理效率低于定长字符串,可以指定字符串最大长度

当指定长度时SQL与Java/C++是不同的,SQL指定长度类似于编程语言的函数调用,参数表示的就是指定的长度

常用日期时间类型

date(大小:3B,格式:YYYY-MM-DD), time(大小:3B,格式:HH:MM:SS)

操作表

新建表:create table【if not exists】表名(

字段名1 数据类型1,

字段名2 数据类型2

...

)

删表:drop table 表名

查看所有表:show tables

查看表的创建语句:show create table 表名

查看表结构:desc 表名

修改:alter table 表名···

        添加列:alter table 表名 add(字段名 数据类型)

        修改列的数据类型:alter table 表名 modify 字段名 新数据类型

        修改列名:alter table 表名 change 旧字段名 新字段名 原数据类型

        删除列:alter table 表名 drop 字段名

        改表名:alter table 表名 rename to 新表名

3. 小练习

运用以上所学的语句模拟一个OPPO商城的数据库,要求:

在库中建立OPPO_Phone表和OnePlus_Phone表

OPPO_Phone表包含id、型号名称、内存、存储容量、处理器这5个属性

在OPPO_Phone表中添加价格属性

删掉OnePlus_Phone表

--新建OPPO商城数据库;
create database if not exists OPPO_Store;
--新建OPPO_Phone表;
create table if not exists OPPO_Phone (
    id char(6), /*指定id长度6位*/
    RAM tinyint unsigned, /*内存肯定不能为负数且现阶段智能设备内存不会太大*/
    max_ROM smallint unsigned, /*已知的存储容量最大不超过1024GB,但通常不少于128GB*/
    CPU varchar(5) /*CPU主要来自于SDM和MTK,型号规则不稳定,使用变长字符串比较好*/
);
--新建OnePlus_Phone表;
create table OnePlus_Phone(
    id char(7)
);
--OPPO_Phone表中添加价格属性
alter table OPPO_Phone add(price smallint);
--删除OnePlus_Phone表;
drop table OnePlus_Phone;

4. 总结

1. 数据库的产生解决了数据的高冗余度和低安全性的问题,便于大容量地存储和高效管理数据

2. SQL不是数据库,也不算编程语言,它是基于英语语法,对数据库系统进行操作和管理的语言。英语基础较好的同志们很容易把它们读懂,但想要真正学会使用离不开动手操作

3. 对数据库、表的添加关键字是create,对数据库、表、列的删除的关键字是drop

建立时在合适位置加入if not exists,删除时加入if exists可以防止报错情况出现

4. 定义表中字段时,属性名和数据类型的顺序和面向对象编程中对属性定义时的顺序相反,也就是说SQL中定义属性时先写属性名后写数据类型,指定长度不用方括号而用圆括号

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值