MySQL的基础命令

本文介绍了数据库的基础知识,重点讲解了关系数据库的概念、特点,以及MySQL中的数据表、数据类型、主键等概念。还详细阐述了数据库的创建、删除、修改等操作,并提到了SQL语言和数据库访问接口。此外,文章强调了主键的重要性以及数据库操作时的注意事项。
摘要由CSDN通过智能技术生成

0.前言

您好,这里是limou3434的一篇个人博文,感兴趣的话您也可以看看我的其他文章。本博文是借鉴于李小威前辈所著的书籍《SQL 基础教程》所成的博文笔记,这本书真的很适合新手学习数据库相关的内容。本次我想给您带来的是关于MySQL的一些基础知识和基本操作,比如:“何为数据库、何为字段、何为主键?怎么创建数据库/数据表/字段?”此类的问题。而关于如何下载和配置MySQL服务和环境,待我之后再出一篇博文给您端上罢。

1.数据库基础

数据库由一批数据构成的有序的集合,这些数据被存储在结构化的数据表里,数据表之间相互关联,反映了客观事物间的本质联系。数据库系统提供对数据的安全控制和完整性控制。

1.1.普通数据库

1.1.1.数据库概念

数据库(DataBase,DB)这个概念有两方面的理解:

  • 是保存数据的仓库:数据库是一个长期存储在计算机内、有组织、有共享、统一管理的数据集合。
  • 是数据管理的方法和技术:数据库是一个按数据结构来存储和管理数据的计算机软件系统。

1.1.2.数据库发展

人工管理阶段->文件系统阶段->数据库系统阶段->高级数据库阶段

1.1.3.数据库种类

不同种类的数据库需要按照不同的数据结构来联系和组织,数据库主要分为

  • 层次式数据库
  • 网络式数据库
  • 关系式数据库(本次的学习重点)

1.1.4.数据库特点

  • 实现数据共享
  • 减少数据冗余
  • 采用特定的数据类型
  • 具有较高的数据独立性
  • 具有统一的数据控制功能

1.2.关系数据库(本次学习重点)

1.2.1.关系数据库的重要特征:具有坚实的数学理论基础

  • 包括“关系数据库设计的理论基础/数据依赖与规范化理论”
  • 包括“数据库查询的实现与优化理论”

1.2.2.关系系统是何?和非关系系统有什么区别

  • 关系数据库是基于关系系统的,关系系统有以下几个方面:
    • 结构化方面,数据库中的数据对于用户来说是数据表,也只能是数据表
    • 完整性方面,数据库中的额数据表需要满足一点的完整性约束
    • 操作方面,用户可以使用操作符来进行数据表操作
  • 关系系统与非关系系统区别
    • 关系系统的用户把数据看作数据表,而且只能是数据表
    • 非关系系统的用户则把数据看作其他数据结构,代替或拓展关系系统中的数据表结构

1.2.3.关系和属性的关系

  • 关系是关系系统的核心,是汇集在表数据中的行和列的集合
  • 每个关系由一个或者多个属性(列)组成,属性将类型相似的数据归纳在一起
  • 属性和关系直接相关,数据以元组(行)的形式存储在关系中,每个元组代表相关数据的一个记录

1.3.数据表

数据表实际上是一系列二维数组的集合,用来存储数据和操作数据的逻辑结构,由行和列构成

  • 行叫做“记录”
  • 列叫做“字段”

1.4.数据类型

每一个字段都指定某类属性

  • 整数数据类型
  • 浮点数数据类型
  • 精确小数数据类型
  • 二进制数据类型
  • 日期/时间数据类型
  • 字符串数据类型

1.5.主键/主码

用于唯一标识表中的每一个记录,可以定义一列或多列为主键,主键列上不能有两行相同的值,这将抛出错误,因此有些列天生就不适合当主键

2.数据库技术构成

2.1.数据库系统

  • 有三个主要的组成部分
    • 数据库:用于存储数据的地方
    • 数据库管理系统:用于管理数据库的软件
    • 数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充
  • 数据库系统图解
    在这里插入图片描述

2.2.SQL语言

  • 数据定义语言(DDL)
  • 数据操作语言(DML)
  • 数据查询语言(DQL)
  • 数据控制语言(DCL)

2.3.数据库访问接口

不同的程序设计语言会有各自不同的数据库访问接口,程序语言会通过这些接口执行SQL语句,进行数据库管理,而主要的数据库访问接口有以下四个:

  • ODBC
    Open Database Connectivity(开发数据库互连)技术为访问不同的SQL数据库提供了一个共同的接口
  • JDBC
    Java Data Base Connectivity(Java数据库连接)用于Java应用程序连接数据库的标准方法,是一种用于执行SQL语句的Java API
  • ADO.NET
    ADO.NET是微软在.NET框架下开发设计的一组用于数据源进行交互的面向对象类库
  • PDO
    PHP Data Object为PHP访问数据库定义了一个轻量级、一致性的接口
  • 其他语言
    MySQL也对其他语言提供了不同的数据库访问连接驱动,可以去其官网看看

3.数据库基本操作

3.1.查看

3.1.1.查看当前拥有的数据库

SHOW DATABASES;

3.1.2.查询当前数据库拥有的数据表

SHOW TABLES;

3.1.3.查询当前数据库支持的存储引擎

SHOW ENGINES;

在这里插入图片描述

3.2.创建

CREATE DATABASE 数据库名字;

创建数据库是在系统磁盘上划分一块区域,用于数据的存储和管理,如果管理员在设置权限的时候为用户创建了数据库,就可以直接使用,否则就需要自己创建数据库

3.3.删除

DROP DATABASE 数据库名字;

3.4.修改

RENAME DATABASE 旧数据库名 TO 新数据库名;

4.数据表基本操作

数据表是在数据库中创建的,数据表属于数据库,在使用数据表前,需要指明是哪一个数据库,使用以下语法

USE 已有的数据库名字; #然后显示database changed“数据库已更改”

4.1.查看

下指令可以查看数据表的字段

DESCRIBE 表名;//或者简写为DESC
 +--------+-------------+------+-----+---------+-------+ 
 | Field  | Type        | Null | Key | Default | Extra | 
 +--------+-------------+------+-----+---------+-------+
  • NULL表示该字段是否可以存储NULL值
  • Key表示该字段是否已编制索引
  • Default表示该字段是否有默认值,如果有则显示值
  • Extra表示可以获取与给点字段有关的附加信息

4.2.创建

mysql> CREATE TABLE 表名
    -> (
    ->  字段名1 数据类型 列级别约束条件 默认值,
    ->  字段名2 数据类型 列级别约束条件 默认值,
    ->  字段名3 数据类型 列级别约束条件 默认值,
    ->  字段名4 数据类型 列级别约束条件 默认值,
  	->	…
  	->  表级别约束条件 #这个之后讲
    -> );

4.3.删除

4.3.1.删除没有被关联的数据表

DROP TABLE 数据表名; #注意是永久删除数据表以及所有数据,且无法撤销该命令
DROP TABLE IF EXISTS 数据表名; #IF EXISTS的使用是可选的,可以帮助检查是否存在该数据表,避免尝试删除不存在的表并且导致出现错误

4.3.2.删除数据表的外键约束

ALTER TABLE 数据表名 DROP FOREIGE KEY 外键约束名

4.3.3.删除被其他表关联的主表

一般情况下,直接删除这个主表会出现错误,原因是:直接删除将会破坏表的参照完整性。因此要删除这个主表有两个办法:

  • 先删除从表,再删除主表
  • 先解除从表的外键约束,然后再删除主表

4.4.修改

4.4.1.修改数据表名字

这个仅仅是修改数据表名字,不改变数据表的结构,注意新数据表名要保证是唯一的

ALTER TABLE 旧表名 RENAME [TO] 新表名; #TO是可选的只是为了加强语法完整性。alter“修改”,rename“改变名字”

4.4.2.更改表的存储引擎

  • MySQL支持的存储引擎(前面有这个指令可以查看)
  • 更改表的存储结构
ALTER TABLE 表名 ENGINE=更改后的存储引擎名;

5.字段基本操作

5.1.创建(以及添加约束条件)

5.1.1.主键约束

5.1.1.1.单字段主键
  • 直接再列表中定义主键
mysql> CREATE TABLE 表名 
  -> ( 
  ->  字段名1 数据类型 PRIMARY KEY, 
  ->  字段名2 数据类型, 
  ->  字段名3 数据类型, 
  ->  字段名4 数据类型, 
  ->  …  
  -> );
  • 列末尾指定主键
mysql> CREATE TABLE 表名 
  -> ( 
  ->  字段名1 数据类型, 
  ->  字段名2 数据类型, 
  ->  字段名3 数据类型, 
  ->  字段名4 数据类型, 
  ->  …  
  ->  PRIMARY KEY(上面定义的某个字段名)
  -> );

mysql> 约束名 PRIMARY KEY 字段名
  • 定义完所有列后再指定主键
mysql> CREATE TABLE 表名 
  -> ( 
  ->  字段名1 数据类型, 
  ->  字段名2 数据类型, 
  ->  字段名3 数据类型, 
  ->  字段名4 数据类型, 
  ->  …  
  -> );
mysql> ALTER TABLE 数据表名 ADD PRIMARY KEY (某个字段名字); #注意要加上括号
5.1.1.2.多字段联合主键
mysql> CREATE TABLE 表名 
  -> ( 
  ->  字段名1 数据类型, 
  ->  字段名2 数据类型, 
  ->  字段名3 数据类型, 
  ->  字段名4 数据类型, 
  ->  …  
  ->  PRIMARY KEY(字段1, 字段2, 字段3, …)
  -> );

5.1.2.外键约束

  • 外键可以用来在两个表的数据之间建立连接,可以是一个字段或者多个字段
  • 一个表可以有一个或多个外键,外键对应的是引用完整性
  • 一个表的外键可以是空值,若不为空值,则每个外键值必须等于等于另外一个表中主键的某个值
  • 定义外键后不允许删除另外一个表中具有关联关系的行,外键的作用是保持数据的一致性、完整性
  • 对于两个具有关联关系的表,相关联字段中主键所在的那个表即主表(父表),外键所在的那个表即从表(子表)
  • 一个外键还拥有一个外键名
mysql> CREATE TABLE 表名 
  -> ( 
  ->  字段名1 数据类型 PRIMARY KEY,
  ->  字段名2 数据类型, 
  ->  字段名3 数据类型, 
  ->  字段名4 数据类型, 
  ->  …  
  -> );

mysql> CREATE TABLE 表名 
  -> ( 
  ->  字段名1 数据类型,
  ->  字段名2 数据类型, 
  ->  字段名3 数据类型, 
  ->  CONSTRAINT 外键约束名 FOREIGN KEY(外键名) REFERENCES 父表(字段名1), 
  ->  …  
  -> );

5.1.3.使用非空约束

值字段的值不能为空,对于设置了非空月约束的字段,如果用户在添加数据的时候没有指定值,那么数据库系统将会报错

mysql> CREATE TABLE 表名 
  -> ( 
  ->  字段名1 数据类型 NOT NULL,
  ->  字段名2 数据类型, 
  ->  字段名3 数据类型, 
  ->  字段名4 数据类型, 
  ->  …  
  -> );

5.1.4.使用唯一性约束

要求该列唯一,并且允许为空,但是只能出现一个空值,唯一约束可以确保一列或者几列不出现重复值

  • 在定义列的时候指定唯一约束
mysql> CREATE TABLE 表名 
  -> ( 
  ->  字段名1 数据类型 UNIQUE,
  ->  字段名2 数据类型, 
  ->  字段名3 数据类型, 
  ->  字段名4 数据类型, 
  ->  …  
  -> );
  • 在列的末尾指定唯一约束
mysql> CREATE TABLE 表名 
  -> ( 
  ->  字段名1 数据类型,
  ->  字段名2 数据类型, 
  ->  字段名3 数据类型, 
  ->  字段名4 数据类型, 
  ->  …  
  ->  CONSTRAINT STH UNIQUE(上面定义的某个字段)
  -> );

5.1.5.使用默认约束

默认约束指定某列的默认值,在插入数据的时候即使没有为这个字段赋值,系统也会为这个字段赋默认值

mysql> CREATE TABLE 表名 
  -> ( 
  ->  字段名1 数据类型 DEFAULT 要设置的默认值,
  ->  字段名2 数据类型, 
  ->  字段名3 数据类型, 
  ->  字段名4 数据类型, 
  ->  …  
  -> );

5.1.6.设置表的属性值自动增加

一个表只能有一个字段使用AUTO_INCREMENT约束,并且该字段必须为主键的一部分,而且该字段可以是任何整数类型(TINYINT、SMALLINT、INT、BIGINT等)

mysql> CREATE TABLE 表名 
  -> ( 
  ->  字段名1 数据类型 PRIMARY KEY AUTO_INCREMENT, #这个属性值就会自动增加
  ->  字段名2 数据类型, 
  ->  字段名3 数据类型, 
  ->  字段名4 数据类型, 
  ->  …  
  -> );

5.2.添加

5.2.1.末尾添加字段

ALTER TABLE 表名 ADD 新字段名 数据类型 之前对单字段的约束语法; #最后一项必须有

5.2.2.第一列添加字段

ALTER TABLE 表名 ADD 新字段名 数据类型 之前对单字段的约束语法 FIRST; #最后一项可选

5.2.3.指定列添加字段

ALTER TABLE 表名 ADD 新字段名 数据类型 AFTER 数据表中已存在的数据段 #这个语句会在这个已存在的字段后面创建一个新的字段

5.3.删除

ALTER TABLE 表名 DROP 字段名; #一般在使用之前都会使用DESC指令查看要删除的字段

5.4.修改

5.4.1.修改字段名

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型; #后面的新数据类型可以省略,这条指令可以替代上一条指令

5.4.2.修改字段数据类型(包含字段名)

ALTER TABLE 表名 MODIFY 字段名 数据类型; #alter“修改”,modify“修改”

5.4.3.修改字段排列顺序

  • 修改为表的第一个字段
ALTER TABLE 数据表 MODIFY 数据类型 FIRST; #数据类型必须加上
  • 修改为表的指定列之后
ALTER TABLE 数据表 MODIFY 数据段1 数据类型 AFTER 数据段2; #数据类型必须加上(数据段1将被排到数据段2后面)

6.一些重要的提醒

6.1.删除“数据库/数据表/字段”要尤为注意

删除数据库命令要十分谨慎,执行这条命令时,存储在其中的数据表也会一同执行,MySQL不会有任何的提醒,一旦删除将不能被恢复,同理数据表或者字段的删除也是一样的(在数据删除之前最好进行备份,避免造成无法挽回的后果)

6.2.数据表的主键不是必须的

并不是每一个数据表中都需要主键,一般只有在多个表进行连接操作的时候才需要用到主键,因此并不需要为每个表建立主键,甚至有些情况最好不使用主键

6.3.数据表不能随意选取存储引擎

外键约束不能跨引擎使用,如果多个数据表之间指定了不同的存储引擎,那么这些表是不能创建外键约束关联的,所以存储引擎的选择不是随意的

6.4.数据表的属性值自动增加默认从1开始

但是这个默认可以修改,在一开始插入记录时可以指定值

7.总结归纳

最后总结一下这篇博文的内容吧

  • 首先我总结了一些数据库的基础概念,尤其是关系数据库的概念,因为这是本系列(SQL系列)博文的重点,还归纳了一些关于数据技术的构成
  • 然后我针对“数据库、数据表、字段”的增删查改进行了整理,您可以跟着目录试一下这些基础的命令
  • 最后我还归纳了上述基础命令的一些提醒的要点

这就是本章博客的主要内容啦,望之后的SQL学习之路同君共勉

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

limou3434

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值