当前位置: 首页> 科技> IT业 > 网站风格类型_黄冈工程造价信息网_苏州seo安严博客_排名函数rank怎么用

网站风格类型_黄冈工程造价信息网_苏州seo安严博客_排名函数rank怎么用

时间:2025/9/5 2:16:04来源:https://blog.csdn.net/2301_77897834/article/details/144077657 浏览次数:0次
网站风格类型_黄冈工程造价信息网_苏州seo安严博客_排名函数rank怎么用

一、初识MySQL数据库

1.什么是数据库

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。 所谓“数据库”是以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合

数据库管理系统: 数据库管理系统(英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML;或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。

2.数据库分类与常见的数据库

关系型数据库: 指采用了关系模型来组织数据的数据库。 关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

关系模型中常用的概念:

关系:一张二维表,每个关系都具有一个关系名,也就是表名

元组:二维表中的一行,在数据库中被称为记录

属性:二维表中的一列,在数据库中被称为字段

:属性的取值范围,也就是数据库中某一列的取值限制

关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成

关系模式:指对关系的描述。其格式为:关系名(属性1,属性2, ... ... ,属性N),在数据库中成为表结构

常见的关系型数据库: MySQL 、Microsoft SQL Server、Oracle数据库、DB2、Percona Server(MySQL的代替品)、PostgreSQL、Microsoft Access

Oracle公司的产品 产品免费、服务收费

SQL Server针对不同用户群体的多个版本 易用性好

Mysql开放源代码 网站应用广泛

非关系型数据库

非关系型数据库的特性

1、使用键值对存储数据;

2、分布式;

3、一般不支持ACID特性;

4、非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。

非关系型数据库的优点:

1、无需经过sql层的解析,读写性能很高;

2、基于键值对,数据没有耦合性,容易扩展;

3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。

非关系型数据库的缺点:

1、不提供sql支持,学习和使用成本较高;

2、无事务处理,附加功能bi和报表等支持也不好;

常见的非关系型数据库:

NoSql 、MongoDB 、redis、 HBase

3.结构化查询语句SQL

名称解释命令
DDL(数据定义语言)定义和管理数据对象,如数据库,数据表等CREATE、DROP、ALTER
DML(数据操作语言)用于操作数据库对象中所包含的数据INSERT、UPDATE、DELETE
DQL(数据查询语言)用于查询数据库数据SELECT
DCL(数据控制语言)用来管理数据库的语言,包括管理权限及数据更改GRANT、COMMIT、ROLLBACK

4.MySQL常用的数据类型

列类型 规定数据库中该列存放的数据类型

  • 数值类型

  • 字符串类型

  • 日期和时间型数值类型

  • NULL值

数值类型

类型说明存储需求
tinyint非常小的数据1字节
int标准整数4字节
bigint较大的整数8字节
float单精度浮点数4字节
double双精度浮点数8字节
decimal字符串形式的浮点数decimal(m, d) m字节 保留d位小数

字符串类型

类型说明存储需求
varchar可变字符串变长度
text文本2的16次方–1字节

日期和时间型数值类型

类型说明
DATEYYYY-MM-DD
DATETIMEYY-MM-DD hh:mm:ss
TIMESTAMPYYYYMMDDhhmmss格式表示的时间戳

NULL值 特别注意

5.MySQL的数据表的类型

MyISAM、InnoDB 、HEAP、BOB、CSV等

名称MyISAMInnoDB
事务处理不支持支持
数据行锁定不支持支持
外键约束不支持支持
全文索引支持不支持
表空间大小较小较大约2倍

6.修改数据表(ALTER TABLE)

//修改表名
ALTER TABLE 旧表名  RENAME AS  新表名//添加字段
ALTER TABLE 表名   ADD 字段名  列类型 [属性]   //修改字段
ALTER TABLE 表名   MODIFY 字段名   列类型 [属性]   
ALTER TABLE 表名   CHANGE 旧字段名  新字段名 列类型 [属性]//删除字段
ALTER TABLE 表名   DROP  字段名

 二、MySQL数据管理

1.DML(数据操作语言)

a.INSERT (添加数据)

单个插入 

insert into student(id,name,money) values (1,'张三',3.9)

多条插入

insert into student(id,name,money) values (3,'张三',3.9),(2,'张三',3.9)
b.UPDATE (修改数据)

语法:

UPDATE 表名 SET 列1 = 值1,列2 = 值2...  [ WHERE 条件 ];

//修改ID为1的学生名字与money 
update student set name = '李四' , money = 3.6 where id = 1; 
​
//将数据表subject中的ClassHour大于110且GradeID为1的课时都减少10update subject set ClassHour = ClassHour+10
where ClassHour>110 and GradeID = 1;
c.DELETE (删除数据)
delete from 表名 [where 条件]
​
delete from student where StudentNo =10066;
d.SELECT (查询数据)
select [列1,列2...| * ] from 表名 [where 条件];
注意:*代表所有列
as 别名:表别名 和列别名
​
select * from student
where GradeID = 1 and Sex = 1;
e.DISTINCT(去重)
select distinct a.StudentName,a.LoginPwd from student a;
​
#student a | student as a:给student起表名 a
#as可以省略
f.逻辑操作符
名称语法
AND或&&a AND b 或 a && b
OR或||a OR b 或 a||b
NOT或!NOT a 或 !a

比较操作符

名称语法
IS NULLa IS NULL
IS NOT NULLa IS NOT NULL
BETWEENa BETWEEN b AND c
LIKEa LIKE b
INa IN (a1,a2,a3,….)

 注意

1、数值数据类型的记录之间才能进行算术运算

2、相同数据类型的数据之间才能进行比较

like:

% 匹配多位

_ 匹配一位

#查询1900年到2000年出生的学生信息
select * from student a 
where
a.BornDate BETWEEN "1900-01-01 00:00:00" and "2000-12-31 23:59:59";
​
#in 匹配多个值
select * from student a
where a.GradeID in (1,2);
​
​
#like 模糊查询
# % 匹配多位
# _ 匹配一位
# 查询姓李的学生
select * from student 
where StudentName like "李%";  #李某  李某某
# where StudentName like "%文%"; #名字带文的
​
# where StudentName like "李_";  #李某
# where StudentName like "李__"; #李某某
​
​
#获得成绩大于等于60且小于等于80的
select * from result a 
where 
a.StudentResult >= 60 and a.StudentResult <= 80;
​
select * from result a 
where 
a.StudentResult between 60 and 80;
​
#获得姓名为空的学生信息
select * from student a
where a.StudentName= "";
​
#获得姓名不为空的学生信息
select * from student a
where a.StudentName is not null;
​
#获得1年级以外的所有学生
select * from student a where a.GradeID != 1;
​
#查询高等数学-1考试成绩 并+10分
select (a.StudentResult + 10) as re
from result a where a.SubjectNo = 1;
​
#DISTINCT 结果去重
select DISTINCT 
a.StudentName,a.LoginPwd from student a;
​
# as (可以省略) 别名
# 列别名
select a.* from student a;
​
#表别名
select a.StudentNo,a.StudentName
form student as a where a.Sex = 1;

2.DQL(数据查询语言)

DQL(Data Query Language,数据查询语言)

a.SELECT语法
SELECT   [ALL | DISTINCT] {* | table.*|[ table.field1 [ as alias1] [,table.field2 [as  alias2]][, …]] }
FROM  table_name  [ as  table_ alias  ][ left|out|inner  join  table_name2]    #联合查询[ WHERE  … ]    #指定结果需满足的条件[ GROUP BY …]   #指定结果按照哪几个字段来分组[ HAVING …] #过滤分组的记录必须满足的次要条件[ ORDER BY… ]   #指定查询记录按一个或者多个条件排序[ LIMIT{[ offset,] row_count | row_count OFFSET offset }] ;      #指定查询的记录从哪条至哪条

AS子句作用

可给数据列取一个新别名

可给表取一个新别名

可把经计算或总结的结果用另外一个新名称来代替

b.连接查询(多表查询)

连接查询

如需要多张数据表的数据进行查询,则可通过连接运算符实现多个查询

分类包括

内连接 ( inner join)

等值和非等值的连接查询

自身连接查询

外连接 ( out join )

左连接(LEFT JOIN)

右连接 ( RIGHT JOIN)

内连接查询

INNER JOIN内连接

在表中至少一个匹配时,则返回记录

SELECT 字段1,字段2,…  FROM  table_1 
INNER JOIN table_2  
ON table_1.字段x = table_2.字段y;
# INNER JOIN 与JOIN 是相同的;
# 如table_1中的行在table_2中没有匹配,则不返回;
​
#从subject和grade数据表查询课程名称和所属年级名称
SELECT SubjectName,GradeName FROM subject 
INNER JOIN  grade 
ON subject.GradeID = grade.GradeID; 

等值和非等值的连接查询

与单表查询类似,都是SELECT语句

把多个表放到FROM后,并用逗号隔开

可使用AS关键字取别名,便于引用

如无重名查询字段则可省略数据表的指定

#从subject和grade数据表查询课程名称和所属年级名称
#非等值连接查询
SELECT SubjectName,GradeName  FROM  subject,grade;  
#等值查询
SELECT SubjectName,GradeName  FROM  subject,grade 
WHERE subject.GradeID = grade.GradeID;
​
外连接查询

左外连接(LEFT JOIN)

从左表(table_1)中返回所有的记录,即便在右(table_2)中没有匹配的行

SELECT 字段1,字段2,… FROM table_1 
LEFT [OUTER] JOIN table_2 
ON table_1.字段x = table_2.字段y;

右外连接(RIGHT JOIN)

从右表(table_2)中返回所有的记录,即便在左(table_1)中没有匹配的行

SELECT 字段1,字段2,… FROM table_1 
RIGHT [OUTER] JOIN table_2 
ON table_1.字段x = table_2.字段y;
JOIN对比
操作符名称描述
INNER JOIN ( JOIN )如果表中有至少一个匹配,则返回行
LEFT JOIN不论右表是否有匹配,都会返回左表的所有行
RIGHT JOIN不论左表是否有匹配,都会返回右表的所有行
自连接查询

数据表与自身进行连接

#从一个包含栏目ID,栏目名称和父栏目ID的表中,查询父栏目名称和其子栏目名称
​
#表结构语句
CREATE TABLE IF NOT EXISTS category(categoryId int(10)  auto_increment  primary key,categoryName   varchar(32) not null ,pid  int(10)
);

3.ORDER BY排序查询

对SELECT语句查询得到的结果,按某些字段进行排序

默认为ASC(升序,从小到大), DESC(降序,从大到小)

select * from 表名 where 条件 order by 列名;  #默认为升序asc
​
select * from 表名 where 条件 order by 列名 desc;  #降序desc

4.LIMIT

LIMIT [m,]n 或 LIMIT n OFFSET m

限制SELECT返回结果的行数

m 制定第一个返回记录行的偏移量

n 制定返回记录行的最大数目

注意:

m不指定则偏移量为0,从第一条开始返回前n条记录

LIMIT 常用于分页显示

SELECT * FROM `result` LIMIT 5      #返回前5条记录
SELECT * FROM `result` LIMIT 5,10   #返回6-15条记录 

5.子查询

在查询语句中的WHERE条件子句中,又嵌套了另外一个查询语句

注意:

嵌套查询可由多个子查询组成,求解的方式是由里及外

子查询返回的结果一般都是集合,故而建议使用 IN 关键字

where条件中嵌套

要求:查询课程为《高等数学-2》且分数不小于80分的学生的学号和姓名
select a.StudentNo,a.StudentName 
from student a 
where a.StudentNo in (select b.SubjectNo from `subject` b LEFT JOIN result c on                  b.SubjectNo=c.StudentNowhere b.SubjectName = '高等数学-2' and c.StudentResult>80);

分析:条件课程名与分数均不在student表中,也没有外键,表连接无法使用。

        1.以学号为条件,使用in ,因为可能存在多名学生

        2.课程表与成绩表存在外键,所以子查询使用表连接

        3.写出课程表语成绩表中两个条件

        4.返回满足的学生学号

 6.GROUP BY 分组

使用GROUP BY关键字对查询结果分组

对所有的数据进行分组统计

分组的依据字段可以有多个,并依次分组

与HAVING结合使用,进行分组后的数据筛选

SELECT 列名1,列名2 FROM 表名 [WHERE 条件] [ GROUP BY 字段] 

select s.s_id,s.s_name from student s GROUP BY s.s_id, s.s_name

 

7.MySQL的函数

统计函数
函数名称描述
COUNT( )返回满足SELECT条件的记录总和数,如 SELECT COUNT(*)…
SUM( )返回数字字段或表达式列作统计,返回一列的总和
AVG( )通常为数值字段或表达列作统计,返回一列的平均值
MAX( )可以为数值字段、字符字段或表达式列作统计,返回最大的值
MIN( )可以为数值字段、字符字段或表达式列作统计,返回最小的值
字符串函数
#将字符串转换为全小写 
select lower("SQL Course");
​
#将字符串转换为全大写 
select upper("SQL Course");
​
#将多个字符串参数首尾相连后返回
select concat("abc","www");
​
#如果有任何参数为null,则函数返回nul
select concat('My',null,'QL');
​
#如果参数是数字,则自动转换为字符串
select concat(14.3,'mysql');
​
#将多个字符串参数以给定的分隔符separator首尾相连后返回
select concat_ws(';','First name','Second name','Last name');
​
#从源字符串str中的指定位置pos开始取一个字串并返回
select substr("hello world!",6);
​
#从源字符串中指定位置开始,截几个
select substr("hello world!",7,2);
​
#len为负值表示从源字符串的尾部开始取起
select substr("hello world!",-6);
​
#返回字符串的存储长度
select length("hello");
​
#返回字符串的字符个数
select char_length("hello world");
​
#从源字符串中返回字串第一次出现的位置
select instr("fooba","o");
​
#在源字符串的左边填充给定的字符padstr到
#指定的长度len,返回填充后的字符串
select lpad("hi",5,"??");
select rpad("hi",5,"??");
​
#去掉字符串两边的空格
select trim("   abc  ");
​
#去掉字符串的左边或右边的空格(左对齐、右对齐)
select ltrim("   abc  ");
select rtrim("   abc  ");
​
#将字符串重复count次后返回
select repeat("mysql",3);
​
#以格式‘#,###,###.##’格式化数字X
select format(123.15,1);
​
#返回由N个空格构成的字符串
select space(3);
​
#返回最左边的len长度的子串
select left("charcater",4);
select right("charcter",5);
​
#如果两个字符串是一样的则返回0;
#如果第一个小于第二个则返回-1;否则返回1
select strcmp("abc","abcd");
日期函数
函数描述
NOW()返回当前的日期和时间
CURDATE()返回当前的日期
CURTIME()返回当前的时间
DATE()提取日期或日期/时间表达式的日期部分
EXTRACT()返回日期/时间按的单独部分
DATE_ADD()给日期添加指定的时间间隔
DATE_SUB()从日期减去指定的时间间隔
DATEDIFF()返回两个日期之间的天数
DATE_FORMAT()用不同的格式显示日期/时间
#获得当前时间
select now();
​
#日期转换函数
select date_format("2024-07-30 09:45:30","%Y%m%d%H%i%s");
​
#MySQL 日期时间计算函数
set @dt = now();
​
#为日期增加一个间隔 date_add()
select date_add(@dt, interval 1 day); -- add 1 day
select date_add(@dt, interval 1 hour); -- add 1 hour
​
#为日期增加一个间隔 date_sub()
select date_sub("2024-07-30 09:52:30",interval "1 1:1:1" day_second);

关键字:网站风格类型_黄冈工程造价信息网_苏州seo安严博客_排名函数rank怎么用

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: