数据库

数据库

一,数据库

按照数据结构组织和存储管理数据的仓库,长期存储在计算机内,有组织的,可共享的,统一管理的大量数据的集合。

数据:

最宝贵的财富,需要对数据进行管理,运算,流转,存储展示,

最重要的功能就是存储数据,长期保存数据,

数据的含义称为数据的语义,数据与语义是不可分的

MySql:

关系型数据库管理系统,使用sql语言

体积小,速度快,成本低,开源

基本操作

登录:cmd 

mysql -h 127.0.0.1 -p3306 -u用户名 -p密码

MYSQL是一个数据库管理系统,管理多个数据库

创建数据库

create datatbase 数据库名;

create schema 数据库名;

查看数据库

show databases;

选择使用数据库

use 数据库名;

添加主键

alter table 表名 CONSTRAINT PK_表名 PRIMARY KEY 表名(列名)

添加外键

alter table 从表 add CONSTRAINT fk_从表_主表 foreign key 从表(外键字段) REFERNCES 主表(外键字段)

 

二,SQL语言

SQL是一种特殊的编程语言,是一种数据库查询和程序设计语言,用于存储数据以及查询,更新,管理关系型数据库系统

sql分类

DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别

DDL(Data Definition Language):数据库定义语言,用来定义数据库对象:库,表,字段(列);功能:创建,删除,修改库和表结构

DML(Data Manipulation Language):数据操作语言,用来定义数据的增删改查记录

DQL(Data Query Language):数据库查询语言,用来查询记录

TCL(Transition Control Language):事务控制语言,用来管理事务,commit

DCL(数据库控制语言)

创建用户

创建一个用户,只能在指定ip上登录mysql

create user '用户名'@'IP地址' identified by '密码';

创建一个用户,可在任意ip上登录mysql

create user '用户名'@'%' identified by '密码';

修改密码

-- 5.7版本

set password for 用户名@'%' = password('新密码');

-- 8.0版本

set password for 用户名@'%' = '新密码';

给用户授权

给指定用户在指定数据库上赋值指定权限

  • create:创建数据库
  • select:查询数据
  • delete:删除数据
  • update:修改数据
  • insert:插入数据

-- 语法 grant `权限1,权限2` on 数据库名.表名 to 用户名@IP地址

grant 权限1,权限2` on 数据库名.* to 用户名@IP地

grant all on 数据库名.* to 用户名@IP地

撤销授权

-- 语法 revoke all on `表名`.* from `用户名`@`%`;

查看权限

-- 语法 show grants for 用户名@IP地址

删除用户

-- 语法 drop user '用户名'@'%';

 

DDL(数据定义语言)

DDL主要用在定义或改变表的结构

创建表  

create table 表名{
    列名1 类型(范围) 约束条件 primary key,
    列名2 类型(范围) 约束条件,
};

数据类型

整形:

MySql数据类型 含义
tinyint 一个字节,范围(-128~127)
smallint 2个字节,范围(-32768~32767)
mediumint 3个字节,范围(-8388608~8388607)
int 4个字节,范围(-2147483648~2147483647)
bigint 8个字节,范围(-9223372036854775808~9223372036854775807)

unsigned关键字:

定义为无符号类型,(tinyint unsinged)的取值范围0~255

长度需要配合zerofill

int(4) unsinged zerofill

上述int长度为4,设置了zerofill ,如果数据是1,表格中数据格式位0001,0100,0010

浮点型

MySql数据类型 含义
float(m,d) 4字节,单精度浮点型,m总长度,d小数位
double(m,d) 8字节,双精度浮点型,m总长度,d小数位
decimal(m,d) 存储为字符串的浮点数,对应java的BigDecimal

例:定义float(5.3)

  插入123.45678,查询得到的99.999

  插入12.3456789,查询得到12.346

使用浮点型时,以插入到数据库中的实际结果为准

字符串类型

MySql数据类型 含义
char(n) 固定长度,最多255个字符,1-8000字节
ncahr(n) 固定长度,1-4000字节
varchar(n) 可变长度,最多65535个字符,1-8000字节
nvarchar(n) 可变长度,1-4000字节
tinytest 可变长度,最多255个字节
test 可变长度,最多65535个字节,1-2147483647
mediumtest 可变长度
longtest 可变长度

char和nchar:

char(n)n个字节,可存n个字母,符号或n/2汉字

nchar(n)在存储时,可存n个字母,符号或n个汉字,存储大小可为n字节的双倍

varchar和nvarcahr:

varchar:可变长度

nvarchar:可变长度,并且它可能为 1 到 4,000 之间的值。 max 指示最大存储大小是 2^30-1 个字符 (2 GB)。 存储大小为 n 字节的两倍 + 2 个字节。

binary [ ( n ) ]

长度为 n 字节的固定长度二进制数据,其中 n 是从 1 到 8,000 的值。 存储大小为 n 字节。

varbinary [ ( n | max) ]

可变长度二进制数据。 n 的取值范围为 1 至 8,000。 max 指示最大存储大小是 2^31-1 个字节。 存储大小为所输入数据的实际长度 + 2 个字节。 所输入数据的长度可以是 0 字节。 varbinary 的 ANSI SQL 同义词为 binary varying。

数据类型 何时使用...
binary 列数据项的大小一致。
varbinary 列数据项的大小差异相当大。
varbinary(max) 列数据条目超出 8,000 字节。

comment:

sql中的注释

sno INT(6) PRIMARY KEY AUTO_INCREMENT COMMENT '序号'

 

日期类型

MySql数据类型 含义
date 3字节,格式:2022-08-01
time 3字节,格式:10:54:30
datatime 8字节,格式:2022-08-15 10:45:20
timetamp 4字节,时间戳,毫秒数
year 1字节

 

三,对表的修改

查看表

show tables

查看表结构

desc 表名

修改表 alter table 表名

  • 添加一个列  alter 表名 add (列名 类型 约束条件  位置,列名 类型 约束条件  位置)
  • 修改列数据类型

    alter table 表名 MODIFY 列名 类型

  • 修改名称和数据类型

    alter table 表名 change 列名 类型

  • 删除列

    alter table 表名 drop 列名

  • 修改表名

    alter table 表名 rename 新表名

  • 删除表

    drop  table if exisit 表名 

DML(数据操作语言)

该语言来对表记录进行操作,增删改

插入数据

insert into 表名 (列名1,列名2)

values(数据1,数据2 ),

(数据3,数据4)

修改数据

update 表名 set 列名 = ‘数据1’,列名2 = ‘数据2’

where 查询条件

删除数据

delete from 表名

where 查询条件

delete 删除的数据(有主键,递增),该位置的不会再添加,会断档,只会在最后位置后面添加

  截断:应属于DDL语言,操作立即执行,不能撤回

    TRUNCATE 表名;

    不能加条件,可以把数据清空,从头开始,速度快,效率高

    TRUNCATE 和delete都是删除数据,drop是删除整个表

    TRUNCATE 和delete都不会使表结构及其列,约束,索引发生改变

posted @   一只神秘的猫  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示