MySql超详细讲解表的用法

目录
  • 1. 建表的语法
  • 2. mysql中的数据类型
  • 3. 模拟表
  • 4. 创建一个学生表
    • 1. 创建表(create-DDL)
    • 2. 插入数据(insert-DML)
    • 3. 插入日期
    • 4. date和datetime的区别
    • 5. 更新(update-DML)
    • 6. 删除(delete-DML)
  • 5. 快速创建表(复制表)
  • 6. 快速删除表中数据

1. 建表的语法

建表属于 DDL 语句,DDL 语句包括:create、drop、alter…

create table 表名(字段1 数据类型, 字段2 数据类型 ... );

表名:建议以 t_ 或者 tbl_ 开始,可读性强。见名知意。

字段名:见名知意。

表名和字段名都属于标识符。

2. mysql中的数据类型

  • varchar

最长 255

可变长度的字符串。

比较智能,节省空间。

会根据实际的数据长度分配空间。

  • char

最长 255

定长字符串

不管实际的数据长度是多少。

分配固定长度的空间去存储数据。

使用不恰当的时候,可能会导致空间的浪费。

varchar 动态的分配空间,速度慢

char 固定的分配空间,速度快 具体的选择根据实际情况来选择 比如:姓名:varchar;性别:char

  • int

最长 11

数字中的整数型。

等同于 java 中的 int。

  • bigint

数字中的长整型。

等同于 java 中的 long 。

  • float

单精度浮点型数据。

  • double

双精度浮点型数据。

  • date

短日期类型。

  • datetime

长日期类型。

  • clob

字符大对象。

最多可以存储 4G 的字符串。

比如:存储一篇文章,存储一个说明。

超过 255 个字符的都要采用 CLOB 字符大对象来存储。

  • blob

二进制大对象。

专门用来存储图片、声音、视频等流媒体数据。

往 BLOB 类型的字段上插入数据的时候,例如插入一个图片、视频等。

你需要使用 IO 流才行。

3. 模拟表

  • t_movie 电影表(专门存储电影信息的)
  • no(bigint):编号
  • name(varchar):名字
  • history(clob):故事情节
  • playtime(date):上映日期
  • time(double):时长
  • image(blob):海报
  • type(cahr):类型

4. 创建一个学生表

学号、姓名、年龄、性别、邮箱地址

1. 创建表(create-DDL)

mysql> create table t_student (no int, name varchar(32), sex char(1), age int(3), email varchar(255));

2. 插入数据(insert-DML)

语法格式

insert into 表名(字段名1, 字段名2, 字段名3...) values(值1, 值2, 值3...);

注意:字段名和值要一一对应。(数量要对应。数据类型要对应。)

mysql> insert into t_student(no, name, sex, age, email) values(1, 'zhangsan', 'm', 20, 'zhangsan@123.com');
mysql> insert into t_student(no, name, sex, age, email) values(1, 'lisi', 'm', 20, 'lisi@123.com');

mysql> insert into t_student(no) values(3);

没有给其他字段指定值的时候,默认值是 null

insert 语句中的字段名可以省略,省略的话默认是全部写上了,所以按照一一对应原则,values 中的值要全部写上。

3. 插入日期

format:数字格式化

format(数字, '格式')

str_to_date:将字符串 varchar 类型转换成 date 类型

str_to_date('字符串日期', '日期格式')

date_format:将 date 类型转换成具有一定格式的 varchar 类型

mysql> create table t_user(id int, name varchar(32), birth date);

插入数据?

mysql> insert into t_user(id, name, birth) values(1, 'zhangsan', str_to_date('01-01-1990', '%d-%m-%Y'));

str_to_date 将字符串类型的日期转换成 date 类型的日期

但是!!!如果提供的字符串日期格式是%Y_%m-%d的话,就不需要str_to_date函数了,mysql会自动转换。

mysql> insert into t_user(id, name, birth) values(2, 'lisi', '1990-10-01');

4. date和datetime的区别

date:短日期,只包括 年月日

dateime:长日期,包括 年月日时分秒

短日期默认格式:%Y-%m-%d

长日期默认格式:%Y-%m-%d %h:%i:%s

在 mysql 中 now() 函数可以获取系统当前时间,是长时间格式

5. 更新(update-DML)

语法格式

update 表名 set 字段1=值1, 字段2=值2 ... where 条件;

注意:如果没有限制条件,会导致所有的数据全部进行更新

mysql> update t_user set name = 'jack', birth = '2022-9-2' where id = 2;

mysql> select * from t_user;

6. 删除(delete-DML)

语法格式

delete from 表名 where 条件;

注意:如果没有条件,整张表的数据都会被删除。

mysql> delete from t_user where id = 2;

mysql> delete from t_user;

5. 快速创建表(复制表)

原理:

将一个查询结果当做一张表新建!!! 这个可以完成表的快速复制!!! 表创建出来,同时表中的数据也存在了!!!

mysql> create table emp2 as select * from emp;

6. 快速删除表中数据

delete 语句(DML)删除数据的原理?

  1. 表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放!!!
  2. 这种删除的缺点是:删除效率比较低。
  3. 这种删除的优点是:支持回滚,后悔了可以再恢复数据!!!

truncate 语句(DDL)删除数据的原理?

  • 这种删除属于物理删除。
  • 这种删除的缺点是:不支持回滚。
  • 这种删除的优点是:效率较低。

truncate table 表名;

到此这篇关于MySql超详细讲解表的用法的文章就介绍到这了,更多相关MySql表内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Mysql表的操作方法详细介绍

    目录 创建表 查看表结构 修改表 删除表 创建表 语法: CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; 说明: field 表示列名 datatype 表示列的类型 character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准 collate 校验规则,如果没有指定校验规则,则以

  • MYsql库与表的管理及视图介绍

    目录 库的管理 1.库的管理 2.表的管理 3.表的修改 表操作的练习题 视图 视图的作用 应用场景 创建视图的语法 库的管理 1.库的管理 创建.修改.删除 1.库的创建 CREATE DATABASE UF NOT EXISTS books: 2.库的修改 库名一般不修改,不安全. 更改库的字符集 ALTER DATABASE books CHARACTER SET gbk; 3,删除 DROP DATABASE books; 2.表的管理 创建(create).修改(alter).删除(d

  • MySQL使用表锁和行锁的场景详解

    目录 前言 全局锁 表级锁 表锁 元数据锁 意向锁 行级锁 总结 前言 MySQL Innodb 的锁可以说是执行引擎的并发基础了,有了锁才能保证数据的一致性.众所周知,我们都知道 Innodb 有全局锁.表级锁.行级锁三种,但你知道什么时候会用表锁,什么时候会用行锁吗? 虽然对 MySQL 的知识点挺熟悉的,但一开始看到这个问题,树哥也是有点懵,我还真没从这个角度去思考过.大家可以暂时 1 分钟思考下答案,后面我将带大家弄清楚这个问题. 对于这个问题,我只能粗略地想起一些片段,例如: 对于表级

  • Mysql表的约束超详细讲解

    目录 约束的概念 空属性 默认值 列描述 zerofill 主键 自增长 唯一键 外键 约束的概念 约束:通过限制用户操作的方式,来达到维护数据本身安全,完整性的一套方案. 为什么要有约束? Mysql是一套整体的数据存储解决方案,除了解决数据存储功能,还要保证数据的安全,减少用户的误操作. 表的约束有很多,主要介绍:null/not null,default, comment, zerofill,primary key, auto_increment,unique key . 空属性 数据库默

  • MySQL数据库线上修改表结构的方法

    目录 一.MDL元数据锁 1.什么是MDL锁 2.MDL锁的问题 二.如何线上修改MySQL表结构 一.MDL元数据锁 在修改表结构之前,先来看下可能存在的问题. 1.什么是MDL锁 MySQL有一个把锁,叫做MDL元数据锁,当对表修改的时候,会自动给表加上这把锁,也就是不需要自己显式使用. 当对表做增删改查的时候,加的是MDL读锁 当对表结构做变更修改的时候,加的是MDL写锁 读与读之间不互斥,读与写,写与写之间互斥,因此 当有一个线程对表执行增删盖茶的时候,会阻塞掉别的线程对表结构修改的请求

  • Mysql表连接的执行流程详解

    目录 1. 前言 1.1 mysql连接的原理 1.2 show warnings命令 2. 准备工作 3. inner join内连接on.where的区别 4. left join左连接on.where的区别 4.1 where驱动表过滤条件 4.2 on驱动表过滤条件 4.3 on被驱动表过滤条件 4.4 where被驱动表过滤条件 5. 总结 1. 前言 对于连接操作,驱动表和被驱动表的关联条件我们放在on后面,如果额外增加对驱动表和被驱动表的过滤条件,放到on或者where后面都不会报

  • MySql超详细讲解表的用法

    目录 1. 建表的语法 2. mysql中的数据类型 3. 模拟表 4. 创建一个学生表 1. 创建表(create-DDL) 2. 插入数据(insert-DML) 3. 插入日期 4. date和datetime的区别 5. 更新(update-DML) 6. 删除(delete-DML) 5. 快速创建表(复制表) 6. 快速删除表中数据 1. 建表的语法 建表属于 DDL 语句,DDL 语句包括:create.drop.alter… create table 表名(字段1 数据类型, 字

  • Mysql超详细讲解死锁问题的理解

    目录 1.什么是死锁? 2.Mysql出现死锁的必要条件 资源独占条件 请求和保持条件 不剥夺条件 相互获取锁条件 3. Mysql经典死锁案例 3.1 建表语句 3.2 初始化相关数据 3.3 正常转账过程 3.4 死锁转账过程 3.5 死锁导致的问题 4.如何解决死锁问题? 4.1 打破请求和保持条件 4.2 打破相互获取锁条件(推荐) 5.总结 1.什么是死锁? 死锁指的是在两个或两个以上不同的进程或线程中,由于存在共同资源的竞争或进程(或线程)间的通讯而导致各个线程间相互挂起等待,如果没

  • Java超详细讲解ArrayList与顺序表的用法

    目录 简要介绍 Arraylist容器类的使用 Arraylist容器类的构造 ArrayList的常见方法 ArrayList的遍历 ArrayList中的扩容机制 简要介绍 顺序表是一段物理地址连续的储存空间,一般情况下用数组储存,并在数组上完成增删查改.而在java中我们有ArrayList这个容器类封装了顺序表的方法. 在集合框架中,ArrayList是一个普通的类,其实现了list接口.其源码类定义如图 可见,其实现了RandomAccess, Cloneable, 以及Seriali

  • Java超详细讲解接口的实现与用法

    目录 1.接口的定义 2.接口的实现 3.接口的引用 4.接口的继承 5.利用接口实现多重继承 1.接口的定义 接口是一种特殊的抽象类,是Java提供的一个重要的功能,与抽象类不同的是: 接口的所有数据成员都是静态的且必须初始化. 接口中的所有方法必须都是抽象方法,不能有一般的方法. [public] interface 接口名称 [extends  父接口名列表]{    [public] [static] [final]数据类型 成员变量名 = 常量;    ...    [public][

  • C++ 数据结构超详细讲解顺序表

    目录 前言 一.顺序表是什么 概念及结构 二.顺序表的实现 顺序表的缺点 几道练手题 总结 (●’◡’●) 前言 线性表是n个具有相同特性的数据元素的有限序列.线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表.链表.栈.队列.字符串. 线性表在逻辑上是线性结构,也就是说连续的一条直线,但是在物理结构并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储. 本章我们来深度初体验顺序表 一.顺序表是什么 概念及结构 顺序表是一段物理地址连续的存储单元依次存储数据元素的线性

  • Java 垃圾回收超详细讲解记忆集和卡表

    目录 那么如何才能解决跨代引用呢? 记忆集 卡表 在说记忆集和卡表之前,先给大家介绍一下跨代引用的问题. 假如要现在进行一次只局限于新生代区域内的收集(Minor GC),但新生代的实例对象1在老年代中被引用,为了找出该区域(新生代)中所有的存活对象,不得不在固定的GC Roots之外,再额外遍历整个老年代中所有对象来确保可达性分析结果的正确性,反过来也是一样.遍历整个老年代所有对象的方案虽然理论上可行,但无疑会为内存回收带来很大的性能负担. 事实上并不只是新生代.老年代之间才有跨代引用的问题,

  • Java 垃圾回收超详细讲解记忆集和卡表

    目录 跨代引用 解决跨代引用 记忆集 卡表 跨代引用 在说记忆集和卡表之前,先给大家介绍一下跨代引用的问题. 假如要现在进行一次只局限于新生代区域内的收集(Minor GC),但新生代的实例对象1在老年代中被引用,为了找出该区域(新生代)中所有的存活对象,不得不在固定的GC Roots之外,再额外遍历整个老年代中所有对象来确保可达性分析结果的正确性,反过来也是一样.遍历整个老年代所有对象的方案虽然理论上可行,但无疑会为内存回收带来很大的性能负担. 事实上并不只是新生代.老年代之间才有跨代引用的问

  • C语言超详细讲解顺序表的各种操作

    目录 顺序表是什么 顺序表的结构体 顺序表的接口函数 顺序表相关操作的菜单 顺序表的初始化 添加元素 陈列元素 往最后加元素 往前面加元素 任意位置加元素 删除最后元素 删除前面元素 删除任意元素 整体代码(fun.h部分) 整体代码(fun.cpp部分) 整体代码(主函数部分) 结果展示 顺序表是什么 顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素.使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数

  • C语言超详细讲解数据结构中的线性表

    目录 前言 一.分文件编写 1.分文件编写概念 2.代码展示 二.动态分布内存malloc 1.初识malloc 2.使用方法 三.创建链表并进行增删操作 1.初始化链表 2.在链表中增加数据 3.删除链表中指定位置数据 四.代码展示与运行效果 1.代码展示 2.运行效果 总结 前言 计算机专业都逃不了数据结构这门课,而这门课无疑比较难理解,所以结合我所学知识,我准备对顺序表做一个详细的解答,为了避免代码过长,采用分文件编写的形式,不仅可以让代码干净利落还能提高代码可读性,先解释部分代码的含义,

随机推荐