1.MySQL数据库

1.1 数据库

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

1.2 MySQL

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

1.3 基本操作

  • 启动MySQL

    • mysql -h 127.0.0.1 -p 3306 -u root -p 3306
      
  • MySQL保存数据的模式:

    • 创建一个数据库
    • 在数据库下保存多张表
    • 在每张表中保存多条数据
  • MySQL是是一个【数据库管理系统】,管理多个数据库。

    • create datebase 数据库的名;——————创建数据库
      create schema 数据库的名;show databases;————————查看所有数据库
      
  • 使用数据库:

    • mysql> use jsoft;——————使用相关的数据库
      Database changed————出现这个表示成功
      

1.4表

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

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

2.SQL语言

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

命名规则:字段名单词之间用下划线连接

2.1 SQL语句的分类

  • DCL(Data Control Language)——数据控制语言

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

2.1.1 DCL(数据控制语言)

  • 创建用户

    • 创建一共用户,该用户只能在指定的IP地址上登录MySQL:

    • create user '用户名'@'IP地址' identfied   by'用户密码';
      
    • 创建一共用户在任意ip地址上登录MySQL:

    • create user 'moon'@'%' identfied   by'3306';
      exit;------退出
      
  • 修改密码

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

给用户授权

给指定用户在指定数据库上赋予【指定的权限

  • 权限:

    • create:可以创建数据库

    • select:查询数据

    • delete:删除数据

    • update:修改数据

    • insert:插入数据

    • -- 语法: grant `权限1,权限2....权限n`(all 给他所有权限除了创建用户) on `数据库名`.`表名`(*代表全部的表) to `用户名`@`ip地址`;
      -- 这里使用的是着重符,不是单引号
      

撤销授权

-- 语法:revoke  `权限1,权限2....权限n` on `数据库名`.`表名` from `用户名`@`ip地址`;

查看指定用户授权

-- 语法 show grants for `用户名`@`ip地址`;

删除用户

-- 语法:drop user `用户名`@`ip地址`;

2.1.2 DDL(数据定义语言)

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

创建表

/*create table 表名(字段名1(列名) 类型(长度) 约束条件,字段名2(列名) 类型(长度) 约束条件,字段名3(列名) 类型(长度) 约束条件,......字段名n(列名) 类型(长度) 约束条件;
);
*/
  • 在关系型数据库中,需要这项表名和字段名,同时设定。

数据类型

整型

MySQL数据类型 含义
tinyint 1个字节,范围(-128~127)【用来存性别】
smallint 2个字节,范围(-3万多~3万多)
mediumint 3个字节,范围(-8w多~8w多)
int 4个字节,范围()
bigint 8个字节,范围(非常大)
  • 在整型中默认使用的是【有符号的

  • 我们可以使用一个关键字【unsigned】,定义成无符号类型

    • tinyint unsigned的取值范围为0~255
  • 如果长度需要配合【zerofill——用0来填充

    • 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.1231,最后得到的结果就是99.999
    • 插入数据12.345678,最后得到的结果就是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-8-15
time 3字节,时间,格式:10:54:32
datetime 8字节,日期时间,格式:2022-8-15 10:55:13
timestamp 4字节,时间戳,毫秒数
year 1字节,年份

建表约束

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

MySQL的约束类型

约束名称 描述
NOT NULL 非空约束
UNIQUE 唯一约束,取值不能重复
PRIMARY KEY 主键约束(主关键字),自带非空,唯一,索引
DEFAULT 默认值
FOREIGH KEY 外键约束,表和表之间的约束
  • NOT NULL非空约束

    • CREATE TABLE `student` (`stu_id` INT ,`stu_name` VARCHAR(50) NOT NULL,`gender` CHAR(1) DEFAULT '男',`brithday` 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),`brithday` datetime,PRIMARY KEY(aut_id,aut_name)
      );
      
  • 外键约束

    • 推荐配合主键去使用,有了这个约束,我们在向表中插入数据,来源另一张表的主键
    • 外键会产生的效果;
      • 删除表的时候,如果不删除引用外键的表,被引用的表是不能直接删除。
      • 外键的值必须来源于引用的表的主键字符。
  • 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)
    );
    -- FOREIGN KEY(主键) REFERENCES 表名(主键)
    
  • 【创建表的时候,建议字段名使用着重符】

对表的修改操作:

  • 查看当前库里的所有表

    • SHOW TABLES;
      
  • 查看表结构:

    • -- DESC `表名`;
      -- 查看当前库下的表的结构
      
  • 修改表(5个操作),但是前缀都是一样的alter table 表名 ......:

    • 添加列:

      • ALTER TABLE author ADD(hobby VARCHAR(20) ,`address` VARCHAR(50))
        -- 添加列
        
    • 修改列数据类型:

      • ALTER TABLE author MODIFY `address` VARCHAR(10)
        -- ALTER TABLE 表名  MODIFY 字段名 数据类型
        
    • 修改列名称和数据类型:

      • ALTER TABLE author CHANGE `country` `adrr` VARCHAR(12);
        -- ALTER TABLE 表名  change 旧字段名 新字段名 数据类型
        
    • 删除列:

      • ALTER TABLE author DROP   `adrr`  ;
        -- ALTER TABLE 表名  DROP 字段名
        
    • 修改表名:

      • ALTER TABLE `authors` RENAME `author`;
        -- ALTER TABLE 旧表名 RENAME 新表名
        
    • 删除表:

      • DROP TABLE if EXISTS `book`
        -- DROP TABLE IF EXISTS 表名
        

2.1.3 DML(数据操作语言)

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

插入数据

  • -- insert into  表名  (字段名)  values (插入数据与字段名一一对应)
    -- 如果插入全字段 ,字段名可以省略
    
  • 说明:

    • 在数据库中所有的字符串类型,必须使用引号
    • 如果部分字段插入,必须列名和值要匹配。如果全字段插入,则列名可以省略【不建议省略,可维护性较低
  • 批量插入

    • -- insert into  表名  (字段名)  values (插入数据与字段名一一对应),(插入数据)
      

修改数据

  • -- update 表名  set 字段名1='值1',字段名2='值2'  where  字段名='值'
    -- where  后边是修改的条件
    
  • where是一个关键字,我们可以用where关键字来实现丰富的筛选,与Java中的if语句相似,可以使用复杂的条件运算:

    • =(没有==,equals)
    • !=
    • between ..and
    • in(...)
    • not
    • or
    • is null
    • and

删除数据

  • 全部删除

    • -- delete from  表名
      
  • 根据条件去删除

    • -- delete from  表名 where 条件
      
  • 说明:通过delete删除的数据有一个明显的问题——主键如果是自动递增,会断档

  • 截断(清空表):

    • -- TRUNCATE  表名
      
    • TRUNCATE实际上属于DDL语言,操作立即生效,不能撤回

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

2022-08-15 第一组 顾元皓 学习笔记相关推荐

  1. 2022-08-17 第一组 顾元皓

    1.DQL查询语言 1.1 子查询(自连接) 按照结果集的行列数不同,子查询可以分为以下几类: 标量子查询 结果集只有一行一列(单行子查询) 列子查询 结果集有一列多行 行子查询 结果集有一行多列 表 ...

  2. 影像组学视频学习笔记(15)-ROC曲线及其绘制、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(15)主要介绍: ROC曲线及其绘制 ROC 曲线 ROC = receiver operating characteristic cu ...

  3. 影像组学视频学习笔记(43)-标准差、标准误及95%置信区间CI、Li‘s have a solution and plan.

    作者:北欧森林 链接:https://www.jianshu.com/p/f09d0f97592f 来源:简书,已获授权转载 本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(43)主要 ...

  4. 影像组学视频学习笔记(14)-特征权重做图及美化、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(14)主要介绍: 特征权重做图及美化 import matplotlib.pyplot as plt %matplotlib inlin ...

  5. 影像组学视频学习笔记(12)-支持向量机(SVM)参数优化(代码)、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(12)主要介绍: SVM参数优化(代码) 参数优化: 自动寻找最合适的γ和C组合. 原理:遍历所有给定的参数组合,对数据进行训练,找到最 ...

  6. 影像组学视频学习笔记(11)-支持向量机(SVM)(理论)、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(11)主要介绍: SVM支持向量机(理论) 支持向量机 (support vector machine, SVM) 号称是鲁棒性(rob ...

  7. Li‘s 影像组学视频学习笔记(10)-T检验+lasso+随机森林、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(10)主要介绍: T检验+lasso+随机森林 李博士借用和女朋友一起吃饭这个实例来说明:爱情和机器学习一样,复杂深奥.难以揣测. im ...

  8. 影像组学视频学习笔记(9)-T检验(T-test)理论及示例、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(9)主要介绍: T-test理论及示例 T 检验 两独立样本t检验(ttest_ind):检验两组独立样本的平均数与其分布是否具有显著性 ...

  9. 影像组学视频学习笔记(7)-特征筛选之LASSO回归(代码)、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(7)主要介绍: 特征筛选之LASSO回归分析(代码实现) import pandas as pd import numpy as np ...

最新文章

  1. mysql sql语句编码_SQL语句实用例子 MySQL编码设置
  2. Win8Beta即将发布,业内普遍看好微软Windows 8
  3. 200m的共享虚拟主机够用吗
  4. ViewPager 的适配器 PagerAdapter 、FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
  5. 《SQL必知必会(第4版)》 02 检索数据
  6. 关于python类的继承正确的说法是_2017美团点评的运维岗校招笔试题,测测你会几题?...
  7. 安全专家在硬盘固件中发现NSA的网络间谍程序
  8. 百度地图API的第一次接触——右键菜单
  9. object references an unsaved transient instance - save the transient instance before flushing异常问题处理
  10. 2339: [HNOI2011]卡农
  11. 美国大学计算机系学什么,2017美国大学计算机专业排名
  12. 《When you are old》一如苇中的风,轻柔却难忘
  13. Java网络编程并实现一对一聊天室功能
  14. docker入门小结
  15. 原始人到春秋战国历史常识整理
  16. The Little Schemer 中文版
  17. vmware虚拟机连接服务器超时,vmware连接远程服务器超时
  18. 遭遇cursor:pin x等待事件定位阻塞会话诊断过程
  19. 深度学习自学第四周:近几年的经典神经网络结构
  20. windows与ipad互联传文件

热门文章

  1. 速记混淆矩阵中的FP、FN、FP、TN
  2. Lua弱引用表处理普通的内存泄漏
  3. 如何用laragon框架运行php文件
  4. fatal: You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists). Please, commit your change
  5. Docker -v 对挂载的目录没有权限 Permission denied解决办法
  6. ios(ipad,iphone)屏幕旋转检测通用方法
  7. 微信小程序服务器端用什么语言开发?
  8. 一度智信:拼多多商家开直通车大忌
  9. Qt 使用WPS或HTML生成word文档
  10. 关于Linux下面移动硬盘读不出来