MYSQL数据库基础(数据库)

一、数据库使用流程

  1. 用户在客户端输入SQL语句
  2. 客户端会把SQL通过网络发送给服务器
  3. 服务器会执行这个SQL,把结果返回给客户端
  4. 客户端接收到结果后,显示到界面上

二、数据库的操作

1.创建数据库

1.1 语法

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, 
create_specification] ...]

create_specification:
 [DEFAULT] CHARACTER SET charset_name
 [DEFAULT] COLLATE collation_name

1.2 解析

  • 已经有了数据库,为何还要创建
    • 计算机中,不同的词有不同的含义,如一门学科、一类软件、某个具体的数据库软件、某个部署了数据库的服务器的主机、某个具体的正在运行的数据库服务器程序、一个数据库集合……
    • 我们现在有的准确的说是 数据库服务器 ,在这个数据库服务器上,可以根据逻辑划分出多个不同的数据集合,每个数据集合就称为是一个‘数据库’,我们要创建的就是一个 数据集合
  • 基础语法
    • create ,database……相当于关键字,即无法充当变量名
    • SQL的关键字是不区分大小写的
    • 创建的数据库的名字不能重复(可以通过if not exists 来判断)
    • 单词之间至少有一个空格,不能没有
    • 在命令行客户端中输入的SQL语句必须以 ;(英文) 作为结尾
  • MYSQL的效率问题
    • (0.01 sec):sec是second(秒)的意思,0.01s即10毫秒,0.00sec 小于10毫秒。数据库的很多操作,都是并不高效的
  • 说明
    • [] 是可选项
      CHARACTER SET: 指定数据库采用的字符集
      COLLATE: 指定数据库字符集的校验规则

1.3 使用

创建名为test 的数据库
当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则时:utf8_general_ci

create database test;

如果系统没有test数据库,则创建一个名为test的数据库,有则不创建
如果是单行SQL没有什么问题,但是如果是批量执行SQL(把很多SQL写到一个文件中),如果中间某个SQL报错,就会执行停止

create database if not exists test;

如果系统没有test数据库,则创建一个使用utf8mb4字符集的名为test的数据库,有则不创建
如果是单行SQL没有什么问题,但是如果
说明:MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符。MySQL真正的utf8是使用utf8mb4,建议大家都使用utf8mb4

create database if not exists test character set utf8mb4;
# 或
create database if not exists test charset utf8mb4;
  • 字符集
    • mysql的字符集
      • mysql 默认字符集是拉丁文(没法表示中文的),所以手动设定一个字符集是十分关键的,后续如果要插入一些中文,如果不是utf8/gbk之类的中文就会出现乱码
    • 字符集:针对汉字进行编码
      • VS 使用的编码方式是跟随系统,Windows 系统编码就是gbk。java 的字符集是在编译运行的时候,通过命令行参数显示指定的,一般默认都是utf8
      • 英文字母在计算机中通过ASCII表示,ASCII使用数字表示字符,且只能表示英文字母和标点符号以及阿拉伯数字。汉字要表示的内容特别多,但我们依旧是采用ASCII的编写思路,搞一个更大的表,来表示汉字。对于中文来说,最常见的表示方式是gbk和utf8
      • gbk:使用两个字节,表示一个汉字。    utf8:使用三个字节,来表示一个汉字(更加主流,除了汉字之外,各种其他国家的语言文字符号都能表示)。    utf8mb4:是完整版utf8,MySQL的utf8是残缺的,缺少了一些emoji表情

2.显示数据库

因为显示的数据库可能有多个,所以要加后缀s
系统自带的数据库,如information_schema、mysql、performance_schema、sys,不要乱改
cmd 上允许把一个SQL分成多行来写,如果没有;这表示换行,而不是“确认执行”

show databases;

3.使用数据库

后续操作的大前提(一旦选中了某个指定的数据库,后续操作就都是针对该数据库展开了)

use 数据库名

4.删除数据库

注意,一旦删掉数据库,里面的数据就都没有了,很难恢复

DROP DATABASE [IF EXISTS] db_name;
  • 如何避免删除数据库
    • 权限,不同的用户,能进行的操作是不一样的
    • 备份,一旦不小心误删除了某些重要数据,可以通过之前的备份数据,恢复回来
    • 检查,在执行某些重要操作的时候,拉上其他人帮忙一起检查

三、常用数据类型

3.1 数值类型

数值类型可以指定为无符号(unsigned),表示不取负数。
DECIMAL能够精确表示小数,但是float和double是不行的,但是DECIMAL存储空间占用的更多,计算速度也更慢

数据类型大小说明对应Java类型对应C类型
BIT[ (M) ]M指定位数,默认为1二进制数,M范围从1到64,存储数值范围从0到2^M-1常用Boolean对应BIT,此时默认是1位,即只能存0和1char[]
TINYINT1字节Bytesigned char
SMALLINT2字节Shortshort int
INT4字节Integerint
BIGINT8字节Longlong long int
FLOAT(M, D)4字节单精度,M指定长度(有效数字的长度),D是小数点后的位数。会发生精度丢失Floatfloat
DOUBLE(M,D)8字节Doubledouble
DECIMAL(M,D)M/D最大值+2双精度,M指定长度,D表示小数点位数。精确数值BigDecimalchar[]
NUMERIC(M, D)M/D最大值+2和DECIMAL一样BigDecimalchar[]

3.2 字符串类型

数据类型大小说明对应Java类型对应C类型
VARCHAR (SIZE)0-65,535字节可变长度字符串,SIZE表示最大长度,单位是字符,不是字节,即varchar(10)就表示最多十个字Stringchar[]
TEXT0-65,535字节长文本数据Stringchar[]
MEDIUMTEXT 0-16 777 215字节中等长度文本数据Stringchar[]
BLOB0-65,535字节二进制形式的长文本数据byte[]char[]

3.3 日期类型

数据类型大小说明对应Java类型对应C类型
DATETIME8字节范围从1000到9999年,不会进行时区的检索及转换java.util.Date、java.sql.TimestampMYSQL_TIME
TIMESTAMP4字节时间戳,范围从1970到2038年,自动检索当前时区并进行转换java.util.Date、java.sql.TimestampMYSQL_TIME

四、数据表操作

关系型数据库中,数据是以“表”的方式来进行组织的,每个数据库中,里面就可以有很多个数据表,每个表可以有很多行,每一行又可以有很多个列(字段)
所有的和表相关的操作,都需要选中数据库再进行

1.创建表

CREATE TABLE table_name (
 field1 datatype,     -- field 类型     datatyoe 结构
 field2 datatype,
 field3 datatype
);

2.查看当前数据库中的所有表

show tables;

3.查看指定表的结构

desc 表名       -- desc == describe(描述)

在这里插入图片描述

4.删除表

drop table 表名;
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值