数据库基础


前言

提示:这里说明学习目标
学习目标:

  1. 数据库概述。了解存储方式、技术构成、常见数据库
  2. 了解MySQL安装与配置(Windows、linux)
  3. 熟悉mysql数据类型、创建数据库、建表

提示:以下是本篇文章正文内容,下面案例可供参考

一、数据库基础概述

1.1 数据库访问方式

在这里插入图片描述

1.2 数据库概念

为什么要学习数据库?
答:90%以上的软件都需要操作数据,比如游戏、社交、新闻、商城、财务等。

什么是数据库?
答:数据库专业的来说,其实就是一种电子的仓库,是专门存储数据和管理数据的一种处所,用户可以对数据库中的数据进行新增、更新或者删除等操作。

举个例子,现在每一个人都有很多朋友和同学,为了方便联系,我们在通讯录,及案例有关姓名和电话,这个通讯录就是数据库,有时候我们会修改某个电话号码。

1.3 数据管理技术的历史

在这里插入图片描述

1.4 数据库应用中的术语

数据(Data):图像、语音、文字等。在计算机系统中,各种字母、数字符号的组合、语音、图形、图像等统称为数据。

数据库(Database):Access、MSSQL、Oracle、SQLITE、MySQL等。数据库是按照数据结构来组织、存储和管理数据的“仓库”。

数据库管理系统(DBMS):Access、MSSQL、Oracle、SQLITE、MySQL等。数据库管理系统(database management system)是一种操纵和管理数据库的软件,用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

结构化查询语言(SQL):DQL、DCL、DDL、DML、TCL等。结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

1.5 数据库分类

数据库管理系统主要分为以下两类:

关系数据库

关系数据库是创建在关系模型基础上的数据库,“一对一、一对多、多对多”等关系模型,借助于激活代数等数学概念和方法来处理数据库中的数据。现实世界中各种实体以及实体之间的各种联系均用关系模型来表示。
几乎所有的数据库管理系统都配备了一个开放式数据库连接(ODBC)驱动程序,令各个数据库之间得以互相集成。
安全系数高,容易理解,比较浪费磁盘空间。
典型代表有:MySQL、Oracle、Microsoft SQLServer、Access及PostgreSQL等

非关系型数据库NoSQL

非关系型数据库是对不同于传统的关系数据库的数据库管理系统的统称。与关系数据库最大的不同点是不使用SQL作为查询语言。
安全系数低,效率高
典型代表有:BigTable(Google)、Cassandra、MongoDB、CouchDB;redis还包括键值数据库:Apache Cassandra(Facebook)、LevelDB(Google)

常见数据库

在这里插入图片描述
MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,术语Oracle旗下产品,MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(Relational Database Managerment System,关系数据库管理系统)应用软件之一。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
Mysql5.0增加了INFORMATION_SCHEMA系统数据库。
端口号:3306

在这里插入图片描述
SQL Server(MS SQL)
SQL Server是Microsoft公司推出的关系型数据库管理系统。具有使用方便可伸缩性好、更安全可靠的存储功能与相关软件集成程度高等优点,这款数据库的特定是真正的客户/服务器体系结构,并且是图形化的用户界面,使数据库管理方式更加直观和简单。它还提供了丰富编程接口工具,为用户进行程序数据提供了更多的选择,在使用上也是非常广泛的。
sql server和mysql都是广泛使用的关系数据库管理系统(RDBMS)
SQL Server不是开源的,是商业的
SQL Server仅支持Linux和Windows平台,主要用于.Net应用程序或Windows项目。
SQL Server语法简单易用

在这里插入图片描述
Oracle
是一款比较典型的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为一个分布式数据库它失效了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。
端口号:1521

在这里插入图片描述
Access
这款数据库是由微软发布的,是一款关联式数据库关联系统的数据库,通常是被用来开发Web应用程序这些应用程序都利用Asp技术在lls上运行,但是由于Access是小型的数据库,在很多的使用上都有着局限性,而且如果过多的数据库访问量还会造成数据库的性能极具下降。

二、MySQL安装与配置

打开MySQL官网进行安装包的下载 https://www.mysql.com/

在这里插入图片描述
在这里插入图片描述

1:安装所有 MySQL 数据库需要的产品;
2:仅使用 MySQL 数据库的服务器;
3:仅使用 MySQL 数据库的客户端;
4:安装所有包含 MySQL 数据库的产品;
5:手动选择需要安装的 MySQL 数据库的
产品。

在这里插入图片描述
接下来到了配置的阶段了,根据下图去配置(都是默认值,一般不需要更改)
在这里插入图片描述
点击next后,进入此页面,输入自己的登录密码,输两次完成后,点击next
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
运行SQL
在这里插入图片描述
显示如下界面说明MySQL服务启动成功
在这里插入图片描述

MySQL添加到环境变量

能在cmd中访问sql服务

  1. 右键我的电脑,点击属性,找到高级系统设置
  2. 点击环境变量进行配置
  3. 在系统变量中找到Path变量,点击编辑
  4. 新建环境变量,将mysql安装路径下的bin路径添加至此,点击确认即可

三、Mysql数据库操作

数据库构成

表(table):在一个数据库中的表看起像一个简单的电子表格,名字是唯一的
列(column):表中的一个字段。所有表都是由一个或多个列组成的。
行(row):表中的一个记录
值(value):行的具体信息,每个值必须与该列的数据类型相同;
主键(primary key):是一个用于唯一标识数据库表中每一行数据的字段或字段集合。主键的值必须是唯一的,而且不能包含NULL值。每个表只能由一个主键,它用来确保表中的每一行都能被唯一地识别和访问。

初始化安装mysql数据库后,会默认创建4个数据库:
在这里插入图片描述在这里插入图片描述

数据库连接

使用命令行连接
mysql -h(主机地址) -u root(用户名) -p(指定密码)
在这里插入图片描述
在自己电脑上登陆可以不加-h参数。-p:如果登陆密码为空,可以忽略。

数据库操作

# 创建数据库
create database database_name;

在这里插入图片描述

注意:
create database是MySQL的关键字不
能打错或者遗漏. 数据库名不能空格;否则会报错(看错误时
直接看后面有关 ’ ’ 的字段就行)
数据库的名称不能以数字开头

# 删除数据库
drop database database_name;

在这里插入图片描述

show databases;
# 列出mysql数据库管理系统的数据列表。(注意是databases是复数形式)

在这里插入图片描述

use 数据库名;
# 选择需要操作的数据库,使用该命令后所有的Mysql命令都只针对该数据库。
# 出现changed字段代表成功;

在这里插入图片描述

创建数据表(创建mysql数据表需要以下信息:表名、表字段名、定义每个表字段)

CREATE TABLE 表名 (属性名 数据类型 完整性约束条件,
属性名 数据类型 完整性约束条件,
属性名 数据类型 );

CREATE TABLE school(id int,
name varchar(20),
sex char(5);
);
# MySQL命令终止符为分号 ;

在这里插入图片描述
约束条件

约束条件说明
PRIMARY KEY标识该属性为该表的主键
FOREIGN KEY标识该属性为该表的外键
NOT NULL标识该属性不能为空
UNIQUE标识该属性的值是唯一的
AUTO_INCREMENT标识该属性的值自动增加
DEFAULT为该属性设置默认值

(一)主键约束
主键与记录之间的关系如同身份证和人之间的关系,它们是一一对应的。
1)主键约束要求主键列的数据要唯一,并且不允许为空。
2)主键能唯一的标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,加快数据库的查询速度
3)一般分为单字段主键和多字段联合主键

  1. 单字段主键
    字段名 数据类型 primary key [默认值]
  2. 多字段联合主键
    primary key [字段1,字段2…]

(二)外键
[constraint 外键名] foreign key (字段名1) references 主表名 (主列1)
外键用来两个表之间的数据建立连接。它可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则一个表的外键必须为另一个表的主键。
主表(父表):主键所在
从表(子表):外键所在

(三)非空约束
字段名 数据类型 not null

(四)唯一性约束
字段名 数据类型 unique
注意:unique和primary key最大的区别:一个表可以有多个唯一性约束,但是只能有一个主键约束,且声明unique可以有空值,但是primary key不可以。

五)默认约束
字段名 数据类型 default 默认值
可以指定列表的默认值,例如,列表男性同学多,性别可以设置默认值为男,那么在如果没有为这个字段赋值时,系统会自动为这个字段赋值“男”

删除数据库表
MySQL中删除数据表是非常容易操作的,但是你在进行删除表操作时要非常小心,因为执行删除命令后
所有数据都会消失。

语法,以下为删除MySQL数据表的通用语法:
DROP TABLE table_name ;

在这里插入图片描述

插入语句
insert into table_name(field1, field2,...fieldN)
Values
(value1, value2,...valueN);
接下来我们可以通过
select * from 表名
查看数据表数据:

在这里插入图片描述
在这里插入图片描述

show tables;
# 显示指定数据库的所有表,使用该命令前需要使用use命令来选择要操作的数据库。

在这里插入图片描述

show columns from table_name;
show full columns from table_name;(查看备注信息)
# 显示数据表的属性,属性类型,主键信息,是否为NULL,默认值等其他信息。

Field:列名;
Type:数据类型;
Null:是否能取空值;
Key:PRI(主键)MUL(普通的b-tree索引)UNI(唯一索引);Default:默认值;
Extra:其他信息。

在这里插入图片描述
在这里插入图片描述

show index from table_name;
# 显示数据表的详细索引信息,包括primary key(主键)。

tables:表名;
Non_unique:索引能否重复;
Key_name:索引的名称;
Seq_in_index:索引中的序列号,从一开始;
Column_name:列名称;
Collation:列以什么方式存储在索引中。'A'(升序)NULL(无分类);
Cardinality:索引总唯一的数目的估计值;
Sub_part:如果列只是被部分地编入索引,则为被编入索
引地字符地数目。如果整列被编入索引,则为NULL;
Packed:指示关键字如何被压缩。如果没有被压缩,则为
NULLNULL:如果列中含有NULL,则含有YES。如果没有,则该
列含有NO;
Index_type:用过地索引方法;
Comment:多种拼注。

在这里插入图片描述

修改表名
Alter table 旧表名 rename 新表名;

在这里插入图片描述

修改字段的数据类型
Alter table 表名 modify 属性名 数据类型;

在这里插入图片描述
在这里插入图片描述

修改字段名
Alter table 表名 change 旧属性名 新属性名 新数据类型;

在这里插入图片描述

增加字段
Alter table 表名 add 属性名 数据类型 [完整性约束条件];
alter table 表名 add foreign key (user_id) references 主表表名 (字段名)

在这里插入图片描述

删除字段
Alter table 表名 drop 属性名 ;

在这里插入图片描述

# 查询语句
//取出表中所有列
select * from table_name;
//列名,表名。这个表中这两个列名的取出来
select column_name,column_name from table_name;
#ps:查询语句中你可以使用一个或者多个表,表之间使用逗(,)分割,并使用WHERE语句来设定查询条件。你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据

# where子句
# 类似于程序语言中的if条件,根据mysql表中的字段值来读取指定的数据。
# where的字符串比较是不区分大小写的。
# 可以使用where binary关键子来设定where子句的字符串比较是区分大小写的。

# 修改语句
# 如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作。
# update更新:
update table_name set field1=new-value1, field2=new-value2;

/*
你可以同时更新一个或多个字段。
你可以在 WHERE 子句中指定任何条件。
你可以在一个单独表中同时更新数据。
当你需要更新数据表中指定行的数据时 WHERE 子句是非常有用的。
*/

# 删除语句
# delete语句用来删除mysql数据表中的记录。
delete from table_name [where] field1=new-value
# 如果没有指定where子句,则会删除表中所有的记录。

MySQL 数据类型

MySQL中定义数据字段的类型对数据库的优化非常重要的。
MySQL支持多种类型,重点讲解以下三类:数值、日期/时间和字符串(字符)类型

整数类型
一共有5种,包括TINYINT、SMALLINT、MEDIUMINT 、INT(INTEGER)、BIGINT,MySQL支持数据类型的后面指定该类型的显示宽度。
在这里插入图片描述
在这里插入图片描述

浮点型
浮点数和定点数类型的特点是可以处理小数 ,你可以把整数看成小数的一个特例。因此,浮点数和定点数的使用场景,比整数大多了。 MySQL支持的浮点数类型,分别是 FLOAT、DOUBLE、REAL
平常用的float,double 在SQL中也有,形式为float(M,D), 和double(M,D) M表示有效数字,D表示小数点后几位表示
不过一般用decimal(M,D)表示精确数值
在这里插入图片描述

日期与时间
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
TIMESTAMP类型有专有的自动更新特性,将在后面描述
在这里插入图片描述

字符串
CHAR(M) 类型一般需要预先定义字符串长度。如果不指定(M),则表示长度默认是1个字符。
VARCHAR(M) 定义时, 必须指定长度M,否则报错。
在这里插入图片描述
ps:大的文本 : text blob
char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表
字节个数,比如 CHAR(30) 就可以存储 30 个字符。

四、SQL查询语句

基本查询语句

查询数据
是数据库操作中最常用的操作。通过对数据库的查询,用户可以从数据库中获取需要的数据。数据库中可能包含着无数的表,表中可能包含着无数的记录。因此,要获得所需的数据并非易事。MySQL中可以使用SELECT语句来查询数据。根据查询的条件的不同,数据库系统会找到不同的数据。通过SELECT语句可以很方便地获取所需的信息。

# MySQL中select的基本语法形式:
Select 属性列表
from 表名
[where 条件表达式1]
[group by 字段名1]
[order by 属性名2 [asc | desc]]

Select id,name,age from students;
# 语句执行,从students表中查询出id,name,age 3个字段的所以记录

select id,name,age from students where age>18 order by age desc;
# 从students表中查询age大于18的记录,按照age字段降序进行排序


在这里插入图片描述
在这里插入图片描述

表单查询

# 使用“*”查询所有字段
# *可以表示所有字段,不能改变字段的排列顺序
select * from students;

# 查看数据库中的表结构
desc 表名;
# 或者
describe 表名;

# 查询指定字段
select 字段名1,字段名2 from 表名;

# 去除重复数值
select distinct 字段名 from 表名;
#字段名(要去除重复数值的列)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

where 子句

查询指定记录:
Where 条件表达式
select id,name,age,sex from students where id=1;

在这里插入图片描述

Where子句常用查询条件

查询条件符号或关键字
比较<、<=、>、>=、!=、<>
指定范围BETWEEN AND、NOT BETWEEN AND
指定集合IN、NOT IN
匹配字符LIKE、NOT LIKE
多个查询条件AND、OR

比较符
“=“ 等于
“<“ 小于
“<=“ 小于等于
“>” 大于
“>=“ 大于等于
“!=“ 不等于
“<>” 不等于

IN关键字查询
IN关键字可以判断某个字段的值是否在指定的整合中。
如果字段的值在集合中,则满足查询条件,该记录将被查询出来;如果不在集合中,则不满足查询条件。
其语法规则如下:
[NOT] IN (元素1,元素2…元素n)
注:集合中的元素为字符时必须加上引号
在这里插入图片描述

Between查询范围
判读字段的值是否在指定范围,语法规则如下:
[NOT] BETWEEN 取值1 AND 取值2
取值1:大于等于这个值
取值2:小于等于这个值
在这里插入图片描述

Like匹配查询
匹配字符串是否相等,语法规则如下:
[NOT] like ‘字符串’
此处LIKE与等于号(=)是等价的。
Like匹配查询
使用like匹配带有通配符‘%’的字符串‘王%’
字符串中包含通配符时,‘=’不能代替like。
在这里插入图片描述
使用like匹配带有通配符‘’的字符串‘王’ 匹配单个字符
在这里插入图片描述
下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符

AND多条件查询 等同于&&
联合多个条件进行查询,语法规则如下:
条件表达式1 AND 条件表达式2
在这里插入图片描述
查询表中age为17且name为李开头的记录。
OR多条件查询 等同于||
只要满足几个查询条件中的其中一个,记录就会被查询出来,语法规则如下:
条件表达式1 OR 条件表达式2
在这里插入图片描述
注:当AND与OR一起使用时,AND要比OR先运算。

LIMIT子句

LIMIT限制查询结果的数量
LIMIT不指定初始位置,从第一条记录开始
显示。语法规则如下:
LIMIT 记录数
limit n,m
n:开始位置
m:要检索的行数
行0 :检索出来的第一行为行0,而不是行1,
因此,limit 1,1将检索出第二行而不是第一
行。
在这里插入图片描述

排序

对查询结果排序
ORDER BY 对记录进行排序。语法规则如下:
ORDER BY 属性名 [ASC | DESC]
ASC:升序(默认升序)
DESC:降序
可以给多个列排序,只需要指定列名,列名之
间用逗号分开即可。
在这里插入图片描述

# order by和limit组合
# 能够找出一个列中最高或最低的值
select 字段名 from 表名
order by 字段名 DESC|ASC
LIMIT 1;

在这里插入图片描述

分组查询

GROUP BY 将查询结果按某个字段或多个字段进行分组。字段中的值相等的为一组。
语法规则如下:
GROUP BY 属性名 [having 条件表达式]
在这里插入图片描述

分组查询
使查询结果按照某一列或多列值进行分组,值相等的为一组。
GROUP BY [ALL] GROUP_BY_EXPRESSION
HAVING
对分组后的结果按条件进行筛选只能在Group by子句后使用,不能单独使用,只能对分组计算的结果进行筛选不能使用别名
select 字段名 from 表名 group by 字段名 having 等式;

集合函数

包括COUNT()、SUM()、AVG()、MAX()和MIN()。
当需要对表中的记录求和、求平均值、查询最大值和查询最小值等操作时,可以使用集合函数。GROUP BY关键字通常需要与集合函数一起使用。
COUNT()用来统计记录的条数;
SUM()用来计算字段的值的总和;
AVG()用来计算字段的值的平均值;
MAX()用来查询字段的最大值;
MIN()用来查询字段的最小值;

COUNT()
用来统计记录的条数;
在这里插入图片描述

SUM()
用来计算字段的值的总和;
在这里插入图片描述

AVG()
用来计算字段的值的平均值:
在这里插入图片描述

MAX()
用来查询字段的最大值;
在这里插入图片描述

MIN()
用来查询字段的最小值。
在这里插入图片描述

正则表达式查询

正则表达式
是用某种模式去匹配一类字符串的一一个方式。例如,使用正则表达式可以查询出包含A、B和C其中任一字母的字符串。正则表达式的查询能力比通配字符的查询能力更强大,而且更加的灵活。正则表达式可以应用于非常复杂查询。
使用REGEXP关键字来匹配查询正则表达式。
其基本形式如下:
属性名 REGEXP '匹配方式’
“属性名”参数表示需要查询的字段的名称;
“匹配方式” 参数表示以哪种方式来进行匹配查询。

模式描述
^匹配输入字符串的开始位置,如果设置了RegExp对象的Multiline属性,^也匹配‘\n’ 或‘\r’之后的位置。
$匹配输入字符串的结束位置,如果设置了RegExp对象的Multiline属性,$也匹配‘\n’或’\r’之前的位置。
·匹配字符串中的任意一个字符
[…]字符集合。匹配所包含的任意一个字符。例如,'[abc]'可以匹配”plain“中的’a‘。
[^…]负值字符集合。匹配未包括的任意字符。例如,'[^abc]'可以匹配”plain“中的’p‘。
p1或p2或p3匹配p1或p2或p3。例如,’z或food‘能匹配”z“或”food“。’(z或f)ood‘则匹配”zood“或”food“。
*匹配前面的子表达式零次或多次。例如,zo*能匹配”z“ 以及”zoo“。*等价于{0,}
+匹配前面的子表达式一次或多次。例如,’zo+‘能匹配”zo"以及“zoo",但不能匹配”z“。+等价于{1,}.。
{m}m是非负整数。匹配确定的m次。例如,’o{2}‘不能匹配”Bob"中的’o’,但是能匹配”food“中的两个o。
{m,n}m和n均为非负整数,其中m<=n。最少匹配m次且最多匹配n次。

“^”查询以特定字符或者字符串开头的记录
在这里插入图片描述
“$”查询以特定字符或者字符串结尾的记录
在这里插入图片描述
“.”匹配字符串中的任意一个字符。
在这里插入图片描述
注:“.”和“_”的区别
两个都可以代替任意一个字符进行查询。
“.”只能用于regexp关键字进行匹配
在这里插入图片描述
[…]字符集合。匹配所包含的任意一个字符。
在这里插入图片描述
[]可以指定集合的区间。
如:[a-z],[1-9]

正则表达式可以匹配字符串。当表中的记录包含这个字符串时,
就可以将该记录查询出来。如果指定多个字符串时,需要用符
号“|”隔开。只要匹配这些字符串中的任意一个即可
在这里插入图片描述
“*”和“+”
匹配多个字符,
和+都可以匹配多个该符号之前的字符。
“+”:至少表示一个字符
”:可以表示0个字符
在这里插入图片描述
‘{m}’或者’{m,n}’来指定字符串连续出现的次数
{m}:m是一个非负整数。匹配确定的 m 次。
{m,n}:m 和 n 均为非负整数,其中m <= n。
在这里插入图片描述

运算符

MySQL运算符
可以指明对表中数据所进行的运算。
MySQL 主要有以下几种运算符:
算术运算符:加减乘除求余,主要是用在数值计算上。
比较运算符:大于、小于、等于、不等于,主要用于数值的比较和字符串的匹配上。
逻辑运算符:与、或、非、异或等,结果只返回真值(1或者true)和假值(0或false)。

算术运算符:加减乘除求余,主要是用在数值计算上。
在这里插入图片描述

运算符作用
+加法
-减法
*乘法
/或DIV除法
%或MOD取余

mod(n,m)
n%m n除m取余数
n div m n除m取结果的整数

比较运算符:大于、小于、
等于、不等于,主要用于数值
的比较和字符串的匹配上。

符号描述
=等于
<>,!=不等于
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在两值之间
NOT BETWEEN不在两值之间
IN在集合中
NOT IN不在集合中
<=>严格比较两个NULL值是否相等
LIKE模糊匹配
REGEXP 或 RLIKE正则式匹配
IS NULL为空
IS NOT NULL不为空

逻辑运算符:与、或、非、异或等,结果只返回真值(1或者true)和假值(0或false)。

运算符号作用
NOT或!逻辑非
AND或&&逻辑与
OR或
XOR逻辑异或

在这里插入图片描述
运算符优先级

优先级(高到低)运算符
1!
2-(负号)、~(位反转)
3^
4*、/、%
5-(减号)、+
6<<、>>
7&
8
9=(比较运算)、<=>、>=、>、<=、<、<>、!=、 IS、LIKE、REGEXP、IN
10BETWEEN、CASE、WHEN、THEN、ELSE
11NOT
12&&、AND
13XOR
14
15=(赋值语句)、:=

注释符
MySQL 注释符号有三种,分别如下所示。

  1. #…
  2. “-- “(注意:”–” 后面有一个空格)
  3. //

1、“#”,表示单行注释,语法“#注释内容”
2、“–”,表示单行注释,语法“-- 注释内容”
3、“/**/”,表示多行注释,语法“/注释内容/”

查询函数

联合查询 : UNION
并操作 union、交操作 intersect、差操作 except
UNION用于合并具有相同字段结构的两个表的内容,主要用在一个结果中集中显示不同表的内容
union查询默认不返回重复记录
union查询的表的字段必须一样
union查询的数据类型必须能兼容
#union查询结果只增加了行数而列数不变

union操作符用于合并两个或多个select语句的结果集。
union所查询的列数、列的顺序必须相同,数据类型必须兼容。

select * from venus1
union
select * from venus2

组合查询
id = 1 order by 4 – + 正常
id = 1 order by 5 – + 异常
结论:当前语句查询了四列
在这里插入图片描述

嵌套查询 : [NOT]IN、ANY、ALL、[NOT]EXISTS
1.子查询
2.子查询可以继续嵌套
3.子查询中不可以使用order by子句,只对最后结果排序
4.子查询要用括号括起来
子查询结果为集合时可用如下关键字判断
[NOT]IN [不]包含其中
ANY//ALL 任何一个//所有的
[NOT]EXISTS [不]存在

# 系统用户名:system_user()
# 查询语句:
select system_user();
select user from mysql.user

# 用户名:user()
# 查询语句:
select user();

# 当前用户名:current_user()
# 查询语句:current_date()当前日期
select current_user();

# 连接数据库用户名:session_user()
# 查询语句:
select session_user();

# 数据库名:database()
# 查询语句:
select database();

# 数据库版本:version()
# 查询语句:
select version();

# 数据库读取路径:@@basedir
# 查询语句:
show variables like '%basedir%';

# MYSQL安装路径:@@char
# 查询语句:
show variables like"%char%";

# 查看当前系统版本:@@version_compile_os
# 查询语句:
select @@version_compile_os;

# 其它相关函数:
left(s,n) #返回字符串s最左边的字符 n是个数
right(s,n) #返回字符串s最右边的字符
substr(s,n,len) mid(s,n,len)
#截取字符串s的第n个字符,且截取长度为len
lpad(string,length,’str2’) rpad(string,length,’str’)
#string:需要填充的字符串 length:填充之后的总长度 str:填充字符串,默认空格

LOCATE(‘str’,’str1’) LOCATE(str,str1,pos) locate(‘a’,’locala’,5)
#返回str在str1中第一次出现的位置 pos--从pos位置开始检索
insert(str1,pos,len,str2)
#str1:指定字符串 pos:开始被替换的位置 len:被替换字符串长度 str2:新字符串
instr(field, str)
#返回field字符串中出现str字符串的位置
position(str1 in str2)
#返回字符串中第一次出现的子字符串的位置,若没有返回0

# 判断当前用户的第一字符:
# 查询语句:
select left(user(),1)=’r’;
# 判断当前用户的最后一个字符:
# 查询语句:
select right(user(),1)=’r’;
#正确返回1,错误返回0

# 截取函数:
# 截取当前数据第二个字符是否为r
# 查询语句:
select substr(database(),2,1)=’r’;
select mid(database(),2,1)=’r’;
#正确返回1,错误返回0

concat(str1, str2,...) select concat(“abc”,NULL,”fg”) NULL
#返回结果为连接参数产生的字符串
concat_ws(separator, str1, str2, ...) select concat_ws(+,123,345) 123+345
#用第一个参数作为连接符号将字符串连接
group_concat(str1)
#将group by产生的同一个分组中的值连接起来,返回一个字符串
if(expr,v1,v2) select if(1<2,1,0);
#expr:条件 满足条件返回V1,不满足条件返回V2

case when expr then v1 else v2 end
#满足expr,则返回V1,不满足则返回V2
sleep(N)
#执行select sleep(N)可以让此语句运行N秒
oct() #转换为8进制 ord() 返回第一个字符串的第一个字符的ascii值
hex() #转换为16进制
char() #转换为字符串
ascii() #ASCII值

# 数据库函数:
infomation_schema
information_schema # 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等。
infomation_schema.schemata infomation_schema.tables infomation_schema.cloumns

总结

通过学习,对数据库、MySQL数据库、查询函数有个基本了解。创建表,修改表以及数据库常见的数据类型是今天的重点内容,创建数据库表时应该考虑各种数据类型的特点,根据不同的需求选择相应的数据类型,我们需要通过不断的实践练习,才会对这些内容了解得更加透彻。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值