首页 > 数据库 >MYSQL学习笔记之 表

MYSQL学习笔记之 表

时间:2022-10-01 22:02:46浏览次数:50  
标签:rows name 0.00 MYSQL 笔记 学习 set sec mysql

MYSQL学习笔记之 表_表的基本操作

(一)语法格式

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

create table 表名(

字段名 1  数据类型,

字段名 2  数据类型,

字段名3  数据类型​

);

说明:

①  表名:建议以t_或者tbl_开头,可读性强,见名知意。

②  字段名:见名知意。

③  表名和字段名都属于标识符

(二)MYSQL中常见的基本数据类型

数据类型

                             说明

   varchar

  可变长度字符串,可以实际的数据长度动态分配空间(最长255位)

       优点:节省空间

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

char

 定长字符串,分配固定长度去存储数据,使用不当会造成空间的浪费(最长255)

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

       缺点: 使用不恰当会导致空间的浪费

       int

    数字中的整数型,等同于java中的int(最长11位)

      bigint

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

     double

     双精度浮点型整数


     date

     短日期 类型

    datetime

     长日期类型

   

      clob

   Character Large Object :Clob

   字符大对象,最多可以存储4G的字符串

    超过255个字符的都要采用CLOB字符大对象来进行存储

 

     blob

   Binary Large OBject

   二进制大对象

   专门用来存储图片、声音、视频等流媒体数据(通过IO流)

    enum


    接受最多64k个串组成的一个预定义的集合的某个串

   longtext

    与text相同,但是最大长度为4GB

 mediumtext

  与text相同,但是最大长度为16K

set

   接受最多64组成的一个预定义集合的零个或多个串

text

   最大长度为64k的变长文本

   tinytext

   与text相同,但最大长度为255字节

实际举例:

t_move  电影表(专门用来存放电影信息)

     编号                      名字                         描述信息                          上映日期    

no(bigint)                 name(varchar)                   descrpition(clob)                  playtime(date)

-----------------------------------------------------------------------------

10003                  《战狼2》                 爱国大片                    2017.7.27​

创建一个学生表,包括 学号、姓名、年龄、邮箱地址

mysql> create table t_student(
no int,
name varchar(32),
sex char(1),
age int(3),
email varchar(255)
);
#创建成功
Query OK, 0 rows affected, 1 warning (0.04 sec)

mysql> show tables;
+-----------------------+
| Tables_in_bjpowernode |
+-----------------------+
| bjpowernode |
| dept |
| emp |
| salgrade |
| t_student |
+-----------------------+
5 rows in set (0.00 sec)

(三)操作演示

(1)创建表

mysql> create table t_student(
no int,
name varchar(32),
sex char(1),
age int(3),
email varchar(255)
);
#创建成功
Query OK, 0 rows affected, 1 warning (0.04 sec)

(2)删除表

格式一: drop 表名

格式二:drop table if exists 表名(优先使用)

说明:对于格式一,如果表存在,会直接删除,但是如果不存在,就会报错

         对于格式二,仅当表存在时候,将其删除,即使表不存在,也不会报错

#方式一(表存在删除)
mysql> drop table t_student;
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+-----------------------+
| Tables_in_bjpowernode |
+-----------------------+
| bjpowernode |
| dept |
| emp |
| salgrade |
+-----------------------+
4 rows in set (0.00 sec)
#方式一(表不存在时删除)
mysql> drop table t_student;
ERROR 1051 (42S02): Unknown table 'bjpowernode.t_student'

mysql> create table t_student(no int,name varchar(32),sex char(1),age int(3),email varchar(255));
Query OK, 0 rows affected, 1 warning (0.02 sec)

#方式二(表存在时删除)
mysql> drop table if exists t_student;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+-----------------------+
| Tables_in_bjpowernode |
+-----------------------+
| bjpowernode |
| dept |
| emp |
| salgrade |
+-----------------------+
4 rows in set (0.00 sec)

#方式二(表不存在时候删除)
mysql> drop table if exists t_student;
Query OK, 0 rows affected, 1 warning (0.00 sec)

(3)插入数据

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

注意:字段名和值要一一对应(数量要对应、数据类型也要对应)

mysql> insert into t_student(no,name,sex,age,email) values(1,'张三','男',20,'[email protected]');
Query OK, 1 row affected (0.01 sec)

mysql> select * from t_student;
+------+------+------+------+-----------------+
| no | name | sex | age | email |
+------+------+------+------+-----------------+
| 1 | 张三 | 男 | 20 | [email protected] |
+------+------+------+------+-----------------+
1 row in set (0.00 sec)

mysql> select * from t_student;
+------+------+------+------+-----------------+
| no | name | sex | age | email |
+------+------+------+------+-----------------+
| 1 | 张三 | 男 | 20 | [email protected] |
| 1 | NULL | NULL | NULL | NULL |
+------+------+------+------+-----------------+
2 rows in set (0.00 sec)

#查看表中的数据及其默认值(可以在创建表的时候进行指定)
mysql> desc t_student;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| no | int | YES | | NULL | |
| name | varchar(32) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| age | int | YES | | NULL | |
| email | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)


#初始化指定默认值
mysql> create table t_student(no int,name varchar(32) default 'm',sex char(1),age int(3),email varchar(255));
Query OK, 0 rows affected, 1 warning (0.02 sec)

mysql> show tables;
+-----------------------+
| Tables_in_bjpowernode |
+-----------------------+
| bjpowernode |
| dept |
| emp |
| salgrade |
| t_student |
+-----------------------+
5 rows in set (0.00 sec)

mysql> desc t_student;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| no | int | YES | | NULL | |
| name | varchar(32) | YES | | m | |
| sex | char(1) | YES | | NULL | |
| age | int | YES | | NULL | |
| email | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)




注意:

① insert一旦执行成功,必然会多一条记录,如果为给其它字段指定值,默认值为null.

②在进行数据插入的过程中,字段名如果省略不写的话,默认就是全部,在values后要填写所有的值,不然就会报错。

mysql> insert into t_student values(2);
ERROR 1136 (21S01): Column count doesn't match value count at row 1

插入日期:

数字格式化:format(数字,‘格式’)

mysql> 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 |
+--------+-------+
14 rows in set, 14 warnings (0.00 sec)

str_date:将字符串varchar类型转化成date类型

        使用格式:str_date('字符串日期','日期格式')

功能

        将字符串转化为varchar转化为日期date类型的数据,通常使用在插入insert

方面,插入所需要的是一个日期类型,需要通过该函数来进行转化。

mysql日期格式:

   %Y:年    %m:  月   %d:  日    %h:  时    %i:  分   %s:  秒

使用演示:

mysql> insert into t_user(id,name,birth)values(1,'张飞',str_to_date('01-10-1990','%d-%m-%Y'));
Query OK, 1 row affected (0.01 sec)

mysql> select * from t_user;
+------+------+------------+
| id | name | birth |
+------+------+------------+
| 1 | 张飞 | 1990-10-01 |
+------+------+------------+
1 row in set (0.00 sec)

说明如果在进行插入日期时候,填写的格式是<%Y-%m-%d>,则不需要使用str_to_date()函数进行转化,因为它会自动将该varchar字符串转化为date类型数据。mysql> insert into t_user(id,name,birth)values(2,'张三','1996-10-12');

mysql> insert into t_user(id,name,birth)values(2,'张三','1996-10-12');
Query OK, 1 row affected (0.01 sec)

mysql> select * from t_user;
+------+------+------------+
| id | name | birth |
+------+------+------------+
| 1 | 张飞 | 1990-10-01 |
| 2 | 张三 | 1996-10-12 |
+------+------+------------+
2 rows in set (0.00 sec)

说明:默认展示格式“  %Y-%m-%d 

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

使用格式:date_format(日期类型数据,’日期格式 ‘);

应用场景:查询日期方面,设置展示的日期格式(日期转化为字符串)

需求:进行查询的时候将以某个特定统一格式展示

mysql> select id,name,date_format(birth,'%m/%d/%Y') as birt from t_user;
+------+------+------------+
| id | name | birt |
+------+------+------------+
| 1 | 张飞 | 10/01/1990 |
| 2 | 张三 | 10/12/1996 |
+------+------+------------+
2 rows in set (0.00 sec)

注意

数据库中的命名规范:

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

date和datetime两个类型的区分?

date是短日期,只包括年月日等基本信息。

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

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

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

在mysql中,如何获取系统的当前时间呢??------>now()      #带有时分秒

(4)修改数据

update(DML)

语法格式:

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

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

mysql> update t_user set name ='Jack',birth='1999-10-21' where id = 2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from t_user;
+------+------+------------+
| id | name | birth |
+------+------+------------+
| 1 | 张飞 | 1990-10-01 |
| 2 | Jack | 1999-10-21 |
+------+------+------------+
2 rows in set (0.00 sec)

(5)删除数据

delete(DML)

语法格式:delete from 表名 where 条件;

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

mysql> delete from t_user;
Query OK, 2 rows affected (0.01 sec)

mysql> select * from t_user;
Empty set (0.00 sec)

mysql> insert into t_user(id,name,birth)values(2,'张三','1996-10-12');
Query OK, 1 row affected (0.01 sec)

mysql> insert into t_user(id,name,birth)values(1,'张三','1995-10-12');
Query OK, 1 row affected (0.01 sec)

mysql> select * from t_user;
+------+------+------------+
| id | name | birth |
+------+------+------------+
| 2 | 张三 | 1996-10-12 |
| 1 | 张三 | 1995-10-12 |
+------+------+------------+
2 rows in set (0.00 sec)

mysql> delete from t_user where id=1;
Query OK, 1 row affected (0.00 sec)

mysql> select * from t_user;
+------+------+------------+
| id | name | birth |
+------+------+------------+
| 2 | 张三 | 1996-10-12 |
+------+------+------------+
1 row in set (0.00 sec)


标签:rows,name,0.00,MYSQL,笔记,学习,set,sec,mysql
From: https://blog.51cto.com/u_15314328/5728485

相关文章

  • 基于思维导图的情境游戏教学对学生在英语课程中的写作表现、学习感知和消化导出知识的
    基于思维导图的情境游戏教学对学生在英语课程中的写作表现、学习感知和消化导出知识的影响(Impactsofamindmapping-basedcontextualgamingapproachon EFLstuden......
  • 数论笔记
    倍数若\(a,b,k\in\mathbbN\),且\(a\timesk=b\),那么\(b\)是\(a\)的倍数,称\(a\)整除\(b\),记作\(a\midb\)。\([1,n]\)中\(x\)的倍数有\(\left\lfl......
  • 【从零学习经济学】经济学干货
    经济学-稀缺性经济学的40堂公开课1、边际效应(对同一件事物的满足感会随着次数增加而减少)=>分配时间做不一样的事情2、搭便车问题(指不付出的情况下享受了别人付出......
  • 技术领导力实战笔记(1)--技术管理者需要的五个核心能力
    技术总监能力模型 技术VP能力模型 首席架构师能力模型 CTO能力模型 ......
  • 反绎学习简介
    反绎学习@目录反绎学习1.逻辑推理与机器学习1.1逻辑推理1.2机器学习1.3逻辑推理与机器学习的传统结合2.反绎学习2.1一个小例子:玛雅历法2.2推广周志华2020CCF-GAIR......
  • 第五周学习笔记
    EXT2文件系统知识点归纳以及自己最有收获的内容1.EXT2文件系统Linux一直使用EXT2(Card等1995)作为默认文件系统;EXT3中增加的主要内容是日志文件;EXT4增加:磁盘块的分配;2.EX......
  • ROS-MoveIt学习记录
    教程古月居:7ROS理论与实践_.Moveit!机械臂控制_视频_哔哩哔哩_bilibili对应源码:Whiffe/arm-of-robot-using-Moveit-in-ros-gazebo-rviz(github.com)问题ImportErr......
  • markdown语法学习
    借鉴于别人:1:https://www.cnblogs.com/jaysonteng/p/12996671.html2:https://www.cnblogs.com/dzlua/p/11170373.html此文章对应效果:【点击这里】##什么是MarkdownMark......
  • day02-MySQL基础知识
    MySQL基础知识1.数据库1.1.创建数据库语法:CREATEDATABASE[IFNOTEXISTS]db_name[create_specification[,create_specification]...]create_specification:......
  • markdown语法学习预览
    借鉴于别人:1:https://www.cnblogs.com/jaysonteng/p/12996671.html2:https://www.cnblogs.com/dzlua/p/11170373.html此文章对应效果:【点击这里】什么是MarkdownMarkdow......