4.10-4.11学习总结

news2024/11/8 23:55:36

目录

MySql

 关系型库数据

 mysql启动方法

 SQL通用语法

查询表

创建表

Mysql数据类型 

表操作-修改

 MySQL图形化界面

 DCL

函数

 约束

JDBC


MySql

 关系型库数据

建立在关系模型基础上,由多张相互连接的二维表组成的数据库

特点:

  1. 使用表存储数据,格式统一,便于维护
  2. 使用SQL语言操作,标准统一,使用方便

 

 mysql启动方法

2.客户端链接:

1.MYsql提供的的客户端命令行工具 

使用这种方式,需要配置PATH环境变量  

 SQL通用语法

1.SQL语句可以单行或多行书写,以分号结尾。
2.SQL语句可以使用空格/缩进来增强语句的可读性。
3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
4.注释:
单行注释:--注释内容 或# 注释内容(MySQL特有)
多行注释:/*注释内容*/

 

 1.DDL

查询所有数据库

show databases;

查询当前数据库

select database();

创建

create database [if not exists] 数据库名称 [default charset 字符集] [collate 排序规则]

删除

drop database[if exists]数据库名

使用

use 数据库名

查询表

1.查询当前数据库所有表:

show tables;

2.查询表结构:

desc 表名;

3.查询指定表的建表语句:

show create table 表名;

创建表

Mysql数据类型 

 

如果将一个char 类型定义为 char (10),那么即使只输入了一个字符,它在内存中仍然占用10个字符 

varchar 会在使用的时候根据内容去计算存储的内容,输入多少字符它就会占用几个字符。

对于用户的用户名最好使用 varchar ;但是只需要使用一个字符就可以表示性别 ;

表操作-修改

1.添加字段

alter table 表名 add 字段名 类型(长度) [comment 注释] [约束]

2.修改数据类型

alter table 表名 modify 字段名 新数据类型(长度);

3.修改字段名和字段类型

alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];

4.删除字段:

alter table 表名 drop 字段名;

5.修改表名

alter table 表名 rename to 新表名;

6.删除表

drop table [if exists] 表名;

7.删除指定表,并重新创建表

truncate table 表名;

在删除表时,表中的全部数据也会被删除。

 MySQL图形化界面

DML:用来对数据库中表的数据记录进行增删改操作。

  • 添加数据(INSERT)
  • 修改数据(UPDATE)
  • 删除数据(DELETE)

1.添加数据

(1)给指定字段添加数据

insert into 表名(字段名1,字段名2,...) values(值1,值2,...);

(2)给全部字段添加数据

insert into 表名 values(值1,值2,...);

(3)批量添加数据

insert into 表名(字段名1,字段名2,...)values(值1,值2,...),(值1,值2,...),(值1,值2,...);
insert into 表名(值1,值2,...),(值1,值2,...),(值1,值2,...);
  • 插入数据时,指定的字段顺序需要与值的顺序是一一对应的
  • 字符串和日期型数据应该包含在引号中
  • 插入的数据大小,应该在字段的规定范围中

2.修改数据

update 表名 set 字段1 = 值1 , 字段名2 = 值2,...[where 条件];

修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

3.删除数据

delete from [表名] [where 条件]
  •  delete语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据
  • delete 语句不能删除某一个字段的值(可是使用update)

DQL:

DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。

查询关键字:SELECT

(1)基本查询 

(1)查询多个字段:

select 字段1,字段2,字段3... from 表名;
select *from 表名;

(2)设置别名

select 字段1 [AS 别名1], 字段2[AS 别名2] ...from 表名;

去除重复记录

select distinct 字段列表 from 表名;

(2)条件查询

注意点:

  • 查询时的等于是一个“=”而不是两个
  • 多选一除了用 “or” 之外还可以用 in(),中间用逗号隔开,例如要查询年龄等于18或者20或者40的人,有两种写法:
select *from  emp where age=18 or age = 20 or age =40;

select *from emp wherer age in(18.20.40)
  • 查询字段长度用的是 like 占位符,例如要查询名字为两个字的员工
select *from emp where name like '__';
  • 查询身份证号最后一位是X的员工信息
select *from emp where idcard like '%X';
select *from emp where idcard like '_________________X';

(3)聚合函数:

select count(*) from emp;

//16

若要统计某个限定条件的个数,例如统计来自西安地区的员工的年龄之和


select sum(age) from emp where work_address = '西安';

(4)分组查询

where与having区别:

  • 执行时机不同: where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
  • 判断条件不同: where不能对聚合函数进行判断,而having可以。

注意点;

  • 执行顺序: where >聚合函数>having 。
  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

 例如要根据性别分组,统计男性员工 和 女性员工的数量

select gender,count(*) from emp group by gender;

 或者查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址

select work_address,count(*) address_count from emp where age <45 
group by work_address having address_count >=3;

(5)排序查询

 排序方式;

  1. ASC:升序(默认值)
  2. DESC:降序
  3. 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

例如对一个表中的成员按照年龄升序排序

select *from emp order by age asc;

select *from emp order by age ;

例如根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序:

select *from emp order by age asc,entrydate desc ;

(6)分页查询

注意事项: 

  1. 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。
  2. 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
  3. 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。

 

 一些练习:

-- 1.查询年龄为20,21,22,23岁的员工信息。
select *from emp where gender = '女' and age in(20,21,22,23);

-- 2.查询性别为男,并且年龄在20-40岁(含)以内的姓名为三个字的员工。
select *from emp where gender = '男' and age between 20 and 40 and name like '___';

-- 3.统计员工表中,年龄小于60岁的,男性员工和女性员工的人数。
select gender , count(*) from emp where age <60 group by gender;
-- 4.查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序
select  name ,age from emp where age <=35 order by age asc,entrydate desc ;

-- 5、查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序。
select *from emp where (age between 20 and 40) and gender ='男' 
order by age asc , entrydate asc  limit 5;

 (7)DQL执行顺序

 

 DCL

DCL用来管理数据库用户、控制数据库的访问权限。

 (1)DCL管理用户

  •  创建用户可以在任何主机访问该数据库,主机名用%
  • 创建用户可以在某个主机上访问该数据库,则需要指定主机名

(2)DCL-权限控制

 

  • 多个权限之间,使用逗号分隔
  • 授权时,数据库名和表名可以使用*进行通配,代表所有。 

函数

函数是指一段可以直接被另一段程序调用的程序或代码。

(1)字符串函数:

 

select concat('Hello,','Mysql');
-- Hello,Mysql

select lower('HELLO');
-- hello

select upper('hello');
-- HELLO

select lpad('01',5,'-');
-- ---01

select trim('  Hello    MySQL   ');
-- Hello    MySQL

select substring('Hello MySql',1,5);
-- Hello

通过字符串 lpad 函数 ,可以实现对学生 学号前面的填充

例如设定学生的学号 id  

 

 执行以下语句后:

update student
set student_id = lpad(student_id,9,'20224010')
where Entrance_time = '2022-09-01';

 

 (2)数值函数

select ceil(1.1);
-- 2

select floor(1.9);
-- 1

select mod(3,5);
-- 3

select rand();
-- 0.7219960677642339
-- 0.6061000177693553
-- 0.8645119162877202


select  round(2.567,2);
-- 2.57
通过数据库的函数,生成一个六位数的随机验证码:
select lpad (round(rand()*1000000,0),6,'0');
-- 504260
-- 927762
-- 024998

(3)日期函数

select curdate();
-- 2023-04-10

select curtime();
-- 21:25:40

select now();
-- select now();

select YEAR(now());
-- 2023

select MONTH(now());
-- 4

select DAY(now());
-- 11

select date_add(now(),INTERVAL 70 YEAR);
-- 2093-04-10 21:26:29

select datediff('2022-12-01','2001-09-01');
-- 7761

(4)流程函数

select
    name,
    ( case Entrance_time when '2022-09-01' then '大一' when '2021-09-01' then '大二' else '大三'end)
from student;

 约束

概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。

目的:保证数据库中数据的正确、有效性和完整性。

 约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

1.约束演示

create table user(
    id int primary key auto_increment comment '编号',
    name varchar(10) not null unique comment'姓名',
    age int check (age between 0 and 120) comment '年龄',
    status char(1) default '1' comment '状态',
    gender char(1) comment '性别'
)comment '用户表';


insert into user( name, age, status, gender)
    values ('Tom',19,'1','男'),('Jack',20,'0','男');

为编号增加了一个 auto_increment 约束,就可以明显见到编号是不断在自增的

 

 给姓名增加的约束 not null 和 unique 添加姓名时不能为空或者重复

(3)外键约束 

外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。

 目前上述的两张表,在数据库层面,并未建立外键关联,所以是无法保证数据的一致性和完整性的。

 外键约束的删除/更新

 外键约束的删除和更新可用于实现课表与老师或者老师和学生之间的联系

多表查询:

JDBC

 JDBC就是使用Java语言操作关系型数据库的一套API

 

JDBC本质:

  • 官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口
  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包
  • 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类

 JDBC好处:

  • 各数据库厂商使用相同的接口,Java代码不
  • 需要针对不同数据库分别开发
  • 可随时替换底层数据库,访问数据库的Java代码基本不变

常用接口
DriveManager:用于管理JDBC驱动的服务类

Connection:代表数据库连接对象

ResultSet:结果集对象

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/411256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】哈希(位图,布隆过滤器)

今天的内容是哈希的应用&#xff1a;位图和布隆过滤器 目录 一、位图 1.位图概念 2.位图的应用 二、哈希切分 三、布隆过滤器 1.布隆过滤器的概念 2.布隆过滤器的应用 四、总结 一、位图 1.位图概念 今天的内容从一道面试题开始引入&#xff1a; 给40亿个不重复的无符…

chapter-5 数据库设计

以下课程来源于MOOC学习—原课程请见&#xff1a;数据库原理与应用 考研复习 引言 设计的时候: 我们为什么不能设计成R&#xff08;学号&#xff0c;课程号&#xff0c;姓名&#xff0c;所咋系&#xff0c;系主任&#xff0c;成绩&#xff09;&#xff1f; 因为存在数据冗余…

BGP与OSPF混合组网

如图。R1和R2之间是OSPF Area 0,R23和R4之间是OSPF Area 1,R5和R6之间是OSPF Area2。除了R1和R2之间的cost是100,其余链路的cost都是10. AR1/2/3/4/5/6之间通过Loopback口建立IBGP全互联邻居关系,并且都是AS11520,和外部建立EBGP邻居访问100.100.100.1的网络。(不确定图中…

企业内训视频如何防范被盗录和下载?

企业内训视频如何防范被盗录和下载&#xff1f; 1. 【防下载】&#xff1a;实现视频文件的加密混淆、防下载&#xff1b; 2. 【防录屏】&#xff1a;A.&#xff08;ID跑马灯防录屏&#xff09;实现不同学员观看视频&#xff0c;实时显示该学员的姓名手机号时间&#xff1b;B.&…

线性代数 --- 最小二乘在直线拟合上的应用与Gram-Schmidt正交化(下)

在上一篇文章中&#xff0c;通过一个例子来说明最小二乘在拟合直线时所发挥的作用&#xff0c;也通过两个插图的比较进一步的阐明了投影与最小化e之间的密切关系。 线性代数 --- 最小二乘在直线拟合上的应用与Gram-Schmidt正交化&#xff08;上&#xff09;_松下J27的博客-CSD…

【UE Sequencer系列】08-副镜头切换、摄像机绑定摇臂的使用、摄像机绑定滑轨的使用

目录 一、副镜头切换 二、摄像机绑定摇臂的使用 三、摄像机绑定滑轨的使用 一、副镜头切换 1. 为“shot_05”新建镜头&#xff08;复制资产&#xff0c;创建新的关卡序列&#xff09; 同样的步骤再创建一个“Shot_07_02” 此时我们就可以对“Shot_07”中的两个副镜头进行切换…

最简单明了vite+ts+sass无loaders配置,利用ts读取scss文件中的变量并在App.vue中使用

做后端的&#xff0c;前端水平有限&#xff0c;最近练手&#xff0c;遇到了左侧菜单是展开关闭的问题&#xff0c;接触到了scss中定义全局变量&#xff0c;利用typescript读取的问题&#xff0c;在此记录一下 vitetssass 环境&#xff1a;package.json中内容如下&#xff0c;…

利用KMean算法进行分类

什么是KMean算法&#xff1f;简要说明什么是KMean算法&#xff0c;以及KMean算法的应用场景。 KMeans是一种聚类算法&#xff0c;它将数据集分成K个不同的类别&#xff08;簇&#xff09;&#xff0c;使得每个数据点都属于一个簇&#xff0c;并且每个簇的中心点&#xff08;质…

网络通信的安全性(HTTPS)

网络通信的安全性&#xff08;HTTPS&#xff09; 互联网是由无数网络节点组成的&#xff0c;两点之间的通信一般会经过很多个网络节点&#xff0c;因此&#xff0c;我们难免会有疑问&#xff1a; 作为发送方&#xff0c;我发送的消息内容会不会被中间人看到&#xff1f;&…

4.2 矩阵乘法的Strassen算法

1.伪代码以及用到的公式 ​ ​ ​ 2.代码 package collection; ​ public class StrassenMatrixMultiplication {public static int[][] multiply(int[][] a, int[][] b) {int n a.length;int[][] result new int[n][n]; ​if (n 1) {result[0][0] a[0][0] * b[0][0]…

为什么是毫末智行成为了DriveGPT的破壁人?

作者 | 魏启扬 来源 | 洞见新研社 毫末智行有着天生的紧迫感。 很多科技公司一年才举办一次的品牌日活动&#xff0c;毫末智行硬是办成了一个季度一次&#xff0c;活动频次的提高&#xff0c;则意味着组织内部新陈代谢的提速&#xff0c;从研发到落地乃至运营&#xff0c;都要…

ChatGPT 这个风口,普通人怎么抓住?

最近在测试ChatGPT不同领域的变现玩法&#xff0c;有一些已经初见成效&#xff0c;接下来会慢慢分享出来。 今天先给大家分享一个&#xff0c;看完就能直接上手的暴力引流玩法。 所需工具&#xff1a; 1&#xff09;ChatGPT&#xff08;最好是plus版&#xff0c;需要保证快速…

一个开源的大型语言模型LLaMA论文简单解读,LLaMA: Open and Efficient Foundation Language Models

一个开源的大型语言模型LLaMA论文解读&#xff0c;LLaMA: Open and Efficient Foundation Language Models返回论文和资料目录 1.导读 LLaMA 是 Meta AI 发布的包含 7B、13B、33B 和 65B 四种参数规模的基础语言模型集合&#xff0c;LLaMA-13B 仅以 1/10 规模的参数在多数的 …

ASEMI代理AD8638ARJZ-REEL7原装ADI车规级AD8638ARJZ-REEL7

编辑&#xff1a;ll ASEMI代理AD8638ARJZ-REEL7原装ADI车规级AD8638ARJZ-REEL7 型号&#xff1a;AD8638ARJZ-REEL7 品牌&#xff1a;ADI /亚德诺 封装&#xff1a;SOT-23-5 批号&#xff1a;2023 安装类型&#xff1a;表面贴装型 引脚数量&#xff1a;5 类型&#xff1…

初谈 ChatGPT

引子 最近&#xff0c;小编发现互联网中的大 V 突然都在用 ChatGPT 做宣传&#xff1a;“ChatGPT不会淘汰你&#xff0c;能驾驭ChatGPT的人会淘汰你”、“带领一小部分人先驾驭ChatGPT”。 确实&#xff0c;ChatGPT这个新生事物&#xff0c;如今被视为蒸汽机、电脑、iPhone 般的…

【ChatGPT 】国内无需注册 openai 即可访问 ChatGPT:ChatGPT Sidebar 浏览器扩展程序的安装与使用

一、前言 问题&#xff1a;国内注册 openai 账号麻烦&#xff0c;新必应有部分人也无法登录成功&#xff0c;存在域名单点登录失败等问题&#xff0c;所以无法真正使用 ChatGPT 解决&#xff1a;大部分人仅需使用 ChatGPT 的搜索功能&#xff0c;无需真正对话&#xff0c;需要…

云计算技术的现状和未来发展趋势分析

近年来&#xff0c;随着互联网、物联网、大数据等技术的不断发展&#xff0c;云计算技术也随之崛起并迅速发展。云计算技术作为一种新的计算模式&#xff0c;不断地改变着我们的生活和工作方式&#xff0c;成为了当今IT产业的一股强大的力量。本文将详细探讨云计算技术的现状和…

第十天面试实战篇

目录 一、springboot的常用注解&#xff1f; 二、springmvc常用注解&#xff1f; 三、mysql的内连接和外连接有什么区别&#xff1f;比如有两张表&#xff1a;A和B内连接只返回两个表A和B的交集部分 四、redis分布式锁的缺点有哪些&#xff1f; 五、如何使用reddssion解决r…

多个渠道成功销售的秘诀速递

将您的电子商务业务扩展到多个渠道销售似乎是一项艰巨的任务吗&#xff1f;但如果有了正确的多渠道增长战略&#xff0c;这可能是实现快速增长的好方法。当然&#xff0c;您需要考虑借助一些工具与策略&#xff0c;而SaleSmartly&#xff08;ss客服&#xff09;可以为您提供。 …

Python做个猫狗识别系统,给人美心善的邻居

嗨害大家好鸭&#xff01;我是爱摸鱼的芝士❤ 宠物真的看着好治愈 谁不想有一只属于自己的乖乖宠物捏~ 这篇文章中我放弃了以往的model.fit()训练方法&#xff0c; 改用model.train_on_batch方法。 两种方法的比较&#xff1a; model.fit()&#xff1a;用起来十分简单&#…