MYSQL数据库1

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MYSQL数据库1

1 安装数据库

https://blog.csdn.net/qq_51625007/article/details/117422873

2 关系数据库基本概念和MySQL基本命令

对关系数据库而言,最基本的数据在储单元就是数据表,因此可以简单地把数据库想象成大量据表的集合(当然,数据库绝不仅由数据表组成)。

数据表是存储数据的逻辑单元,可以把数据表想象成由行和列组成的表格,其中每一行也称之为一条记录、每一列也被称为一个字段。为数据库建表时,通常需要指定该表包含名少列,每列的数据类型信息,无须指定该数据表包含多少行——因为数据库表的行是动态改变的,每行用于保存一条用户数据。除此之外,还应该为每个数据表指定一个特殊列,该特殊列的值可以唯一地标识此行的记录,则该特殊列被称为主键列。

MvSQL数据库的一个实例(Server Instance)可以同时句含多个数据库,MySQL使用如下命令查看当前实例下包含多少个数据库:

show databases;

注意:
MySQL默认以分号作为每条命令的结束符,所以在每条MySQL命令结束后都应该 输一个英文分号(😉。

如果用户需要创建新的数据库,则可以使用如下命令:

create database [IF NOT EXISTS]数据库名;

如果用户需要删除指定数据库,则可以使用如下命令:

drop database 数据库名;

建立了数据库之后,如果想操作该数据库(例如为该数据库建表,在该数据库中执行查询等操作) 则需要进入该数据库。进入指定数据库可以使用如下命令:

use 数据库名;

进入指定数据库后,如果需要查询该数据库下包含多少个数据表,则可以使用如下命令:

show tables;

如果想查看指定数据表的表结构(查看该表有多少列,每列的数据米刑等信息),则可以使用如下命令:

desc 表名;

图13.8显示了使用MySQL命令行客户端执行这些命令的效果。


正如在图13.8中所看到的,MySQL的命令行客户端依次执行了show databases;. drop database abc;等命令,如果将多条MySQL命令写在一份SQL脚本文件里,然后将这份SQL脚本的内容一次复制到该窗口里,将可以看到该命令行客户端一次性执行所有SQL命令的效果——这种一次性执行多条命令的方式也被称为导入SQL脚本。

提示:

本章的大量程序需要相应数据库的支持,因为本章的大部分程序都会提供对应的SQL脚本,因此运行这些程序之前,应该先向MySQL数据库中导入这些SQL脚本 。


MySQL 数据库安装成功后,在其安装目录下有一个bin路径,该路径下包含一个mysql命令,该命今用于启动MySQL命令行客户端。执行mysql命令的语法如下:

mysql -p密码 -u 用户名 h 主机名 --default-character-set=utf-8

例:

mysql -u root -proot

3 SQL语句基础

标识符命名规则

4 DDL 语句

1.创建表的语法

标准的建表语句的语法如下:

create table[模式名.]表名
#可以有多个列定义
-columnName1 datatype [default expr],
...

上面语法中圆括号里可以包含多个列定义,每个列定义之间以英文逗号(,)隔开,最后一个列定义不需要使用英文逗号,而是真接以括号结束。

前面已经讲过,建立数据表只是建立表结构,就是指定该数据表有名小列,每列的数据类型,所以建表语句的重点就是圆括号里的列定义,列定义由列名、列类型和可选的默认值组成。

列定义有点类似于Java里的变量定义,与变量定义不同的是,列定义时将列名放在前面,列类型放在后面如果要指定列的默认值,则使用default关键字,而不是使用等号(=)。

例如下面的建表语句:

 create table test(
    -> test_id int,
    -> test_price decimal,
    -> test_name varchar(255) default 'xxx',
    -> test_desc text,
    -> test_img blob,
    -> test_date datetime
    -> );

注:->为上一行命令换行导致下一行显示


建表时需要指定每列的数据类型,不同数据库所支持的列类型不同,这需要查阅不同数据库的相关文档。

MySQL支持的列类型

列类型 说 明
tinyint/smallnit/ medumint/int(integer)/ bigint \字节2字节门字节/4字节/8字节整数,又可分为有符号和无符号两种。这些整数类型的区别仅仅是表数范围不同
float/ double 单精度、双精度浮点类型
decimal(dec) 精确小数类型,相对于float和double不会产生精度丢失的问题
date 日期类型,不能保存时间。把java.util.Date对象保存进date列时,时间部分将会丢失
time 时间类型,不能保存日期。把java.util.Date对象保存进time列时,日期部分将会丢失
datetime 日期、时间类型
timesamp 时间戳类型
year 年类型,仅仅保存时间的年份
char 定长字符串类型
varchar 可变长度字符串举刑
binary 定长字符串类型,它以二进制形式保存字符串



列类型 说明
varbinary 可变长度的二进制字符串类型,它以二进制形式保存字符串
tinyblob/blob mediumblob/longblob 字节几字节乃字节4字节的一进制大对象,可用于存储图片、音乐等二进制数据,分别存储:255B/64KB/16MB4GB的大小
tinytext/text mediumtext/longtext 1字节/2字节/3字节/4字节的文本对象,可用于存储超长长度的字符串,分别存储255B/64KB/16MB/4GB大小的文本
enum(‘value1’‘value2’…) 枚举类型,该列的值只能是enum后括号里多个值的其中之一
set('value1‘’‘value2.’…) 集合类型,该列的值可以是set后括号里多个值的其中几个

上面是比较常见的建表语句,这种建表语句只是创建一个空表,该表里没有任何数据。如果使用子查询建表语句,则可以在建表的同时插入数据。子查询建表语句的语法如下:

create table[模式名.]表名 [column[,column...]]
as subquery;

上面语法中新表的字段列表必须与子查询中的字段列表数量匹配,创建新表时的字段列表可以省略 如果省略了该字段列表,则新表的列名与选择结果完全相同。下面语句使用子查询来建表。

#创建hehe数据表,该数据表和user_inf完全相同,数据也完全相同
create table hehe
as
select * from user inf;

因为上面语句是利用子查询来建立数据表,所以执行该SOL语句要求数据库中已存在uset_inft 数据表。


提示:

当数据表创建成功后,MySQL使用使用infommation schema数据库里的TABLES表来存该数据库实例中的所有数据表,用户可通过查询TABLES表来获取该数据库的表信息


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
SQL 存储 关系型数据库
什么时候用sql数据库
在以下情况下,使用SQL数据库是合适的: 1. **数据存储在关系型数据库中**:如MySQL、PostgreSQL、Oracle等。因为SQL是关系型数据库的标准查询语言,能够方便地从数据库中
|
存储 关系型数据库 MySQL
MySQL数据库的使用
MySQL数据库的使用
46 0
|
5月前
|
SQL 关系型数据库 MySQL
MySQL数据库
【6月更文挑战第14天】MySQL数据库
55 2
|
关系型数据库 MySQL 数据库
|
SQL 关系型数据库 MySQL
MYSQL数据库3
MYSQL数据库3
55 0
|
SQL 关系型数据库 MySQL
MYSQL数据库7
MYSQL数据库7
50 0
|
关系型数据库 MySQL 数据库
MySQL数据库(二)下
MySQL数据库(二)下
|
SQL 存储 关系型数据库
MySQL数据库(四)
MySQL数据库(四)
|
SQL 关系型数据库 MySQL
MYSQL数据库5
MYSQL数据库5
45 0
|
SQL 关系型数据库 MySQL
MySQL数据库(二)上
MySQL数据库(二)上