4.10-4.11学习总结

目录

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:结果集对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: NMEA(National Marine Electronics Association)是一种用于航海设备和GPS系统之间进行通信和数据传输的标准协议。其中NMEA 4.104.11是该标准的两个版本,下面是它们之间的区别: 首先,NMEA 4.10是较早的版本,于2003年发布。它主要用于GPS设备和船舶导航系统之间的数据传输。NMEA 4.10支持的数据类型包括位置、速度、航向、时间等信息。它使用ASCII编码格式进行数据传输,并支持串口和USB接口。 相比之下,NMEA 4.11是较新的版本,于2014年发布。它在NMEA 4.10的基础上进行了更新和改进。NMEA 4.11保留了4.10版本的数据类型和ASCII编码格式,但增加了对NMEA 0183和NMEA 2000两个标准的支持。NMEA 0183是一种用于航海设备之间串行通信的标准协议,而NMEA 2000是一种用于现代船舶的网络通信协议。 此外,NMEA 4.11还引入了更多的数据类型和命令,以满足航海设备之间更复杂的通信需求。它还提供了更高的数据传输速率和更好的数据处理能力,以满足现代船舶导航系统对数据精确性和实时性的要求。 综上所述,NMEA 4.104.11之间的区别主要在于支持的标准协议、数据类型和命令的增加,以及数据传输速率和处理能力的改进。NMEA 4.11相比4.10更加先进和适用于现代航海设备的通信需求。 ### 回答2: NMEA是全球卫星导航系统(GNSS)设备中最常用的标准之一,它定义了通过串口传输位置、速度和时间等信息的数据格式。NMEA 4.104.11是NMEA标准的两个版本,它们之间的区别如下: 1. NMEA 4.10是较早的版本,而NMEA 4.11是更新的版本。更新的版本通常会修复旧版本中的错误、改进功能以及引入新的功能。 2. NMEA 4.104.11在数据格式上有所不同。4.10使用逗号作为数据字段之间的分隔符,而4.11使用分号作为分隔符。 3. NMEA 4.11引入了RMC消息的新字段。RMC消息用于报告GNSS接收器的推荐最小定位数据,如纬度、经度、速度和航向等。新字段可以提供额外的信息,如磁偏角和磁偏角方向。 4. NMEA 4.11还引入了一个新的消息类型GLGSV。GLGSV消息用于报告GLONASS卫星的视图,提供了更完整的GNSS定位数据。 5. NMEA 4.11还为某些消息类型引入了新的校验和计算方法。这些校验和用于检测数据传输过程中可能出现的错误。 总的来说,NMEA 4.11相对于4.10来说是一个更为完善和功能更强大的版本。它修复了旧版本中的错误并引入了新的功能,提高了数据的可靠性和准确性。因此,如果有使用GNSS设备的需要,建议选择更新的NMEA 4.11版本以获取更好的性能和功能。 ### 回答3: NMEA(National Marine Electronics Association)4.104.11都是用于海洋电子设备之间数据传输的标准协议。它们之间的主要区别可以从以下几个方面来解释。 第一,消息格式不同。NMEA 4.10采用ASCII字符作为消息的传输格式,而NMEA 4.11使用二进制格式。与ASCII字符相比,二进制格式能够更高效地传输数据,因为它可以使用更少的字符来示相同的信息。 第二,数据类型支持不同。NMEA 4.10支持的数据类型较为有限,主要包括位置、航向、速度等信息。而NMEA 4.11在数据类型上更为丰富,可以支持更多的传感器数据,如气象信息、深度传感器数据等。这使得NMEA 4.11更适合于需要更复杂数据的应用场景。 第三,错误检测和纠正机制不同。NMEA 4.10使用简单的校验和机制来检测传输错误,而NMEA 4.11采用更加强大的循环冗余校验(CRC)机制来提高数据的准确性和可靠性。CRC能够检测和纠正更多类型的传输错误,从而降低数据传输的错误率。 总的来说,NMEA 4.104.11之间的主要区别在于消息格式、数据类型支持和错误检测机制。根据具体的应用需求,选择适合的协议版本可以提高数据传输的效率和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值