【MySQL】数据类型&建表

目录

数据库操作

1.选择要操作的数据库

2.查看当前选择(操作)的是哪个数据库

3.删除数据库

 4.查看MySQL的帮助

创建表

1 数值类型

 2.字符串类型

3.日期类型 

表的操作 

查看表结构

创建表

创建表中加校验

删除表

关于表的操作

拓展作业 


Q:如果我想创建一个名字为create 或 database的数据库,可不可以?

A:不可以,因为它们是MySQL的关键字。

A:MYSQL中允许开发者使用关键字命名,但是在使用的时候要用反引号把关键字引起来。反引号在键盘上的位置,ESC下边,TAB上边,1的左边,要用英文字符 。

使用其他的关键字的时候也是一样的,from\to\password\user 

数据库操作

1.选择要操作的数据库

use 数据库名[;]  

切换数据库成功; 

2.查看当前选择(操作)的是哪个数据库

  select database();

3.删除数据库

drop database [if exists] db _name;
表示删除  如果指定的数据库存在   要删除的数据库名

只要出现Query OK,就表示执行成功 

        在服务器(一般都是用Linux系统)上删除并没有回收站这么一说,删了就没有了但在是磁盘上删除文件,并不是真正意义上的什么都没有了

        还有一种恢复方式,就是通过日志来处理

        MYSQL在执行的过程中只要对数据库进行修改操作,都会把这些操作内容记录是日志中,如果误删了数据库,就可以通过日志快速把日志中记录的所有操作再执行一遍,完成恢复

        数据库也要定期备份,每天备份一次(增量备份,记录是今天比昨天新增的数据)/每周备份一次,全量备份

 4.查看MySQL的帮助

创建表

创建完数据库之后,就要在数据库中创建表,表中存储的数据记录,一条记录由不同的列组成
Q:每个列需要什么要的数据类型?


1 数值类型

分为整型和浮点型: 

  1. float和double类型,在表示小数的时候都不是特别精准,所以用decimal类型去表示小数
  2. 在有些系统中表示金额,一般把元为单位换成以分为单位,然后用int类型去表示金额 
  3. M中不计算小数符号和负数的位数的,如果D为0,则具体的值不保存小数点和小数部分(也就是说保存的是一个整数)
  4. DECIMAL的最大位数(M)为65,支持最大的小数(D)为30
  5. 如果省略D,则默认为0;如果省略M,则默认为10
  6. 同学们只要知道DECIMAL可以保存很大的数就行了,根据自己项目中的要求设置小数精度 

 2.字符串类型


varchar(10)    指定的是字符串的长度,不是字节的大小
也就说这样定义一个字段,字段可以存放10个和10以内的字符,超过10个字符就报错之前

我们设置了数据库的编码集utf8mb4编码集,一个符最多占4个字节,根据字符的具体情况用1-4个字节表示一个字符 

Q:一个varchar范围为0-65.535字,在utf8mb4编码集的情况下,一个varchar字段最多可以存放多少个字符?
A:考虑极端情况,65535/4=16383

一般在数据库中,不建议存文件,而是把文件存在磁盘上,在数据库相应的字段中保存文件路径

在查询文件的时候,先从数据库中找到文件路径,再去根据文件路径在磁盘上加载或是返回具体的真实文件 

文本文件:人类可以直接看懂的文件,比如有记事本里面写的日记,配置文件,JAVA源代码(window系统中默认后缀为txt)

二进制文件:我们用文本编辑器打开的文件,里面是一堆乱码,这些文件只有机器可以读的懂,一般称之为二进制文件 

3.日期类型 

TIMESTAMP: 时间戳,以毫秒为单位计时

在之前计算机资源非常紧缺的时候,内存中用00 01 21这种类型去表示年份

到了上世纪90年代,大家就发现这个问题非常严重
99+1-->00(千年虫)

表的操作 

需要创建表时,先要选择要操作的数据库

use 数据库名 ;

查看表结构

desc 表名; 

  • key:键值的类型,外键(foreign key),主键 (primary key)
  • defult:当前列的默认值,什么都不指定的时候就是null
  • extra:其他的一些拓展内容

创建表

语法:

CREATE TABLE table_name (
                field1 datatype,
                field2 datatype,
                field3 datatype
);
  • 以后要计算机上对任何目标起名字,都不要用中文
  • 这个是一个类 instance = new 这是一个类();
  • 可以使用comment增加字段说明,每个字段后都可以加注解.
  • 字段定义小括号进行包裹,最后一个语句之后不要加逗号(,)

示例: 创建一个名字为student的学生表,表中只包含两个字段,id 表示编号, name 表示姓名,长度为50

create table student(

        id bigint,

        name varchar(50)

);

  • 强烈建议每张表中都要设计一个编号字段,数据型为bigint
  • varchar的长度记得要指定,当前这个长度是我们拍脑门拍出来的,实际工作中要根据详细设计文档中的描述转换为代码就可以了
  • show tables;查看当前数据库中有哪些表,注意tables是一个复数形式
     

命令行客户端工具,只执行一些简单的查询或是指令,如果一两句SQL可以搞定就在这里面去执行如果说要编复杂的SQL,比如表设计,复杂查询,建议大家还是去可视化工具中编写


如果在可视化编辑工具中把创建表的SQL编写好了,如何在命令行工具中执行?

在编辑器中把SQL编辑好之后,保存为一个本地的.sql文件

D:\databaselstu_test.sql
 

创建表中加校验

create table if not exists表名(

        字段数据类型
);
和之前创建数据库是一样的写法
 

删除表

语法格式:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... 

库名.表名来指定一张表在MYSQL服务中的完全路径
 

关于drop一定要谨慎操作
删除表之后,很难第一时间被发现,删除表的危害并不亚于删除库
删除库之后,我们的程序在运行的过程中就连不上数据库了,只要发现问题就会及时报警,以便修复问题


关于表的操作

1.show tables;查看当前数据库中所有的表

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

字段名2   数据类型

);
3.desc表名;     查看表结构

4.drop table [if exists] 表名;
 

拓展作业 

有一个商店的数据,记录客户及购物情况,有以下三个表组成:

商品goods(商品编号goods_id,商品名goods_name, 单价unitprice, 商品类别category, 供应商provider)

客户customer(客户号customer_id,姓名name,住址address,邮箱email,性别gender,身份证 card_id)

购买purchase( 购买订单号 order_id, 客户号 customer_id, 商品号 goods_id, 购买数量 nums)

--创建数据库

drop database if exists mall; 

create database mall character set utf8mb4 collate utf8mb4_0900_ai_ci;

--选择数据库

use mall; 

--创建商品表

drop table if exists goods;

create table goods(

   goods_id bigint,

   goods_name varchar(50),

   unitprice decimal(10,2),

   category varchar(20),

   provider varchar(50) 

);

--创建客户表

drop table if exists purchase;

create table purchase(

  customer_id bigint,

  name varchar(20),

  address varchar(50),

  email varchar(255),

  gender bool,

  card_id varchar(18) 

);

--创建购买记录表

drop table if exists customer;

create table customer(

   order_id bigint,

   customer_id bigint,

   goods_id bigint,

   nums int

);

TIP:

(1)bool=tinyint;

(2)取别名用comment;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值