MySql数据库入门

5 篇文章 0 订阅
本文详细介绍了各类数据库,包括网状、层次、关系和非关系型,以及常见数据库如Oracle、MySQL等。同时,讲解了数据库操作,如DDL、DML、DCL,涉及创建、删除、修改表及用户权限管理。还提到了MySQL的数据类型,如整数、小数、字符串和日期类型,并介绍了相关操作。此外,文章还讨论了如何选择合适的数据类型以及日期时间的处理函数。
摘要由CSDN通过智能技术生成

常见的数据库类型:             

网状结构数据库:美国通用电气公司IDS(Integrated Data Store),以节点形式存储和访问。

层次结构数据库:IBM公司IMS(Information Management System)定向有序的树状结构实现存储和访问。

关系结构数据库:Oracle、DB2、MySQL、SQL Server,以表格(Table)存储,多表间建立关联关系,通过分类、合并、连接、选取等运算实现访问。

非关系型数据库:ElastecSearch、MongoDB、Redis,多数使用哈希表,表中以键值(key-value)的方式实现特定的键和一个指针指向的特定数据。

常用的数据库

Oracle: 大型重量级数据库

SqlServer:微软的数据库

MySql:开源轻量级数据库

DB2:IBM推出的商业数据库

SQLLite:嵌入式数据库

常见的UI工具

Navcat:是以直觉化的图形用户界面而建的

SQLyog:提供了完整的图形界面

Datagrip:idea中的专门的数据库操作工具

数据库操作:

                DDL

                        创建数据库

create databas <数据库名>

        查看数据库

show databases;

切换数据库

use <数据库名>

删除数据库

drop <数据库名>

查看状态

status

表的操作

        创建表(表的命名规范要使用蛇形命名法,词与词之间要使用_分割,都要是小写)

create table <表名>(字段1 类型1,字段2 类型2)

删除表

drop table <表名>

添加字段

-- 选中一个表,给它添加一个字段和类型
alter table <表名> add <要添加的字段> <添加的字段类型>

-- 选中一个表,在指定字段后面添加
alter table <表名> add <要添加的字段> <添加的字段类型> after <要添加的位置>

修改字段

alter table <表名> change <要修改的字段> <修改的类型>

删除一个字段

alter table <要删除的表名> drop <要删除的字段>

重命名表

alter table <要修改的表名> raname <修改后的名字>

清除表中的数据

truncate <要清除的表名>

DMl(增删改查)

插入数据

insert into <表名>(列1,列2) values (值1,值2)

                如果将列隐藏,那就意味着插入所有的列,主要列的顺序要和创建表的顺序一致

更新数据

update <表名> set 列名1 = 值1, 列名2 = 值2 where 列=值

删除数据

delete from <表名> where 列=值

查询

select * from <表名>

DCL

        创建一个新用户

create user `xiaoming`@`localhost` identified with mysql_native_password BY '123';

        查看用户(从mysql数据中的user表中进行查询)

select user, host from mysql.user;

        给用户授权

grant all on testdb .* to 'xiaoming'@'localhost';

        撤销所有的权限

revoke all on testdb.* from 'xiaoming'@'localhost';  

MySql的数据类型

        整数类型(支持无符号)

                tinyint:1个字节

                smallint:2个字节

                mediumint:3个字节

                int(integer)占4个字节

                bigint:8个字节

create table tb_user(
    id tinyint, -- 有符号的,范围是-128-127
    age tinyint unsigned -- 无符号的,范围是0-255
);

小数类型

float:单精度,4个字节

double:双精度,8个字节

declmal:根据整数部分和小数部分决定

字符串类型

  • char类型:长度是不可变的,最大值范围只能是0-255

    • 无论插入的数据是多长,那么都是固定长度

    char(50) 插入数据是'小明',大小还是50
  • varchar类型:长度是可以变的,最大值的访问0-65535

    • 插入的数据数据的长度是根据最终插入数量决定的

    varchar(50) 插入'小明明天' ,大小是2+4
  • MEDIUMTEXT:中等字符串0-16777215

  • Long类型,就是longtext的缩写,字符串类型,存储的值0-4294967295

  • Blob:存在的是二进制类型对应的byte类型,例如图片,音频等等

char 和 varchar 以及 text

  • char 和 varchar中括号的n代表可以存多少个字符

    • char可以存放255个字符

    • varchar最多可以存放16383个字符(65535/4)

      • 需要2个字节存放当前字符的长度

      • 还需要1个字节用于存放null字符串

      • 最终可以存放的字节是65535-2-1

  • 最终占多数个字节和当前字段的编码有关系

latin1: 单字符最大占 1个字节
gbk:单字符最大可占用 2个字节
utf8:单字符最大可占用 3个字节
uth8mb4:单字符最大占 4个字节
create table tb_user(
    name varchar(65534)
)charset = latin1;
  • 如何选择

    • 如果当前字段,不长而且长度是固定的就选择char类型,例如:手机、身份证

    • 如果当前的字段,超过了5000的字,直接使用text类型,并且还需要分表

    create table tb_new(
       nid int,
       title varchar(200)
    );
    create table tb_new_detail(
       nid int,
       detail text
    );

    其他任何情况都使用varcha

日期类型

        主要分为日期和时间

                日期是:年月日

                时间是:时分秒

Date 是日期

Time 是时间

Datetime 是时间日期

create table tb_user(
    uid int,
    birthday date, -- 时期
    created datetime, -- 日期时间
    begin time -- 时间
);
-- 插入数据,now()是一个函数用于存储当前的时间
insert into tb_user values(1,'1999-12-3',now(),'9:00:00');
  • TIMESTAMP时间戳(可以实现自动更新和默认值的功能)

  • create table tb_user(
        uid int,
        birthday date, -- 时期
        created datetime, -- 日期时间
        begin time, -- 时间
        lastupdate timestamp default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    );

时间的常用函数

select month(birthday) from tb_user; -- 可以获取月份
select year(birthday) from tb_user; -- 可以获取年份
select day(birthday) from tb_user; -- 可以获取日份
select week(birthday) from tb_user; -- 本年的第几周
select weekday(birthday) from tb_user; -- 获取星期几

两个日期间隔的年月日

xxxxxxxxxx --  两个日期之间的天数
select 
DATEDIFF(now(),birthday) from tb_user;-- 两个日期之间的月份
select 
PERIOD_DIFF(date_format(now(),'%Y%m'),date_format(birthday,'%Y%m')) from tb_user;-- 两个日期的年份
select 
YEAR(now()) - YEAR(birthday) from tb_user;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值