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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 跟着老杜学习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; // 删除所有!
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
关系型数据库 MySQL Shell
shell学习(十七) 【mysql脚本备份】
shell学习(十七) 【mysql脚本备份】
14 0
|
1月前
|
SQL 存储 关系型数据库
6本值得推荐的MySQL学习书籍
本文是关于MySQL学习书籍的推荐,作者在DotNetGuide技术社区和微信公众号收到读者请求后,精选了6本值得阅读的MySQL书籍,包括《SQL学习指南(第3版)》、《MySQL是怎样使用的:快速入门MySQL》、《MySQL是怎样运行的:从根儿上理解MySQL》、《深入浅出MySQL:数据库开发、优化与管理维护(第3版)》以及《高性能MySQL(第4版)》和《MySQL技术内幕InnoDB存储引擎(第2版)》。此外,还有12本免费书籍的赠送活动,涵盖《SQL学习指南》、《MySQL是怎样使用的》等,赠书活动有效期至2024年4月9日。
104 0
|
6天前
|
存储 关系型数据库 MySQL
学习MySQL(5.7)第二战:四大引擎、账号管理以及建库(干货满满)
学习MySQL(5.7)第二战:四大引擎、账号管理以及建库(干货满满)
|
15天前
|
SQL 监控 关系型数据库
【MySQL学习】MySQL的慢查询日志和错误日志
【MySQL学习】MySQL的慢查询日志和错误日志
|
15天前
|
存储 关系型数据库 MySQL
Mysql学习--深入探究索引和事务的重点要点与考点
Mysql学习--深入探究索引和事务的重点要点与考点
|
21天前
|
SQL 关系型数据库 MySQL
快速学习MySQL SQL语句
快速学习MySQL SQL语句
|
21天前
|
存储 SQL 关系型数据库
MySQL学习手册(第一部分)
mysql日常使用记录
83 0
|
4天前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
14 0
|
2天前
|
关系型数据库 MySQL 数据库
mysql 设置环境变量与未设置环境变量连接数据库的区别
设置与未设置MySQL环境变量在连接数据库时主要区别在于命令输入方式和系统便捷性。设置环境变量后,可直接使用`mysql -u 用户名 -p`命令连接,而无需指定完整路径,提升便利性和灵活性。未设置时,需输入完整路径如`C:\Program Files\MySQL\...`,操作繁琐且易错。为提高效率和减少错误,推荐安装后设置环境变量。[查看视频讲解](https://www.bilibili.com/video/BV1vH4y137HC/)。
20 3
mysql 设置环境变量与未设置环境变量连接数据库的区别
|
4天前
|
关系型数据库 MySQL 数据库连接
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
16 0