MySQL数据库2

本文介绍了如何使用SQL创建和删除数据库,包括指定字符集和校对规则。还讨论了如何查看数据库信息,以及如何在不同数据库中创建表。此外,提到了数据库和表的备份与恢复过程,并详细阐述了MySQL的数据类型,如整型、浮点型、字符串和日期类型。最后,展示了如何修改表结构,包括添加、修改和删除列以及更改表名和字符集。
摘要由CSDN通过智能技术生成

7. 数据库

7.1 创建数据库

在这里插入图片描述

  • 用SQLyog创建在3.1演示过,就不演示了,下面演示代码创建
#演示数据库的操作
#创建一个名称为hsp_db01的数据库。
#使用指令创建数据库
CREATE DATABASE hsp_db01;#不指定字符集和校对规则 则为默认
#删除数据库指令
DROP DATABASE hsp_db01

#创建一个使用utf8字符集的hsp_db02数据库
CREATE DATABASE hsp_db02 CHARACTER SET utf8
#创建一个使用utf8字符集,并带校对规则的hsp_db03数据库
CREATE DATABASE hsp_db03 CHARACTER SET utf8 COLLATE utf8_bin
#校对规则 utf8_bin 区分大小写,默认 utf8_general_ci 不区分大小写

#下面是一条查询的sql,
#SELECT:查询;*:所有字段;FROM:从哪个表查
#WHERE:从哪个字段查;NAME='tom':查询名字是tom的
SELECT * FROM t1 WHERE NAME = 'tom'
  • 上述代码要执行哪一条语句就要选中那一条语句,然后点击执行查询才会执行。执行完创建数据库后,要点击刷新对象浏览器才会看到

在这里插入图片描述

  • 如果要在数据库 hsp_db02 和 hsp_db03 中创建一个表,如果没有指定表的字符集和字符集校对规则,那么表的字符集和校对规则与对应的数据库保持一致,而不是按照默认规则指定。比如 hsp_db03 中创建一个没有指定字符集和校对规则的表,则表的字符集为uft8,校对规则为 utf8_bin,hsp_db02 则分别为 utf8 和 utf8_general_ci

  • 对上面最后一条语句的解释:hsp_db02 数据库的字符集校对规则为默认的 utf8_general_ci,它是不区分大小写的。而 hsp_db03 数据库的校对规则是设置了的 utf8_bin,区分大小写。所以如果在 02 和 03 数据库下面分别创建两个表,然后添加相同的内容如下:

在这里插入图片描述

在这里插入图片描述

在两个数据库下分别执行一次最后一条语句,结果如下:

在这里插入图片描述

在这里插入图片描述

7.2 查看、删除数据库

在这里插入图片描述

#演示删除和查询数据库

#先创建一个数据库hsp_db01
CREATE DATABASE `hsp_db01`

#查看当前数据库服务器中的所有数据库。注意下面的DATABASES,末尾有S。
SHOW DATABASES
#查看前面的hsp_db01数据库的定义信息
SHOW CREATE DATABASE `hsp_db01`
#注意:在创建数据库(表)时,为了规避关键字,可以使用反引号解决。反引号在Esc键下面
#      如果创建的数据库的名称不是一个关键字,那么就可以不用` `包围。
#创建一个以关键字create为名的数据库
CREATE DATABASE `create`

#删除前面创建的hsp_db01数据库
DROP DATABASE hsp_db01

7.3 备份、恢复数据库

在这里插入图片描述

  • 备份数据库指令一定要在DOS界面下执行;备份数据库里面的数据库1、数据库2… 表示可以同时备份多个数据库;> 后的文件名表示要备份到哪个文件下,可以是路径。

在这里插入图片描述

在这里插入图片描述

  • 恢复数据库,一定要在MySQL命令行再执行,切换到MySQL命令行指令(DOS下):

    mysql -u root -p
    

在这里插入图片描述

  • 恢复数据库还有一个方法,直接将备份文件bak.sql的内容放到查询编辑器中,然后全选并执行

在这里插入图片描述

7.4 备份、恢复数据库的表

在这里插入图片描述

  • 注意:上面的 -p 后面的密码可以不写,不写的话回车后就要输入一次就行,写了就不用输入了;这里没有备份库时候的 -B ,如果不小心写了-B,那么系统就会把后面的表1、表2也当做数据库。

在这里插入图片描述

#SQLyog中的删除表
DROP TABLE t1;

8. 表

8.1 创建表

public class homework01 {    
    public static void main(String[] args) throws Exception {
        //1.得到File类的Class对象        
        Class<?> fileClass = Class.forName("java.io.File");        
        //2.得到File类的所有构造器        
        Constructor<?>[] declaredConstructors = fileClass.getDeclaredConstructors();        
        for (Constructor<?> declaredConstructor : declaredConstructors) {
            System.out.println("File的构造器:" + declaredConstructor);        
        }        
        //3.创建File对象        
        //3.1 先得到一个构造器        
        Constructor<?> constructor = fileClass.getConstructor(String.class);        
        //3.2 实例化一个File对象        
        Object o = constructor.newInstance("d:\\mynew.txt");//        
        //我自己的方法:o的编译类型是 Object,运行类型是File,所以向下转型后才能调用.createNewFile()
        //        File file = (File)o;
        //        file.createNewFile();
        //创建成功        
        //3.3 得到createNewFile()的方法对象        
        Method createNewFile = fileClass.getMethod("createNewFile");        
        //3.4 调用方法并创建文件        
        createNewFile.invoke(o);    
    }
}
  • 图形化不再多说,因为操作太简单了,下面只讲指令创建

在这里插入图片描述

  • 注意:创建表的时候一定要指明在哪个数据库下创建。上图在hsp_db03数据库下创建的

8.2 MySQL常用数据类型(列类型)

  • MySQL数据类型就是MySQL列类型,指的就是下面的红框。

在这里插入图片描述

在这里插入图片描述

  • 数值类型

    • 整型:
      1. tinyint(1个字节)
      2. smallint(2个字节)
      3. mediumint(3个字节)
      4. int(4个字节)
      5. bigint(8个字节)
    • 小数类型:
      1. float(单精度,4个字节)
      2. double(双精度,8个字节)
      3. decimal (M,D)(大小由M和D确定)
  • 文本类型

    • 字符串:

      1. char(0-255)
      2. varchar(0-65535(0-2^16-1))
    • 文本:

      1. text(0-2^16-1)
    • 二进制数据:

      1. longtext(0-2^32-1)
  • 二进制数据类型

    1. blob(0-2^16-1)
    2. longblob(0-2^32-1)
  • 日期类型

    1. date(日期:年月日)
    2. time(时间:时分秒)
    3. datetime(年月日 时分秒:YYYY-MM-DD HH:mm:ss)
    4. timestamp(时间戳),可以自动更新
    5. year(年)
8.2.1 数值类型
  • 整型

在这里插入图片描述

在这里插入图片描述

  • bit类型(位类型)

在这里插入图片描述

在这里插入图片描述

  • 小数类型

在这里插入图片描述

在这里插入图片描述

8.2.2 字符串类型

在这里插入图片描述

  • 注意:char 是实实在在可以表示最大长度为255个字符的字符串;而varchar,它有最大65535个字节,但是有1-3个字节用来记录varchar的大小,因此实际用于存放字符串的长度为65535-3个字节,uft8 编码中,3个字节表示一个字符,因此可以表示长度为 65532/3=21844 的字符串,GBK 编码中,2个字节表示一个字符,因此可以表示长度为 65532/2=32766 的字符串。
  • 下面的演示中 255、21844 和 32766 均指的是字符串长度(也即字符容量),不是字节:

在这里插入图片描述

  • 字符串类型使用细节:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 注意:上面的红框是因为text中,utf8编码下,一个中文字符用3个字节表示,数字和符号(~)用一个字节表示。
8.2.3 日期类型

在这里插入图片描述

在这里插入图片描述

  • 上面的程序在DOS下执行流程:

在这里插入图片描述

8.2.4 创建表练习

在这里插入图片描述

  • SQLyog中:

在这里插入图片描述

  • DOS下:

在这里插入图片描述

8.3 表的修改

在这里插入图片描述

  • 案例(重点):

在这里插入图片描述

#修改表的课堂练习(8.2.4已经创建好了emp表)
SELECT * FROM employee;		#显示表(修改表名4后用employee)
DESC employee   		#显示表结构,可以查看表的所有列

-- 1.增加一个image列		
ALTER TABLE emp 
	ADD image VARCHAR(32) NOT NULL DEFAULT '' #不允许为null值,默认是一个空字符''
	AFTER `resume`

-- 2.修改job列,使其长度为60
ALTER TABLE emp
	MODIFY job VARCHAR(60) NOT NULL DEFAULT '' #不允许为null这个也可以不写
	
-- 3.删除sex列
ALTER TABLE emp DROP sex
	
-- 4.表名改为employee
RENAME TABLE emp TO employee

-- 5.修改表的字符集为utf8
ALTER TABLE employee CHARACTER SET utf8
	
-- 6.列名name修改为user_name
ALTER TABLE employee CHANGE `name` `user_name` VARCHAR(32) NOT NULL DEFAULT ''
  • 注意:NOT NULL DEFAULT ‘’ 的意思是不允许为空值,默认为一个空字符串(都在 VARCHAR 后面加的);上面只有修改表名没有用到 ALTER

在这里插入图片描述

  • DOS下如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值