首页 > 数据库 >2022-08-15 第六组 Myy 学习笔记_Mysql数据库

2022-08-15 第六组 Myy 学习笔记_Mysql数据库

时间:2022-08-15 15:12:29浏览次数:48  
标签:Myy 15 删除 where 08 MySQL varchar 数据 数据库

Mysql数据库

数据库

  • 数据库【按照数据结构来组织、存储和管理数据的仓库】,是一个长期存储载计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

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

Mysql

  • MySQL是一个【关系型数据库管理系统】,瑞典的公司研发,被【Oracle】收购。

  • MySQL使用了一种语言【SQL语言】来进行数据的管理。

  • MySQL分为社区版和商业版,Community -- 体积小、速度快、成本低、开源。

基本操作

MySQL保存数据的模式

1.创建一个数据库

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

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

登录MySQL

mysql - h 127.0.0 - p3306 -uroot - proot

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

创建一个数据库:

create database 数据库名;
create schema 数据库名;

查看所有的数据库:

show databases; 

使用数据库:

use 数据库名;

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

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

SQL语言

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

SQL分类

  • DCL(data control language):数据控制语言,用来定义访问权限和安全级别。
  • DDL(data definition language):数据定义语言,用来定义数据库对象 -- 库、表、字段(列),功能 -- 创建、删除、修改库和表结构。
  • DML(data manipulation language):数据操作语言,用来定义数据的增删改记录。
  • DQL(data query language):数据查询语言(重点),用来查询记录。
  • TCL(transition control language):事务控制语言,用来管理事务。

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@‘%’ = ‘新密码’;
  • 给用户授权

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

  1. create:可以创建数据库
  2. select:查阅数据
  3. delete:删除数据
  4. update:修改数据
  5. insert:插入数据
--- 语法:grant `权限1,权限2,…,权限n` on 数据库名.* to 用户名@IP地址
grant select.insert.update.delect.create 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 for 'moon'@'%';

DDL(数据定义语言)

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

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

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

  • 数据类型

整型

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

如果长度需要配合zerofill:

int(4) unsigned zerofill;

说明:上述的int长度为4,如果设置了zerofill,如果数据是1,最终存到表格中的数据格式为0001,0010。

浮点型

 比如定义一个float(5,3):

  • 插入123.45678,最后查询得到的结果就说99.999
  • 插入12.345678,最后查询得到的结果就是12.346

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

字符串类型

(1)char和varchar的区别:

  • char类型是【定长】的类型,当定义char【10】,输入的是“123”,它们占用的空间依然是10个字符,当输入的字符如果超出指定的范围,char会截取超出的字符,而且,当存储char,MySQL会自动删除输入字符串末尾的空格。
  • char适合存储很短的,一般固定长度的字符串。例如,char非常适合存储密码MD5值,因为它是一个定长的值,对于端的列,char比varchar在存储空间上效率更高。
  • varchar类型用来存储可变长度,长度最大为n个字符的可变长度的字符串数据,比如varchar(10),然后存储“abc”,实际就说存储了3个字符。
  • char类型每次修改的数据长度相同,效率更高,varchar每次修改的数据长度不同,效率更低。

(2)varchar和text的区别:

  • text不能设置默认值,varchar可以设置默认值。
  • text类型,由于单表的最大行宽的限制,支持溢出存储,只会存放768字节在数据页中,剩余的数据存储在溢出段中。
  • 一般我们都是用varchar

日期类型

 

 

  •  建表约束

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

MySQL约束类型

 

 

 (1)NOT NULL约束

 

 

 (2)UNIQUE约束

 

 

 (3)主键约束

用多个列来共同当主键

 

 

 (4)外键约束

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

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

 

 

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

  •  对表的修改操作

 查看当前库中的所有表:

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 `user`;//判断是否存在

DML(数据操作语言)

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

  • 插入数据
//增
insert into `authors`(列名1,列名2,列名3,...) VALUES('信息1','信息2','信息3',...); desc `authors`;

如果插入的是全字段,字段名可以省略(列名=字段名)

insert into `authors` VALUES('信息1','信息2','信息3',...);
desc `authors`;

说明:

  1. 在数据库中所有的字符串类型,必须使用引号
  2. 如果部分字段插入,必须列名和值要匹配。如果全字段插入,则列名可以省略。

批量插入

insert into 
  • 修改数据

修改某列的全部的值:

update `authors` set aut_name = 'gxs',country = 'zg';

修改特定行的数据:

update `authors` set aut_name = 'gxs',country = 'zg' where aut_id =1;

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

  • =(没有==和equals)
  • !=
  • >  
    • where aut_id>1  
  • <
  • >=
  • <=
  • <>不等于
  • 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
  • ...
  • 删除数据

全部删除:

delete from `student`;

根据条件删除:

delete from `authors` where aut_id = 8;

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

截断(清空表):

truncate student;

说明:

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

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

标签:Myy,15,删除,where,08,MySQL,varchar,数据,数据库
From: https://www.cnblogs.com/JNMyy/p/16587435.html

相关文章

  • 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个筹码后,计算机给出第二个数。若玩家猜......
  • 【2022-08-14】工作的意义
    20:00无论世界上的行业丰富到何种程度,机遇又多到何种程度,我们每一个人比较能做好的事情,永远也就那么几种而已。有时,仅仅一种而已。            ......
  • 2022-08-08 第六组 李俊琦 IO流
    今日重点JUnit单元测试Stream编程(JDK8新增)JavaIO流---对于文件的操作学习内容JUnit单元测试的好处:1).可以书写一系列的测试方法,对项目的所有的接口或者方法进行单元......