0
点赞
收藏
分享

微信扫一扫

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,'zhang123@qq.com');
Query OK, 1 row affected (0.01 sec)

mysql> select * from t_student;
+------+------+------+------+-----------------+
| no | name | sex | age | email |
+------+------+------+------+-----------------+
| 1 | 张三 || 20 | zhang123@qq.com |
+------+------+------+------+-----------------+
1 row in set (0.00 sec)

mysql> select * from t_student;
+------+------+------+------+-----------------+
| no | name | sex | age | email |
+------+------+------+------+-----------------+
| 1 | 张三 || 20 | zhang123@qq.com |
| 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)


举报

相关推荐

0 条评论