MySQL 数据库基础知识

1 数据库的操作

  1. 显示当前有的数据库
    show databases;

执行结果如下图所示:在这里插入图片描述

  1. 选中数据库
    当你在使用某个数据库的时候,一定得先选中,命令行语句为:
    use 数据库名;

  2. 查看当前选中的这个数据库中是否有表
    show tables;

  3. 删除数据库
    数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除。
    drop database 数据库名;

  4. 创建数据库
    语法:
    create database [if not exists] db_name [create_specification [,create_specification] ...]
    create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name
    说明:
    a. [ ] 是可选项。
    b. CHARACTER SET: 指定数据库采用的字符集。
    c. COLLATE: 指定数据库字符集的校验规则。
    示例:
    (1)创建名为 db_test1 的数据库:
    create databas db_test1
    说明: 当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ci
    (2)如果系统没有 db_test2 的数据库,则创建一个名叫 db_test2 的数据库,如果有则不创建:
    create database if not exists db_test2
    (3)如果系统没有 db_test 的数据库,则创建一个使用utf8mb4字符集的 db_test 数据库,如果有则不创建:
    create database if not exists db_test character set utf8mb4;
    说明:MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符。MySQL真正的utf8是使用utf8mb4,建议大家都使用utf8mb4。

  5. 在MySQL当中进行注释操作
    -- 空格 注释内容
    例如注释一下“创建数据库”这句话 :-- 创建数据库

同时大家注意:MySQL是不区分大小写的。

2 常用数据类型

这里的数据类型是指,在创建表的时候,表中的字段的数据类型。

2.1 数值类型

分为整型和浮点型:

数据类型大小说明对应Java类型
BIT[ (M) ]M指定位数,默认为1二进制数,M范围从1到64,存储数值范围从0到2^M-1常用Boolean对应BIT,此时默认是1位,即只能存0和1
TINYINT1字节Byte
SMALLINT2字节Short
INT4字节Integer
BIGINT8字节Long
FLOAT(M, D)4字节单精度,M指定长度,D指定小数位数。会发生精度丢失Float
DOUBLE(M,D)8字节Double
DECIMAL(M,D)M/D最大值+2双精度,M指定长度,D表示小数点位数。精确数值BigDecimal
NUMERIC(M,D)M/D最大值+2和DECIMAL一样BigDecimal

注:
(1) M代表有效长度,13.45的M是4。
(2) D代表小数点后几位。例如:DECIMAL(4,2)能否存储123.4这样的数据?不可以,因为实际上会被解析为123.40,此时M将变为5。
(3) 数值类型可以指定为无符号(unsigned),表示不取负数。
(4) 1字节(bytes)= 8bit。对于整型类型的范围:

  1. 有符号范围:
    -2^(类型字节数 * 8-1) 到 2 ^(类型字节数 * 8-1)-1,如int是4字节,就
    是-2^ 31到2^31-1。
  2. 无符号范围:
    0到2^(类型字节数*8)-1 ,如int就是2^32-1。

(5)尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。

2.2 字符串类型

数据类型大小说明对应Java类型
VARCHAR (SIZE)0-65,535字节可变长度字符串String
TEXT0-65,535字节长文本数据String
MEDIUMTEXT0-16 777 215字节中等长度文本数据String
BLOB0-65,535字节二进制形式的长文本数据byte[ ]

2.3 日期类型

数据类型大小说明对应Java类型
DATETIME8字节范围从1000到9999年,不会进行时区的检索及转换。java.util.Date、java.sql.Timestamp
TIMESTAMP4字节范围从1970到2038年,自动检索当前时区并进行转换。java.util.Date、java.sql.Timestamp

3 表的操作

需要操作数据库中的表时,需要先使用该数据库:
use 数据库名;

  1. 创建表
    语法:
    CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype );
    示例:
    create table stu_test ( id int, name varchar(20) , password varchar(50), age int, sex varchar(1), birthday timestamp, amout decimal(13,2), resume text );
    可以使用comment增加字段说明。例如:
    create table stu_test ( id int, name varchar(20) comment '姓名', password varchar(50) comment '密码', age int, sex varchar(1), birthday timestamp, amout decimal(13,2), resume text );

  2. 显示表
    show tables;

  3. 显示表结构
    desc 表名;
    执行结果如下图所示:
    在这里插入图片描述

  4. 删除表
    drop table 表名

    drop table if exists 表名;

4 练习题

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

  1. 商品goods(商品编号goods_id,商品名goods_name, 单价unitprice, 商品类别category, 供应商provider)
  2. 客户customer(客户号customer_id,姓名name,住址address,邮箱email,性别sex,身份证card_id)
  3. 购买purchase(购买订单号order_id,客户号customer_id,商品号goods_id,购买数量nums)

SQL语句解答如下:

-- 创建数据库
create database if not exists bit32mall
default character set utf8 ;
-- 选择数据库
use bit32mall;
-- 创建数据库表
-- 商品
create table if not exists goods
(
   goods_id  int comment '商品编号',
   goods_name varchar(32) comment '商品名称',
   unitprice  int comment '单价,单位分',
   category  varchar(12) comment '商品分类',
   provider  varchar(64) comment '供应商名称'
);
-- 客户
create table if not exists customer
(
   customer_id  int comment '客户编号',
   name varchar(32) comment '客户姓名',
   address  varchar(256) comment '客户地址',
   email  varchar(64) comment '电子邮箱',
   sex bit comment '性别',
   card_id varchar(18) comment '身份证'
);
-- 购买
create table if not exists purchase
(
   order_id  int comment '订单号',
   customer_id int comment '客户编号',
   goods_id  int comment '商品编号', 
   nums  int comment '购买数量'
);
  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值