IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySql的使用 -> 正文阅读

[大数据]MySql的使用

?

目录

创建数据库

查看数据库

?查看数据库的创建信息(两种)

数据库编码

删除数据库:

关于MSQL的链接

具体讲解:

创建数据表

创建空数据表

多列联合主键

创建数据表时指定外键

1.创建数据表时指定字段非空

2.创建数据表时指定默认值

3.创建数据表时指定主键默认递增

4.创建数据表时指定存储引擎

关于常见引擎:

InnoDB存储引擎(推荐)MyISAM存储引擎? ?MEMORY存储引擎

查看数据表结构

使用DESCRIBE/DESC语句查看表结构

使用SHOW CREATE TABLE语句查看表结构

修改数据表

添加字段

添加字段时指定位置

修改字段名称

修改字段的数据类型

修改字段的位置

删除字段

修改已有表的存储引擎

取消数据表的外键约束

删除数据表

删除没有关联关系的数据表

删除有外键约束的主表


1.创建数据库

????????( ?****_name 代表对应的是什么名字,下面语法格式用到不再解释)

(1).在MySQL命令行中查看当前MySQL中存在的数据库
      SHOW DATABASES;
(2).在MySQL命令行中使用CREATE DATABASE database_name语句创建名称为goods的商品数据库。
 CREATE DATABASE goods;

(3).再次查看数据库,可以看到,此时MySQL中多了名称为goods的数据库。

(4).也可以是用 CREATE DATABASE IF NOT EXISTS database_name语句创建数据库。
  可以尝试再次用(2)语句创建 goods(会报错) ,同时在用(4)语句创建来对比(存在则忽略,不存在就创建,不报错),

在实际工作中,建议使用CREATE DATABASE IF NOT EXISTS database_name语句创建数据库。

对应4张图我也放出来

查看数据库

?1,查看MySQL中存在的数据库:( 显示所有库)

????????SHOW DATABASES; ?
2,查看MySQL命令行所在的数据库? (?显示当前库)

????????SELECT DATABASE();
3,更改到其他库(到MySQL为例) ?

????????USE mysql; ? ? ??

?查看数据库的创建信息(两种)

示例如下图:

一,SHOW CREATE DATABASE database_name;
二,SHOW CREATE DATABASE database_name \G??
? ?*在实际工作中,第二种语法格式比较常用,

使用CREATE DATABASE IF NOT EXISTS database_name语句创建数据库时将不再报错。CREATE DATABASE IF NOT EXISTS database_name的语句的含义为:如果MySQL中不存在相关的数据库,则创建数据库;如果MySQL中已经存在相关的数据库,则忽略创建语句,不再创建数据库。

数据库编码

在创建数据库时如果没有为数据库指定字符编码,MySQL会为数据库指定一个默认的字符编码
默认的字符编码在MySQL的配置文件my.cnf中进行配置

1.创建数据库时指定字符编码
语法格式:

CREATE DATABASE [IF NOT EXISTS] database_name DEFAULT CHARACTER SET character_name COLLATE collate_name 
  [DEFAULT ENCRYPTION='N'];

示例在MySQL命令行创建名称为test_character的数据库,并指定数据库的字符编码为UTF-8
,校验规则为utf8_unicode_ci,不使用MySQL的加密技术。

mysql> CREATE DATABASE IF NOT EXISTS test_character DEFAULT CHARACTER SET utf8 COLLATE  utf8_unicode_ci 
  DEFAULT ENCRYPTION='N';
  Query OK, 1 row affected, 2 warnings (0.09 sec)

2.修改数据库的字符编码
语法格式

ALTER DATABASE database_name CHARACTER SET character_name collate collate_name;
  

示例将名称为test_character的数据库的字符编码修改为utf8mb4,
?? ?检验规则修改为utf8mb4_0900_ai_ci。

mysql> ALTER DATABASE test_character CHARACTER SET utf8mb4 collate utf8mb4_0900_ai_ci; ? ? 

??删除数据库:

DROP DATABASE  database_name;
DROP DATABASE IF EXISTS database_name;

?在实际工作中推荐用第二种,与上面建表描述一样不在赘述

关于MSQL的链接

本机链接mysql -hlocalhost -P3306 -uroot -proot?

?我是没有设置密码,登录如下图

具体讲解:

(1.)最前面的mysql你可以理解成一个关键字或者理解成一个固定的命令,是固定写法,类似于java、jdk中的javac命令或java命令

(2.)-h表示host,即主机的ip地址

(3.)-P表示port,端口,mysql数据库的默认端口是3306,如果自己改了一定写为改后的(注意:这是大写的字母P)

(4.)-u表示user用户名

(5.)-p表示password密码(注意:这是小写的字母p)

下面说说mysql这个命令的注意事项:

大写的P表示端口号,小写的p表示密码,大家记住了

大家要记住,小写的p表示密码,-p和密码之间一定不能有空格,其他的像-u,-h,-P之类的,是可以有空格的,也可以没有空格

注意:如果是本机的话,主机ip和端口号可以不写(即主机ip和端口号可以省略),直接写成mysql -u root -proot

如果是本机,但是端口号你改成了其他的端口号,不是默认的3306了,比如你把端口号改成了6688,那你就加上端口号,即mysql -P 6688 -u root -proot

以下这3种语法都是正确的,我依次举例和截图演示

我这里用的用户名是root,密码也是root

关于登录:本机登录时,IP地址可省略不写,如果端口号是3306可以不写
? ? ? ? ? ? ? ? ?最终可写为:mysql -uroot -proot
当写 ?mysql -uroot -p ? 回车后输入密码,显示成 ?****

可以保护密码安全

远程连接:一定加上ip地址,如果端口是默认的可不加,
? ? ? ? ? ? ? ?mysql -h 192.168.117.66 -u root -proot

创建数据表

创建空数据表

示例: 商品类别表结构

mysql> CREATE TABLE t_goods_category1(
      -> id INT PRIMARY KEY,
      -> t_category VARCHAR(30),
      -> t_remark VARCHAR(100) 
      -> );
  Query OK, 0 rows affected (0.01 sec)


mysql> CREATE TABLE IF NOT EXISTS t_goods_category1 (
      -> id INT  PRIMARY KEY,
      -> t_category VARCHAR(30),
      -> t_remark VARCHAR(100) 
      -> );
  Query OK, 0 rows affected (0.00 sec)
当表存在时,用第一中方式建表会抛出:
ERROR 1050 (42S01): Table 't_goods_category1' already exists


加上IF NOT EXISTS关键字后,即使数据库中已经存在要创建的数据表,MySQL也不会抛出任何错误了。

在创建数据表时,如果加上了IF NOT EXISTS关键字,则表示的含义为:如果当前数据库中不存在要创建的数据表,则创建数据表;如果当前数据库中已经存在要创建的数据表,则忽略建表语句,不再创建数据表。

在MySQL 8.x版本中,不再推荐为INT类型指定显示长度,并在未来的版本中可能去掉这样的语法。因此这里去掉INT类型的显示长度? ?如果为INT类型指定显示长度会有一个警告信息,

?

多列联合主键

语法格式:

PRIMARY KEY [字段1, 字段2, 字段3…., 字段n]

示例: 商家店铺商品类别数据表结构

mysql> CREATE TABLE t_goods_category4 (
      -> t_category_id INT,
      -> t_shop_id INT,
      -> t_category VARCHAR(30),
      -> t_remark VARCHAR(100),
      -> PRIMARY KEY (t_category_id, t_shop_id)
      -> );
  Query OK, 0 rows affected (0.02 sec)

当我看到多个主键时,反问不是“主键唯一索引” 于是乎又有了新的解释:

当表中只有一个主键时,它是唯一的索引;当表中有多个主键时,称为联合主键,联合主键联合保证唯一索引”。

1、数据库的每张表只能有一个主键,不可能有多个主键。?
2、所谓的一张表多个主键,我们称之为联合主键。?
注:联合主键:就是用多个字段一起作为一张表的主键。?
3、主键的主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。

创建数据表时指定外键

语法格式:

[CONSTRAINT 外键名] FOREIGN KEY 字段1 [, 字段2, 字段3, …] REFERENCES 主表名 主键列1 [, 主键列2, 主键列3, …]

·外键名:定义外键时为数据表指定的外键名称。在同一张数据表中,外键的名称必须唯一。也就是说,在同一张数据表中,不能有相同名称的外键名称。

·FOREIGN KEY:指定外键包含哪些字段,可以是一个字段,也可以是多个字段的组合。

·REFERENCES:指定关联的主表名称。

·主表名:主键所在的表名称。

·主键列:主表中定义的主键字段,可以是一个字段,也可以是多个字段的组合。

由外键引申出两个概念,分别是主表(父表)和从表(子表)。

·主表(父表):两个表具有关联关系时,关联字段中主键所在的表为主表(父表)。

·从表(子表):两个表具有关联关系时,关联字段中外键所在的表为从表(子表)。

1.创建数据表时指定字段非空

字段名称 数据类型 NOT NULL

2.创建数据表时指定默认值

字段名称 数据类型 DEFAULT 默认值
  

3.创建数据表时指定主键默认递增

字段名称 数据类型 AUTO_INCREMENT

4.创建数据表时指定存储引擎

ENGINE=存储引擎名称

关于常见引擎:

InnoDB存储引擎(推荐)MyISAM存储引擎? ?MEMORY存储引擎

存储引擎的选择

在实际工作中,选择一个合适的存储引擎是一个比较复杂的问题。每种存储引擎都有自己的优缺点,不能笼统地说谁比谁好。但建议选择使用InnoDB

InnoDB: 支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

MyISAM: 插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。

MEMORY: 所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。

注意:同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎。

查看数据表结构

使用DESCRIBE/DESC语句查看表结构

使用DESCRIBE语句查看表结构的语法格式如下:

????????DESCRIBE 表名称

使用DESC语句查看表结构的语法格式如下:

????????DESC 表名称

查出表以后关于其中,每个字段的含义如下:

·Field:数据表中的每个字段。

·Type:数据表中字段的数据类型。

·Null:数据表中的当前字段值是否可以为NULL。

·Key:数据表中的当前字段是否存在索引。PRI表示当前列是主键列,或者是主键的一部分;UNI表示当前列是UNIQUE标识的唯一索引列,或者是唯一索引列的一部分;MUL表示在当前列中的某个值可以出现多次。

·Default:表示当前列是否有默认值,同时会显示当前列的默认值是多少。

·Extra:表示与当前列相关的附件信息。

使用SHOW CREATE TABLE语句查看表结构

SHOW CREATE TABLE 表名 \G

SHOW CREATE TABLE 表名 \G

不仅能够查看数据表的详细建表语句,还能查看数据表的存储引擎和字符编码等信息。

修改数据表

ALTER TABLE 原表名 RENAME [TO] 新表名

其中 [TO] 可省略

添加字段

ALTER TABLE 表名 ADD COLUMN 新字段名 数据类型 [NOT NULL DEFAULT 默认值]
  

添加字段时指定位置

添加字段时指定要添加字段的位置包括:在表的第一列添加字段和在指定字段的后面添加字段。

1.在表的第一列添加字段:

ALTER TABLE 表名 ADD COLUMN 新字段名 数据类型 [NOT NULL DEFAULT 默认值] FIRST
  

2.在指定字段的后面添加字段:

ALTER TABLE 表名 ADD COLUMN 新字段名 数据类型 [NOT NULL DEFAULT 默认值] AFTER 原有字段名
  

修改字段名称

这就使我们能够根据实际需要将数据库的字段名称修改为更有意义的名称

ALTER TABLE 表名 CHANGE 原有字段名 新字段名 新数据类型



在修改数据表字段名称时可以不修改数据类型,
此时可以将新字段的数据类型设置成与原有字段的数据类型一样即可,
但是新字段名称的数据类型不能为空。
  

修改字段的数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型 [DEFAULT 默认值]



使用MODIFY关键字指定字段的新数据类型即可

修改字段的位置

1.将字段的位置修改为数据库的第一个字段

ALTER TABLE 表名 MIDIFY 字段名 数据类型 FIRST


使用FIRST关键字标识将当前字段修改为数据表的第一个字段。
  

2.将当前字段的位置修改到某个字段的后面

ALTER TABLE 表名 MODIFY 字段1名称  字段1的数据类型 AFTER 字段2名称


将字段1移动到字段2的后面。
  

删除字段

ALTER TABLE 表名 DROP 字段名

修改已有表的存储引擎

ALTER TABLE 表名 ENGINE=存储引擎名称


“ENGINE”关键字指定数据表的存储引擎。

取消数据表的外键约束

ALTER TABLE 表名 DROP FOREIGN KEY 外键名

使用DROP FOREIGN KEY关键字删除表中的外键。

删除数据表

删除数据表时有两种情况:删除与其他表没有关联关系的数据表,以及删除有外键约束的主表

删除没有关联关系的数据表

DROP TABLE [IF EXISTS] 数据表1 [, 数据表2, …, 数据表n]

IF EXISTS的含义为:如果当前数据库中存在相应的数据表,则删除数据表;如果当前数据库中不存在相应的数据表,则忽略删除语句,不再执行删除数据表的操作,前面介绍过

删除有外键约束的主表

有两种方式删除有外键约束的主表,一种方式是先删除有外键约束的从表,再删除主表;另一种方式为先解除外键约束,再删除主表

先简单介绍如何解除外键约束,然后再删除主表(去看:?取消数据表的外键约束)

先取消外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名
在删除主表
mysql> DROP TABLE 主表;  

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:59:31  更:2022-09-30 01:01:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 -2025/4/24 4:58:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码