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

简介: 跟着老杜学习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; // 删除所有!
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
9月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
916 6
|
10月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day01
本课程为MySQL基础学习第一天内容,涵盖MySQL概述、安装、SQL简介及其分类(DDL、DML、DQL、DCL)、数据库操作(查询、创建、使用、删除)及表操作(创建、约束、数据类型)。适合初学者入门学习数据库基本概念和操作方法。
307 6
|
10月前
|
关系型数据库 MySQL 数据管理
Mysql基础学习day03-作业
本内容包含数据库建表语句及多表查询示例,涵盖内连接、外连接、子查询及聚合统计,适用于员工与部门数据管理场景。
183 1
|
10月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day02-作业
本教程介绍了数据库表的创建与管理操作,包括创建员工表、插入测试数据、删除记录、更新数据以及多种查询操作,涵盖了SQL语句的基本使用方法,适合初学者学习数据库操作基础。
199 0
|
10月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day03
本课程为MySQL基础学习第三天内容,主要讲解多表关系与多表查询。内容涵盖物理外键与逻辑外键的区别、一对多、一对一及多对多关系的实现方式,以及内连接、外连接、子查询等多表查询方法,并通过具体案例演示SQL语句的编写与应用。
272 0
|
10月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day01-作业
本教程包含三个数据库表的创建练习:学生表(student)要求具备主键、自增长、非空、默认值及唯一约束;课程表(course)定义主键、非空唯一字段及数值精度限制;员工表(employee)包含自增主键、非空字段、默认值、唯一电话号及日期时间类型字段。每个表的结构设计均附有详细SQL代码示例。
178 0
|
10月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day02
本课程为MySQL基础学习第二天内容,涵盖数据定义语言(DDL)的表查询、修改与删除操作,以及数据操作语言(DML)的增删改查功能。通过具体SQL语句与实例演示,帮助学习者掌握MySQL表结构操作及数据管理技巧。
239 0
|
10月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
590 158
|
10月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
10月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1578 152

推荐镜像

更多