MYSQL数据库基础(数据库)

文章目录

  • 一、数据库使用流程
  • 二、数据库的操作
  • 三、常用数据类型
    • 3.1 数值类型
    • 3.2 字符串类型
    • 3.3 日期类型
  • 四、数据表操作

一、数据库使用流程

  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和1 char[]
TINYINT 1字节 Byte signed char
SMALLINT 2字节 Short short int
INT 4字节 Integer int
BIGINT 8字节 Long long long int
FLOAT(M, D) 4字节 单精度,M指定长度(有效数字的长度),D是小数点后的位数。会发生精度丢失 Float float
DOUBLE(M,D) 8字节 Double double
DECIMAL(M,D) M/D最大值+2 双精度,M指定长度,D表示小数点位数。精确数值 BigDecimal char[]
NUMERIC(M, D) M/D最大值+2 和DECIMAL一样 BigDecimal char[]

3.2 字符串类型

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

3.3 日期类型

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

四、数据表操作

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

1.创建表

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

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

show tables;

3.查看指定表的结构

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

MYSQL数据库基础(数据库)_第1张图片

4.删除表

drop table 表名;
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

你可能感兴趣的:(数据库,数据库,mysql,sql)