创建表和增删改(DML)

创建表和增删改(DML)

表的创建

建表的语法格式

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

create table 表名(

字段名1 数据类型,

字段名2 数据类型,

字段名3 数据类型

);

表名建议以t_或者tb1_开始,可读性强。

字段名:见名知意

快速创建表
mysql> create table t_user2 as select * from t_user;
Query OK, 1 row affected (0.34 sec)
Records: 1  Duplicates: 0  Warnings: 0

原理:

将一个查询结果当做一张表新建!!!

这个可以完成表的快速复制!!!

表创建出来,同时表中的数据也存在!!!

关于mysql中的数据类型

常见数据类型

  • varchar(最长255)

    可变长度的字符串,根据传过来的数据长度动态分配空间,最大值为varchar()括号里面的值,

    优点:节省空间

    缺点:需要动态分配空间,速度慢。

  • char(最长255)

    定长字符串,分配的空间为char()括号里面的值

    优点:不需要动态分配空间,速度快

    缺点:可能会导致空间的浪费

    varchar和char怎么选择?

    性别字段选char

    姓名字段选varchar

  • int(最长11)

    数字中的整数型,等同于Java中的int

  • bingint

    数字中的长整型,等同于java中的long

  • float

    单精度浮点型整数

  • double

    双精度浮点型整数

  • date

    短日期类型

    xxxx-yy-zz

  • datetime

    长日期类型

  • clob

    字符大对象

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

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

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

  • blob

    二进制大对象

    Binary Large OBject

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

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

    你需要使用IO流才行。

删除表

drop table t_student;//当这张表不存在的时候会报错!

drop table if exists t_student;//当这张表存在的时候就删除。

插入数据insert(DML)

语法格式:insert into 表名(字段名1,字段名2,字段名3,…)values(值1,值2,值3,…);

一次插入多条数据

语法格式:insert into 表名(字段名1,字段名2,字段名3,…)values((),(),()…);

插入日期

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

语法格式:

str_to_date(‘字符串日期’,‘日期格式’);

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

mysql> create table t_user(
    -> id int,
    -> name varchar(32),
    -> birth date);
Query OK, 0 rows affected (1.18 sec)
//格式不匹配,无法插入
mysql>  insert into t_user(id,name,birth) values(1,'zhangsan','01-10-1999');
1292 - Incorrect date value: '01-10-1999' for column 'birth' at row 1

mysql的日期格式:

  • %Y 年
  • %m 月
  • %d 日
  • %h 时
  • %i 分
  • %s 秒
//通过str_to_date函数把字符串转换为日期date类型
mysql> insert into t_user(id,name,birth) values(1,'zhangsan',str_to_date('01-10-1999','%d-%m-%Y'));
Query OK, 1 row affected (0.07 sec)

如果你的日期是 %Y-%m-%d 这种格式,str_to_date就不需要了

mysql> insert into t_user(id,name,birth) values(2,'lisi','1998-11-02');
Query OK, 1 row affected (0.05 sec)

使用date_format将日期格式按自己需要的格式输出出来

mysql> select id,name,date_format(birth,'%Y年%m月%d日') as birth from t_user;
+----+----------+----------------+
| id | name     | birth          |
+----+----------+----------------+
|  1 | zhangsan | 1999年10月01日 |
|  2 | lisi     | 1998年11月02日 |
+----+----------+----------------+
2 rows in set (0.13 sec)
date和datetime两个类型的区别

date是短日期:只包括年月日信息。

datetime是长日期:包括年月日时分秒信息

mysql> drop table if exists t_user;
Query OK, 0 rows affected (0.46 sec)
mysql> create table t_user(
    -> id int,
    -> name varchar(32),
    -> birth date,
    -> cteate_time datetime);
Query OK, 0 rows affected (0.30 sec)

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

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

mysql> insert into t_user(id,name,birth,cteate_time) values(1,'张三','1999-11-03','2022-06-12 20:56:23');
Query OK, 1 row affected (0.14 sec)
mysql> select * from t_user;
+----+------+------------+---------------------+
| id | name | birth      | cteate_time         |
+----+------+------------+---------------------+
|  1 | 张三 | 1999-11-03 | 2022-06-12 20:56:23 |
+----+------+------------+---------------------+
1 row in set (0.03 sec)

在mysql中获取系统时间

now()函数,并且获取的时间带有:时分秒信息!!!是datetime类型

mysql> insert into t_user(id,name,birth,cteate_time) values(1,'张三','1999-11-03',now());
Query OK, 1 row affected (0.12 sec)

修改数据(DML)

语法格式:

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

注意:没有条件限制会导致所有数据全部更新。

mysql> update t_user set id=2 where cteate_time='2022-06-12 21:13:25';
Query OK, 1 row affected (0.05 sec)

删除语句(DML)

语法格式:

​ delete from 表名 where 条件;

注意:没有条件,整张表的数据都会删除;

mysql> delete from t_user where id=2;
Query OK, 1 row affected (0.37 sec)
快速删除表中数据
//这种删除数据的方式比较慢
delete from t_user;

delete语句删除数据原理(这种操作属于DML语句)

表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放!!!

这种删除的缺点:删除效率低。

这种删除的优点:支持回滚,后悔了可以再次恢复数据!!!

truncate table t_user;

truncate语句删除数据的原理(这种操作属于DDL操作)

这种删除效率高,表一次截断,物理删除。

这种删除的缺点:不支持回滚。

这种删除的优点:快速。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值