数据库基础——库和表的操作

数据库基础——库和表的操作



数据库的操作

显示当前数据库

show databases;

创建数据库

create database [if not exists] + 数据库名字 + character set / charset + 常见字符集名字;

说明:

  1. if not exists 是指没有的情况下才创建
  2. character set / charset 用于指定字符集(常见的字符集: gbk, utf8, utf8mb4)
  3. MySQL 的utf8编码并不是真正的utf8,没有包含某些复杂的中文字符,MySQL真正的utf8是使用utf8mb4,建议大家都使用utf8mb4

使用数据库

use + 数据库名字;

说明:

  1. 对数据库中的表进行操作

删除数据库

drop + database + [if not exists] + 数据库名字;

说明:

  1. 数据库删除之后,内部就看不到对应的数据库,里面的表和数据全部都被删除

常用的数据类型

数值类型

数据类型大小说明对应 Java 类型
BIT[(M)]M 指定位数,默认 1 位二进制数,M 范围从 1 到 64,存储数值范围从 0 到 2^M - 1Boolean
TINYINT1 字节Byte
SMALLINT2 字节Short
INT4 字节Integer
BIGINT8 字节Long
FLOAT[(M, D)]4 字节单精度,M 指定长度,D 指定小数位数,会发生精度丢失Float
DOUBLE[(M, D)]8 字节Double
DECIMAL[(M, D)]M/D 最大值 +2双精度,M 指定长度,D 表示小数点位数,精确数值BigDecimal
NUMERIC[(M, D)]M/D 最大值 +2和 DECIMAL 一样BigDecimal

拓展:

  1. 数值类型可以指定为无符号(unsigned),表示不取负数
  2. 一个字节 == 8 个比特位
  3. 尽量不使用unsigned,对于int类型可能存不下的数据,int unsigned同样可能存不下,与其如此,还不如设计的时候,将int类型提升为bigint类型
  4. 对于整型类型的范围:
  • 有符号范围:到 2^(类型字节数8 -1) -1 到 2^(类型字节数8 -1) -1 ,如int是4字节,就是-2^31 到 2^31-1
  • 无符号范围:0 到 2^(类型字节数*8) -1 ,如uint是4字节,就是0 到 2^32-1

字符串类型和日期类型

字符串类型:

数据类型大小说明对应 Java 类型
VARCHAR(SIZE)0-65,535字节可变长度字符串String
TEXT0-65,535字节长文本数据String
MEDIUMTEXT0-16,777,215字节中等长度文本数据String
BLOB0-65,535字节二进制形式的长文本数据byte[]

日期类型:

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

表的操作

想要操作数据库中的表,需要先使用该数据库

use + 数据库名字;

查看该表的结构

desc + 表名;

说明:

  1. 显示不同列的名字以及对应的类型和索引等等,例如:

在这里插入图片描述

查看表

show tables;

说明:

  1. 用于查看该数据库里面,所有的表有哪些(显示表的名字)
    在这里插入图片描述

创建表

create table + 表名(列名 类型, 列名 类型, .....);

说明:

  1. 也可以在类型后面+comment增加字段说明
  • 例如: name varchar(20)comment ‘姓名’

删除表

drop table + 表名;

增删改查

1.全部列进行插入:
只有一条数据时:insert into + 表名 + values(值, 值, ....);
多条数据时:insert into + 表名 + values(值, 值, ....),(值, 值, ....), ......2.只针对某一列进行插入:
只有一条数据时:insert into + 表名(列名) + values(值);
多条数据时:insert into + 表名(列名) + values(值),(值), ....;

说明:

  1. 假如插入某一条中文数据,或者使用中文给某一列进行命名,需注意一下情况:
场景是否需要引号?符号类型示例
中文列名(标识符)视数据库而定(可选)反引号 / 方括号 / 双引号CREATE TABLE 学生表 (…)
中文数据(值)必须单引号 ’ ’VALUES (‘张三’, 20)
  1. 假如是针对多个列进行插入数据,但并非是全部列的情况下,只需要在上面代码块的第二种情况下,在表名后面的列名中写入想要插入数据的列名,并用逗号隔开即可

select * from + 表名;
*:通配符,可以查询到表里面所有列的数据

说明:

  1. 用于查询某一个表里面具体的数据
  2. 通配符也可以为其他列名字,可以查到该表内某一列的具体数据
  3. 同时,也支持一些简单的统计操作(例如:math + 10,我们获取到的是math这一列的值加上🔟)
select 列名 as 别名 from 表名;

说明:

  1. 针对某一个列起别名,以后可以使用别名来代替列名
  2. 别名可以对表达式,列名,表名起
select distinct 列名 from 表名;

说明:

  1. distinct这个关键字,可以对列名中重复的数据进行筛选,把重复的数据只保留一个,去除重复的数据
select 列名 from 表名 order by 列名 asc/desc;

说明:

  1. asc是指升序,desc是指降序
  2. 假如有明确指定升序或者降序的列名就按照指定的情况来,没有写升序或降序但是写在了order by 后面的列名就默认升序,假如没写在order by 后面就不排序
  3. 可以对多个字段进行排序,排序优先级随书写顺序
select */列名 from 表名 where 表达式;
运算符说明
>, >=, <, <=大于, 大于等于, 小于, 小于等于
=等于, NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>等于, NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <>不等于
BETWEEN a0 AND a1范围匹配 [a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, …)如果是 option 中的任意一个,返回 TRUE(1)
IS NULL是 NULL
IS NOT NULL不是 NULL
LIKE模糊匹配,% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符
运算符说明
AND多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR任意一个条件为 TRUE(1),结果为 TRUE(1)
NOT条件为 TRUE(1),结果为 FALSE(0);条件为 FALSE(0),结果为 TRUE(1)

注:

  1. WHERE 条件可以使用表达式,但不能使用别名
  2. AND 的优先级高于 OR,在同时使用时,需要使用小括号包裹优先执行的部分
select * from 表名 limit n/ limit s,n/ limit n offset s;

说明:

  1. 上面三种情况分别是:从零开始筛选n条数据,从s开始筛选n条数据,从s开始筛选n条
  2. 第二种比第三种更简洁,但效果一样
  3. limit后面是代表数据个数,offset后面是代表从哪里开始筛选

update 表名 set 列名 = ...

说明:

  1. 用于修改某一列的具体数据,假如想要精准到修改某一条数据的话,需要加上where关键字进行筛选

delete from 表名;

说明:

  1. 删除表里面的数据,但是想要删除到某条数据,需要加上where关键字进行筛选

补充说明

  1. 上述所有增删改查语句,后面都可以加上W(where)O(order by)L(limit offset)三个关键字
  2. 但是删除基本不需要排序,所以基本不用
  3. 使用这三个关键字可以更好的对目标数据进行操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值