MySql超详细讲解表的用法
作者:在人间负债^ 发布时间:2024-01-28 02:06:29
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)删除数据的原理?
表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放!!!
这种删除的缺点是:删除效率比较低。
这种删除的优点是:支持回滚,后悔了可以再恢复数据!!!
truncate 语句(DDL)删除数据的原理?
这种删除属于物理删除。
这种删除的缺点是:不支持回滚。
这种删除的优点是:效率较低。
truncate table 表名;
来源:https://blog.csdn.net/qq_52354698/article/details/126667279


猜你喜欢
- 一、模型方法 本工程采用的模型方法为朴素贝叶斯分类算法,它的核心算法思想基于概率论。我们
- 一、INSERT和REPLACEINSERT和REPLACE语句的功能都是向表中插入新的数据。这两条语句的语法类似。它们的主要区别是如何处理
- 资源React-16.8.*react-router-dom-4.3.*TypeScript-3.5.*webpack-4.*eslint-
- 如下所示:a[:, np.newaxis] # 给a最外层中括号中的每一个元素加[]a[np.newaxis, :] # 给a最外层中括号中
- 你是否苦恼于网上无法下载的“小说在线阅读”内容?或是某些文章的内容让你很有收藏的冲动,却找不到一个下载的链接?是不是有种自己写个程序把全部搞
- 1、查看数据库的字符集数据库的字符集必须和Linux下设置的环境变量一致,不然会有乱码。以下两个sql语句都可以查到:select * fr
- 主要内容1.函数基本语法及特性2.参数与局部变3.返回值 4.递归5.名函数 6.函数式编程介绍7.阶函数 8.内置函数函数基本语法及特性定
- 各位大家好!很荣幸能在这里和大家聊聊!(*^__^*) 嘻嘻……此处省略488字,切入正题。关于网页设计这个行业,在中国来讲这个行业并不成熟
- 具有不同标记颜色和大小的散点图演示。演示结果:实现代码:import numpy as npimport matplotlib.
- 见下表:序号列类型需要的存储量1TINYINT1 字节2SMALLINT2 个字节3MEDIUMINT3 个字节4INT4 个字节5INTE
- mysql服务启动,但是连接不上,如何解决?登陆报错: root@localhost:~# mysql -u root -p &
- 环境准备:全局安装jade: npm install jade -g初始化项目package.json: npm init --yes安装完
- Vue.js 的各种指令(Directives)更加方便我们去数据驱动 DOM,例如 v-bind、v-on、v-model、v-if、v-
- 本文实例讲述了Python Scrapy框架:通用爬虫之CrawlSpider用法。分享给大家供大家参考,具体如下:步骤01: 创建爬虫项目
- 在安装完数据库后,由于自己不小心直接关闭了安装窗口,或者长时间没有使用root用户登录系统,导致忘记了root密码,这时就需要重置MySQL
- 1. 概述触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。 所以触发器可以用来实现
- Django是用python写的web开发框架,其特点是:1.重量级框架,内部封装了很多的功能组件,使开发变的简便快速,2.MVT模式:前后
- 引包引入对应的包,和原来一样写一个打印文字的方法import sys, random, pygamefrom pygame.lo
- 起因之前写了一篇《 vue2.0+vue-video-player实现hls播放》,里边有提到在用vue-video-player之前,我尝
- 1.算法概述决策树算法是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策