首页 > 其他分享 >2022-08-15 第二小组 张鑫 学习笔记

2022-08-15 第二小组 张鑫 学习笔记

时间:2022-08-15 16:34:01浏览次数:50  
标签:15 字节 张鑫 08 数据库 aut varchar 数据 id

实训三十七天 Mysql

1.学习重点

1.数据库
2.MySQL
3.SQL语言

2.学习心得

今天开始了数据库的学习,通过月测验我发现我存在很多知识上的欠缺,这都是平时每天的基础没有完全掌握,日积月累就会产生很大问题,所以我希望能够把数据库的开头打好,有时间的话要经常查缺补漏。

3.学习内容

数据库

数据库【按照数据结构来组织,存储和管理数据的仓库】

是一个长期存储在计算机内的有组织的可共享的统一管理的大量的数据的集合

数据对于公司来说是最宝贵的,程序员的工作就是对数据进行管理,包括运算、流转、存储、展示等,数据库最重要的功能就是【存储数据】,长期保存数据

Mysql

MySQL是一个【关系型数据库管理系统】
MySQL使用了一种语言【SQL语言】
MySQL分为社区版和商业版,体积小、速度快、成本低、开源


基本操作
MySQL保存数据的模式

1.创建一个数据库
2.在数据库中保存多张表
3.在每张表中保存多条数据

登录mysql
mysql - h 127.0.0.1 -p3306 -uroot -p

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

创建数据库(管理员)
create database 数据库名;
create schema 数据库名;
查看所有数据库
show databases;
使用数据库
use 数据库名;

用来存储数据的对象,是有结构的数据的集合

  • 行:一行即为一条数据,数据库一共有多少条数据,实际上就是有几行数据
  • 列:一列即为一个字段,数据库一共有多少个字段,实际上就是有几列数据

SQL语言

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

SQL分类
  • DCL(Data Contro lLanguage):数据控制语言,用来定义访问权限和安全级别
  • DDL(Data Deflinition Language):数据定义语言,用来定义数据库对象:库,表,字段(列)。功能:创建,删除,修改数据库和表的结构
  • DML(Data Manipulation Language):数据操作语言,用来定义数据的增删改记录
  • DQL(Data Query Language):数据库查询语言,用来查询记录
  • TCL(Transition Control Languague):事物控制语言,用来管理事物

DCL(数据库控制语言)

创建用户

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

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

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

create user 'moon'@'%' identified by 'root';
修改密码

-- 5.7版本需要使用password对密码进行加密

set password for moon@'%' = password('新密码');

-- 8.0版本直接赋值

set password for moon@'%' = '新密码';
给用户授权

给指定用户在指定数据库上赋予指定权限,权限有很多,列举几个常用的

create:可以创建数据库
select:删除数据
delete:删除数据
update:修改数据
insert:插入数据

--语法:grant 权限1,权限2,...权限n on 数据库名.表名(*) to 用户名@IP地址

grant select,insert,update on `jsoft`.`user` to`moon`@`%`;

注意:着重符不是单引号

撤销授权

--语法:revoke 权限1,权限2,...权限n on 数据库名.表名(*) from 用户名@IP地址

revoke all on `jsoft`.* from `moon`@`%`;
查看权限

查看指定用户的权限
--语法:show grants for 用户名@IP地址

show grants for 'moon'@'%';
删除用户

--语法:drop user 用户名@IP地址

drop user 'moon'@'%';

DDL(数据定义语言)

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

创建表
create table 表名(
    字段名1(列名)类型(长度)约束条件,
    字段名2(列名)类型(长度)约束条件,
    字段名3(列名)类型(长度)约束条件,
    ......
);

在关系型数据库中,我们需要这项表名和列名,同时设定


数据类型
整型
MySQL数据类型 含义
tinyint 1字节,范围(-128~127)
smallint 2字节,范围(-3w~3w)
mediumint 3字节,范围
int 4字节,范围(-21亿~21亿)
bigint 8字节,范围非常大

在整型中,我们默认使用的是有符号的,我们可以使用unsigned关键字,定义成无符号类型,tinyint unsigned的取值范围0~255

如果长度需要配合zerofill:
int(4) unsigned zerofill
说明:上述的int长度为4,如果设置了zerofill,如果数据是1,最终存储的数据格式是0001


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

定义一个float(5,3)
插入123.45678,最后查询得到的结果就是99.999
插入12.3456789,最后查询得到的结果就是12.346
所以在使用浮点型的时候,要以插入到数据库中的实际结果为准


字符串类型
MySQL数据类型 含义
char(n) 固定长度,最多255个字符
varchar(n) 可变长度,最多65535个字符
tinytext 可变长度,最大255个字节
text 可变长度,最大65535个字节
mediumtext 可变长度,最大16MB
longtext 可变长度,最大4GB
char和varchar的区别
char类型是【定长】的类型,当定义char(10),输入的是"123",占用的空间依然是10个字符。当输入的字符如果超出指定的范围,char会截取超出的字符,而且当储存char,MySQL会自动删除输入字符串末尾的空格。
char适合存储很短的,一般固定长度的字符串。例如,char非常适合存储密码MD5值,因为它定长,对于短的列,char比varchar在存储空间上效率更高

varchar(n)类型用来存储可变长度,长度最大为n个字符的可变长度的字符串数据,比如varchar(10),存储"abc",实际就是存储3个字符
char类型每次修改的数据长度相同,效率更高,varchar每次修改的数据长度如果不同,效率更低
varchar和text区别
text不能设置默认值,varchar可以设置默认值
text类型,由于单表的最大行宽限制,支持溢出存储,只会存放768字节在数据页中,剩余的数据存储在溢出段中
一般都是用varchar

日期类型
MySQL数据类型 含义
date 3字节,日期,格式:2022-08-15
time 3字节,时间,格式:10:54:35
datetime 8字节,日期时间,格式:2022-08-15 10:55:36
timestamp 4字节,时间戳,毫秒数
year 1字节,年份

建表约束

一张表要有多个列,数据库中的表不止一张,建表约束说的就是我们应该如何规范表中的数据以及表之间的关系

MySQL约束类型
约束名称 描述
NOT NULL 非空约束
UNIQUE 唯一约束,取值不允许重复
PRIMARY KEY 主键约束(主关键字),自带非空,唯一,索引
DEFAULT 默认值
FOREIGN KEY 外键约束,表和表之间的约束
NOT NULL约束
CREATE TABLE `student`(
    `stu_id` int,
    `stu_name` varchar(50) not null,
    `gender` char(1) default '男',
    `birthday`  datetime,
    PRIMARY KEY(stu_id)
);
UNIQUE 约束
CREATE TABLE `book`(
    `id` int PRIMARY KEY auto_increment,
    `name` varchar(50) not null,
    `bar_code` VARCHAR(30) not null,
    `aut_id` int not null,
    UNIQUE(bar_code)
);
主键约束

用多个列共同当主键

CREATE TABLE `author`(
    `aut_id` int,
    `aut_name` varchar(50) not null,
    `gender` char(1) default '男',
    `country` varchar(50),
    `birthday`  datetime,
    PRIMARY KEY(aut_id,aut_name)
);
外键约束

配合主键使用,有了这个使用,我们在向表中插入数据时,来源于另外一张表的主键

外键会产生的效果

1.删除表的时候,如果不删除引用外键的表,被引用的表不能直接删除
2.外键的值必须来源于引用的表的主键字符

CREATE TABLE `author`(
    `aut_id` int,
    `aut_name` varchar(50) not null,
    `gender` char(1) default '男',
    `country` varchar(50),
    `birthday`  datetime,
    PRIMARY KEY(aut_id)
);
CREATE TABLE `book`(
    `id` int PRIMARY KEY auto_increment,
    `name` varchar(50) not null,
    `bar_code` VARCHAR(30) not null UNIQUE, 
    `aut_id` int not null,
    FOREIGN KEY(aut_id) REFERENCES author(aut_id)
);

在创建表的时候,建议字段名使用着重符


对表的修改操作
查看当前库中所有表
show tables;
查看表的结构
desc 表名;

修改表有5个操作,前缀都是alter table 表名...

  • 1.添加列
ALTER table author add (hobby varchar(20),address varchar(50));
  • 2.修改列数据类型
ALTER table author MODIFY address varchar(100);
  • 3.修改列名称和数据类型
alter table author change address addr VARCHAR(60);
  • 4.删除列
alter table author drop addr;
  • 5.修改表名
ALTER TABLE author RENAME `authors`;
  • 6.删除表
drop table if EXISTS `user`;
  • 7.添加主键
alter table 表名 ADD CONSTRAINT 主键名(pk_表名) primary key 表名(字段名);
ALTER TABLE `authors` ADD CONSTRAINT pk_authors PRIMARY KEY `authors` ( aut_id );
  • 8.添加外键
alter table 从表 add constraint 外键名(fk_从表_主表) foreign key 从表(外键字段) REFERENCES 主表(主键字段;)
 ALTER TABLE book ADD CONSTRAINT fk_book_authors FOREIGN KEY book ( aut_id ) REFERENCES `authors` ( aut_id );

DML(数据操作语言)

该语言来对表记录进行操作(增、删、改),不包含查询

插入数据
INSERT INTO `authors` ( aut_id, aut_name, gender, country, birthday, hobby ) VALUES (4,'罗曼罗兰','女','漂亮国','1945-8-15','写字');

如果插入的是全字段,字段名可以省略

INSERT INTO `authors` VALUES (5,'韩寒','男','中国','1984-8-15','赛车');
说明

1. 在数据库中所有的字符串类型,必须使用引号
2. 如果部分字段插入,必须列名和值要匹配。如果全字段插入,则列名可以省略
批量插入
INSERT INTO `authors` VALUES 
(7,"李诞",'男','中国','1985-8-15','脱口秀'),
(8,"史铁生",'男','中国','1967-8-15','绘画');

修改数据
修改某列的全部的值
update `authors` set aut_name = '郭小四',country='中国';
修改特定行的数据
update `authors` set aut_name = '金庸',country='中国' where aut_id = 1;

where是一个关键字,我们可以使用where关键字实现丰富的筛选,它很像我们的if语句,可以使用各种复杂的条件运算

  • =(没有==,也没有equals)
  • !=
  • >
  • <
  • >=
  • <=
  • <> 不等于
  • between...and
    • where aut_id between 1 and 4
    • where aut_id > 1 and aut_name='xxx'
  • in(....)
    • where aut_id in(1,3,5)
  • is null
    • where name is null
  • not
    • where name is not null
  • or
  • and

删除数据
全部删除
delete from `student`;
根据条件删除
delete from `authors` where aut_id = 8;

说明:通过delete这种删除方式删除的数据,主键如果是自动递增,会断档。

截断(清空表)
TRUNCATE student;

说明
truncate实际上应该属于DDL语言,操作立即生效,不能撤回

  • truncate和delete都是删除数据,drop删除整个表。
  • truncate速度快,效率高,可以理解为直接删除整个表,再重新建立。
  • truncate和delete都不会是表结构及其列、约束、索引的发生改变。

标签:15,字节,张鑫,08,数据库,aut,varchar,数据,id
From: https://www.cnblogs.com/zxscj/p/16588751.html

相关文章

  • KL15、KL30、Wakeup Line、KL50(ACC)的区别
    作为一名测试小白,学习测试规范时发现了一些ECU针脚定义不是很明确,经过大佬们指点,总结如下:首先我们来看大佬给的参考图:需要注意的是,KL50就是我们常见的ACC,在电动汽车中不......
  • 2022-08-15 第六组 Myy 学习笔记_Mysql数据库
    Mysql数据库数据库数据库【按照数据结构来组织、存储和管理数据的仓库】,是一个长期存储载计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据对于公......
  • 1.5 15银行利息
    描述农夫约翰在去年赚了一大笔钱!他想要把这些钱用于投资,并对自己能得到多少收益感到好奇。已知投资的复合年利率为R(0到20之间的整数)。约翰现有总值为M的钱(100到1,000,000......
  • 2022-08-15 第二小组 张晟源(数据库)
    数据库一,数据库按照数据结构组织和存储管理数据的仓库,长期存储在计算机内,有组织的,可共享的,统一管理的大量数据的集合。数据:最宝贵的财富,需要对数据进行管理,运算,流转,存......
  • 2022-08-12第二小组 张晟源(正则表达式)
    JAVA(正则表达式)元字符. :匹配处了换行符之外的任意字符\w:匹配字符或数字或下划线或汉字\s:空格\d:匹配数字\b:匹配单词的开始和结束^:匹配字符串的开始$:匹配字符串的......
  • Win10+VS2019+Qt5.15.2下编译QCAD
    Win10+VS2019+Qt5.15.2下编译QCAD目录Win10+VS2019+Qt5.15.2下编译QCAD环境配置Qt安装VisualStudio2019安装QCAD编译Clone编译QCAD编译QtScripts插件运行问题总结参考......
  • 1080 MOOC期终成绩——25分
    对于在中国大学MOOC学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分的在线编程作业分,然后总评获得不少于60分(满分100)。总评成绩的计算公式为G=......
  • 1076 Wifi密码——15分
    下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用wifi,又怕耽误亲们的学习,现将wifi密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己作答,每两日一换。......
  • ZROI 8.15 最后的比赛
    呜哇,我吐了摆了,摆大烂了,不会再挣扎了T1.一个奇怪的模拟,各种乱七八糟奇奇怪怪令人心梗的规则,中间还修改了好几次题面......
  • 1071 小赌怡情——15分
    常言道“小赌怡情”。这是一个很简单的小游戏:首先由计算机给出第一个整数;然后玩家下注赌第二个整数将会比第一个数大还是小;玩家下注t个筹码后,计算机给出第二个数。若玩家猜......