首页 > 其他分享 >长春大学 第二组刘禹彤 学习笔记

长春大学 第二组刘禹彤 学习笔记

时间:2022-08-15 21:44:12浏览次数:64  
标签:varchar 字节 数据库 笔记 刘禹彤 aut 数据 id 第二组

打卡32天

###学习内容

Mysql数据库

数据库

  • 数据库【按照数据结构来组织,存储和管理数据的仓库】,是一个长期存储在计算机内的,有组织的,可共享的,统一管理大量的数据的集合
  • 数据对于公司来说是最宝贵的财富,程序员的工作就是对数据进行管理,包括运算,流转,存储,展示等,数据库最重要的功能就是【存储数据】,长期保存数据

Mysql

  • Mysql是一个【关系型数据库管理系统】,瑞典的公司研发,被【Oracle】收购
  • Mysql使用了一种语言【SQL语言
  • Mysql分为社区版和商业版,体积小,速度快,成本低,开源

基本操作

Mysql保存数据的模式

1.创建一个数据库

2.在数据库下保存多张表

3.在每张表中保存多条数据

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

登录mysql

mysql -h 127.0.0.1 -p3306 -uroot -p

创建数据库

creat database 数据库名;
creat schema 数据库名;

查看所有数据库

show databases;

使用数据库

use 数据库名;

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

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

SQL语言

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

SQL分类

    • DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别
    • DDL(Data Defintion Language):数据定义语言,用来定义数据库对象:库,表,字段(列)。功能:创建,删除,修改库和表结构
    • DML(Data Manpulation Language):数据操作语言,用来定义数据的增删记录
    • DQL(Data Qyery Language):数据库查询语言,用来查询记录
    • TCL(Transtion Control Language):事务控制语言,用来管理事务

DCL(数据库控制语言)

创建用户

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

creat user 用户名@ip地址 identified by '密码';

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

creat user '名字'@'%' identified by 'root';

修改密码:

--5.7版本需要使用passwd对密码进行加密
set passwd for 名字@'%' = passwd('新密码');
--8.0版本直接赋值
set passwd for 名字@'%' = '新密码'; 

给用户授权

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

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

添加授权

--语法:grant 权限1 权限2...权限n on 数据库名.* to 用户名@ip地址
grant select,insert,update,delete,creat on 'jsoft'.'user' to 'moon'@'%';

注意:这里用的是着重符,不是单引号

撤销授权

--语法:revoke 权限1..权限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主要是用在定义或改变表的结构

创建表

creat table `表名`(
      字段名1(列名)类型(长度)约束条件
      字段名2(列名)类型(长度)约束条件
       ........................
      字段名n(列名)类型(长度)约束条件
);

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

数据类型

(一)整型

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,0010

 

(二)浮点型

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

可变长度,最大16M

longtext

可变长度,最大4GB

(1)char和varchar的区别

    • char类型是【定长】的类型,当定义char(10),输入的是”123“,他们占用的空间依然是10字节,当输入的字符超出指定的范围,char会截取超出的字符,而且,当储存char,MySQL会自动删除输入字符末尾的空格

char适合存储很短的,一般固定长度的字符串,例如:char非常适合存储密码MD5值,因为

他是一个定长的值,对于短的列,char比varchar在存储空间上,效率更高

    • varchar类型用来存储可变长度,,长度最大为n个字符的可变长度的字符串数据,比如varchar(10),然后存储”abc“,实际上就是存储了三个字符
    • char类型每次修改的数据长度相同,效率更高;varchar每次修改的数据长度如果不同,效率更低

(2)varchar和text区别

    • text不能设置默认值,varchar可以设置默认值

text类型,由于单表的最大行宽的限制,支持溢出存储,只能存放768字节在数据页中,剩余

的数据存储在溢出段中

    • 一般我们都是用varchar

 

(四)日期类型

MySQL数据类型

含义

date

3字节,日期,格式:2022-08-15

time

3字节,时间,格式:10:54:30

datatime

8字节,日期时间,格式:2022-08-15 10:55:40

timestamp

4字节,时间戳,毫秒数

year

1字节,年份

建表约束

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

MySQL约束类型

约束名称

描述

NOT NULL

非空约束

UNIQUE

唯一约束,取值不允许重复

PRIMARY KEY

主键约束(主关键字),自带非空,唯一,索引

DEFAULT

默认值

FOREIGH KEY

外键约束,表与表之间的约束

(1)NOT NULL约束

CREATE TABLE `student` (
	`stu_id` int,
	`stu_name` VARCHAR(50) NOT NULL,
	`gender` char(1) DEFAULT '男',
	`brithday` datetime,
	PRIMARY KEY(stu_id)
);

(2)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)
);

(3)主键约束

用多个列共同当主键

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)
);

(4)外键约束

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

外键会产生的效果: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 表名 ....

  • 添加列:
ALTER table author add (hobby varchar(20),address varchar(50));
  • 修改列数据类型
ALTER table author MODIFY address varchar(100);
    • 修改列名称和数据类型
alter table author change address addr VARCHAR(60);
    • 删除列
alter table author drop addr;
    • 修改表名
ALTER TABLE author RENAME authors;
    • 删除表
drop table if EXISTS 表名;
    • 添加主键
alter table 表名 ADD CONSTRAINT 主键名(pk_表名) primary key 表名(字段名);




ALTER TABLE authors ADD CONSTRAINT pk_authors PRIMARY KEY authors ( aut_id )
    • 添加外键
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 
(8,"史铁生",'男','中国','1967-8-15','绘画');
(7,"李诞",'男','中国','1985-8-15','脱口秀'),

修改数据

    • 修改某列的全部的值:
update authors set aut_name = '郭小四',country='中国';
    • 修改特定行的数据:
update authors set aut_name = '金庸',country='中国' where aut_id = 1;
where是一个关键字,我们可以使用where关键字实现丰富的筛选,它很像我们的if语句,可以使用各种复杂的条件运算:
  • 1)=(没有==,也没有equals)
  • 2)!=
  • 3)>
  • where aut_id > 1
  • 4)<
  • 5)>=
  • 6)<=
  • 7)<> 不等于
  • 8)between...and
    • where aut_id between 1 and 4
    • where aut_id > 1 and aut_name='xxx'
  • 9)in(....)
    • where aut_id in(1,3,5)
  • 10)is null
    • where name is null
  • 11)not
    • where name is not null
  • 12)or
  • 13)and

删除数据

    • 全部删除:
delete from student;
    • 根据条件删除:
delete from authors where aut_id = 8;
说明:通过delete这种删除方式删除的数据,主键如果是自动递增,会断档。
    • 截断(清空表):
TRUNCATE student;

说明:

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

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

###学习心得

今天开始学习数据库,感觉掌握的还可以,晚上通过练习对其进行巩固

###掌握情况:一般

###课上练习

SELECT * FROM author;

###运行结果

 

标签:varchar,字节,数据库,笔记,刘禹彤,aut,数据,id,第二组
From: https://www.cnblogs.com/lyt0612/p/16589753.html

相关文章

  • 2022-8-15 第一组 (≥▽≤) 学习笔记
    目录1.MySQL数据库1.1数据库1.2MySQL1.3基本操作1.4表2.SQL语言2.1SQL语句的分类2.1.1DCL(数据控制语言)给用户授权撤销授权查看指定用户授权删除用户2.1.2DDL(数据......
  • 笔记day03
    上周内容回顾循环结构之while循环1.while语法结构while条件:  条件成立之后执行的循环体代码2.while+break3.while+continue4.while+else5.死循环、循环......
  • 操作系统学习笔记2 | 操作系统接口
    这部分将讲解上层应用软件如何与操作系统交互,理解操作系统到底发生了什么事情,理解操作系统工作原理,为以后扩充操作系统、设计操作系统铺垫。参考资料:课程:哈工大操作系......
  • 2022-08-15 第四小组 王星苹 学习笔记
    学习心得       开始MySQL数据库的学习,创建库,再创建表,在表中保存多条数据,一列就是一个字段,也可以增删改查心情 又新学个新东西,新起点,出发加油掌握情况:背......
  • 三更 SpringSecurity笔记
    SpringSecurity从入门到精通课程介绍0.简介​SpringSecurity是Spring家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源......
  • 2022-08-15 第二小组 张鑫 学习笔记
    实训三十七天Mysql1.学习重点1.数据库2.MySQL3.SQL语言2.学习心得今天开始了数据库的学习,通过月测验我发现我存在很多知识上的欠缺,这都是平时每天的基础没有完全掌......
  • 2022-08-15 第六组 Myy 学习笔记_Mysql数据库
    Mysql数据库数据库数据库【按照数据结构来组织、存储和管理数据的仓库】,是一个长期存储载计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据对于公......
  • 安卓手机备忘录中的笔记如何分类管理?
    如果你想要随手记录工作笔记、读书笔记、生活感想等笔记内容,你会通过什么方式来记录呢?在以前应该会有很多人选择通过纸质的笔记本来记录各种笔记内容,但是随着智能手机功能......
  • XAML、WPF 学习笔记
    容器学习:所有的WPF布局容器都派生自System.Windows.Controls.Panel。Panel继承自FrameworkElement。在Panel中有一个比较重要的属性是UIElementCollection类型的Chi......
  • TCP/UDP学习笔记
    TCP/UDP学习笔记相同点:1.都工作在传输层2.都在程序之间传输数据(二进制文件),可以是文件、视频、图片等不同点:TCP:面向连接(握手挥手)、完整可靠(丢包重发)、顺序(序列传输)......