跟着老杜学习MySql--day2(下)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 跟着老杜学习MySql--day2(下)

7.3、创建一个学生表?

  学号、姓名、年龄、性别、邮箱地址
    create table t_student(
        no int,
        name varchar(32),
        sex char(1),
        age int(3),
        email varchar(255)
    );

   删除表:

       

1. drop table t_student; // 当这张表不存在的时候会报错!
2. 
3.         // 如果这张表存在的话,删除
4.         drop table if exists t_student;

7.4、插入数据insert (DML)

 

   语法格式:

       insert into 表名(字段名1,字段名2,字段名3...) values(值1,值2,值3);        注意:字段名和值要一一对应。什么是一一对应?

           数量要对应。数据类型要对应。

   

    insert into t_student(no,name,sex,age,email) values(1,'zhangsan','m',20,'zhangsan@123.com');
    insert into t_student(email,name,sex,age,no) values('lisi@123.com','lisi','f',20,2);
    insert into t_student(no) values(3);
    +------+----------+------+------+------------------+
    | no   | name     | sex  | age  | email            |
    +------+----------+------+------+------------------+
    |    1 | zhangsan | m    |   20 | zhangsan@123.com |
    |    2 | lisi     | f    |   20 | lisi@123.com     |
    |    3 | NULL     | NULL | NULL | NULL             |
    +------+----------+------+------+------------------+
    insert into t_student(name) values('wangwu');
    +------+----------+------+------+------------------+
    | no   | name     | sex  | age  | email            |
    +------+----------+------+------+------------------+
    |    1 | zhangsan | m    |   20 | zhangsan@123.com |
    |    2 | lisi     | f    |   20 | lisi@123.com     |
    |    3 | NULL     | NULL | NULL | NULL             |
    | NULL | wangwu   | NULL | NULL | NULL             |
    +------+----------+------+------+------------------+

   注意:insert语句但凡是执行成功了,那么必然会多一条记录。

   没有给其它字段指定值的话,默认值是NULL。

   

 

  drop table if exists t_student;
    create table t_student(
        no int,
        name varchar(32),
        sex char(1) default 'm',
        age int(3),
        email varchar(255)
    );
    +-------+--------------+------+-----+---------+-------+
    | Field | Type         | Null | Key | Default | Extra |
    +-------+--------------+------+-----+---------+-------+
    | no    | int(11)      | YES  |     | NULL    |       |
    | name  | varchar(32)  | YES  |     | NULL    |       |
    | sex   | char(1)      | YES  |     | m       |       |
    | age   | int(3)       | YES  |     | NULL    |       |
    | email | varchar(255) | YES  |     | NULL    |       |
    +-------+--------------+------+-----+---------+-------+
    insert into t_student(no) values(1);
    mysql> select * from t_student;
    +------+------+------+------+-------+
    | no   | name | sex  | age  | email |
    +------+------+------+------+-------+
    |    1 | NULL | m    | NULL | NULL  |
    +------+------+------+------+-------+

 

   insert语句中的“字段名”可以省略吗?可以

       insert into t_student values(2); //错误的


       // 注意:前面的字段名省略的话,等于都写上了!所以值也要都写上!

     

  insert into t_student values(2, 'lisi', 'f', 20, 'lisi@123.com');
        +------+------+------+------+--------------+
        | no   | name | sex  | age  | email        |
        +------+------+------+------+--------------+
        |    1 | NULL | m    | NULL | NULL         |
        |    2 | lisi | f    |   20 | lisi@123.com |
        +------+------+------+------+--------------+

7.5、insert插入日期

   数字格式化:format

       

select ename,sal from emp;
        +--------+---------+
        | ename  | sal     |
        +--------+---------+
        | SMITH  |  800.00 |
        | ALLEN  | 1600.00 |
        | WARD   | 1250.00 |
        | JONES  | 2975.00 |
        | MARTIN | 1250.00 |
        | BLAKE  | 2850.00 |
        | CLARK  | 2450.00 |
        | SCOTT  | 3000.00 |
        | KING   | 5000.00 |
        | TURNER | 1500.00 |
        | ADAMS  | 1100.00 |
        | JAMES  |  950.00 |
        | FORD   | 3000.00 |
        | MILLER | 1300.00 |
        +--------+---------+

 格式化数字:format(数字, '格式')

         

 select ename,format(sal, '$999,999') as sal from emp;
            +--------+-------+
            | ename  | sal   |
            +--------+-------+
            | SMITH  | 800   |
            | ALLEN  | 1,600 |
            | WARD   | 1,250 |
            | JONES  | 2,975 |
            | MARTIN | 1,250 |
            | BLAKE  | 2,850 |
            | CLARK  | 2,450 |
            | SCOTT  | 3,000 |
            | KING   | 5,000 |
            | TURNER | 1,500 |
            | ADAMS  | 1,100 |
            | JAMES  | 950   |
            | FORD   | 3,000 |
            | MILLER | 1,300 |
            +--------+-------+

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

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

 drop table if exists t_user;
    create table t_user(
        id int,
        name varchar(32),
        birth date // 生日也可以使用date日期类型
    );
    create table t_user(
        id int,
        name varchar(32),
        birth char(10) // 生日可以使用字符串,没问题。
    );

   生日:1990-10-11 (10个字符)

   注意:数据库中的有一条命名规范:

       所有的标识符都是全部小写,单词和单词之间使用下划线进行衔接。

 

  mysql> desc t_user;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(11)     | YES  |     | NULL    |       |
    | name  | varchar(32) | YES  |     | NULL    |       |
    | birth | date        | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+

插入数据?

       insert into t_user(id,name,birth) values(1, 'zhangsan', '01-10-1990'); // 1990年10月1日

       出问题了:原因是类型不匹配。数据库birth是date类型,这里给了一个字符串varchar。


       怎么办?可以使用str_to_date函数进行类型转换。

       str_to_date函数可以将字符串转换成日期类型date?

       语法格式:

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

 mysql的日期格式:

           %Y    年

           %m 月

           %d 日

           %h    时

           %i    分

           %s    秒

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


       str_to_date函数可以把字符串varchar转换成日期date类型数据,

       通常使用在插入insert方面,因为插入的时候需要一个日期类型的数据,

       需要通过该函数将字符串转换成date。


   好消息?

       如果你提供的日期字符串是这个格式,str_to_date函数就不需要了!!!

           %Y-%m-%d

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

 

   查询的时候可以以某个特定的日期格式展示吗?

       date_format

       这个函数可以将日期类型转换成特定格式的字符串。

     select id,name,date_format(birth, '%m/%d/%Y') as birth from t_user;
        +------+----------+------------+
        | id   | name     | birth      |
        +------+----------+------------+
        |    1 | zhangsan | 10/01/1990 |
        |    2 | lisi     | 10/01/1990 |
        +------+----------+------------+

 date_format函数怎么用?

           date_format(日期类型数据, '日期格式')

           这个函数通常使用在查询日期方面。设置展示的日期格式。

       

 

     mysql> select id,name,birth from t_user;
        +------+----------+------------+
        | id   | name     | birth      |
        +------+----------+------------+
        |    1 | zhangsan | 1990-10-01 |
        |    2 | lisi     | 1990-10-01 |
        +------+----------+------------+

   以上的SQL语句实际上是进行了默认的日期格式化,

       自动将数据库中的date类型转换成varchar类型。

       并且采用的格式是mysql默认的日期格式:'%Y-%m-%d'


       select id,name,date_format(birth,'%Y/%m/%d') as birth from t_user;

     

       java中的日期格式?

           yyyy-MM-dd HH:mm:ss SSS

7.6、date和datetime两个类型的区别?

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

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


   drop table if exists t_user;

   create table t_user(

       id int,

       name varchar(32),

       birth date,

       create_time datetime

   );



   id是整数

   name是字符串

   birth是短日期

   create_time是这条记录的创建时间:长日期类型


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

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


   insert into t_user(id,name,birth,create_time) values(1,'zhangsan','1990-10-01','2020-03-18 15:49:50');


   在mysql当中怎么获取系统当前时间?

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

 

       insert into t_user(id,name,birth,create_time) values(2,'lisi','1991-10-01',now());

7.7、修改update(DML)

语法格式:

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

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

 

  update t_user set name = 'jack', birth = '2000-10-11' where id = 2;
    +------+----------+------------+---------------------+
    | id   | name     | birth      | create_time         |
    +------+----------+------------+---------------------+
    |    1 | zhangsan | 1990-10-01 | 2020-03-18 15:49:50 |
    |    2 | jack     | 2000-10-11 | 2020-03-18 15:51:23 |
    +------+----------+------------+---------------------+

update t_user set name = 'jack', birth = '2000-10-11', create_time = now() where id = 2;


   更新所有?

       update t_user set name = 'abc';

7.8、删除数据 delete (DML)

   语法格式?

       delete from 表名 where 条件;

注意:没有条件,整张表的数据会全部删除!

1.     delete from t_user where id = 2;
2. 
3.     insert into t_user(id) values(2);
4. 
5.     delete from t_user; // 删除所有!
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
51 3
|
2月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
70 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
2月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
109 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
2月前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
34 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
2月前
|
关系型数据库 MySQL 数据库
mysql关系型数据库的学习
mysql关系型数据库的学习
20 0
|
2月前
|
Kubernetes 关系型数据库 MySQL
k8s学习--利用helm部署应用mysql,加深helm的理解
k8s学习--利用helm部署应用mysql,加深helm的理解
214 0
|
3月前
|
SQL 关系型数据库 MySQL
学习MySQL操作的有效方法
学习MySQL操作的有效方法
48 3
|
19天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
34 1
|
21天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
35 4
|
28天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
155 1