MYSQL基础语法

1-什么是数据库

数据库就是保留数据的仓库,体现在电脑当中,是一个软件或者是文件系统。然后把这些数据都保存在特殊的文件中,然后使用固定的语言(SQL语句)去操作文件中的数据。

2-数据库的优点

数据库是按照特定的格式将数据存储在文件当中,通过SQL语句可以方便的对大量的数据进行CRUD(增删查改)。

3-常见的数据库

Oracle:它是Oracle公司的大型关系型数据库。系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、安全可靠的。但是它是收费的。

MYSQL:早期由瑞典一个叫MySQL AB公司开发的,后期被sun公司收购,再后期被Oracle收购。体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。MySQL6.x版本也开始收费。

 DB2 :IBM公司的数据库产品,收费的。常应用在银行系统中.

SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。

SyBase:Sybase公司的。 已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。

4-关系型数据库

关系型数据库是一种通过表格形式存储数据的数据库系统,数据以行和列的形式组织。每个表代表一个实体,列表示属性,行则表示具体记录。关系型数据库使用结构化查询语言(SQL)进行数据操作,支持数据的增删改查和复杂的查询。

5-SQL语句的分类和语法

1-什么是SQL

Structed Query Language结构化查询语言,对于所有的数据库都是通用的,但是任何数据库,也都会有其特有的语言。

2-SQL的特点

SQL语言是一门非过程性的语言,每一条语句执行完都会有一个结果出现,多条语句之间没有影响。

3-SQL语句的分类

  1. DDL(Data Definition Language)数据定义语言 用来定义数据库对象:数据库,表,列等。关键字:create drop alter truncate(清空数据记录) show等

  2. DML(Data Manipulation Language)数据操作语言

    在数据库表中更新,增加和删除记录。如 update(更新), insert(插入), delete(删除) 不包含查询

  3. DQL(Data Query Language) 数据查询语言数据表记录的查询。关键字select。

  4. DCL(Data Control Language)数据控制语言(了解)

    是用来设置或更改数据库用户或角色权限的语句,如grant(设置权限),revoke(撤销权限),begin transaction等。这个比较少用到。

4-SQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾。

  2. 可使用空格和缩进来增强语句的可读性。

  3. MySQL数据库的SQL语句不区分大小写,关键字开发中一般大写。eg:a

    SELECT * FROM student;
  4. 3种注释 单行注释: -- 注释内容 多行注释: /* 注释 */

    # 注释内容(mysql特有的单行注释)

6-DDL创建数据库

1.直接创建数据库

CREATE DATABASE 数据库名

2-判断是否存在并创建数据库

CREATE DATABASE IF NOT EXISTS 数据库名

3-创建数据库并指定字符集

创建数据库并指定字符集是指在建立数据库时,选择一个特定的字符编码方案来存储文本数据。这确保数据库能够正确处理和显示不同语言和符号的字符。

主要点包括:

字符集:定义了可以使用哪些字符,例如UTF-8支持多种语言的字符。
数据完整性:指定字符集可以避免因字符编码不一致而导致的数据损坏。
兼容性:不同的应用程序或用户可能需要不同的字符集,选择合适的字符集可以提高系统的兼容性。
在创建数据库时,通过设置字符集,开发者确保数据的正确存储和检索。

CREATE DATABASE 数据库名 character set 字符集;

举例

CREATE DATABASE my_database CHARACTER SET utf8mb4;

4查看数据库

1-查看所有的数据库

SHOW DATABASES;

2-查看某个数据库的定义信息

SHOW CREATE DATABASE 数据库名;

7-DDL修改和删除数据库

1-修改数据库字符集

ALTER DATABASE 数据库 default character set 新的字符集;

注意:如果修改数据库指定的编码表是utf8,记住不能写utf-8.。utf-8 是错误的

(mysql不认识utf-8)。

java中的常用编码 : UTF-8; GBK;GB2312;ISO-8859-1;

对应mysql数据库中的编码: utf8; gbk;gb2312; latin1;

2-删除数据库

DROP DATABASE 数据库名;

8-DDL使用数据库

1-查看正在使用的数据库

SELECT DATABASE();

2-使用某个数据库

USE 某个数据库名

9-DDL创建表

1-创建表

CREATE TABLE 表名 (字段名1 字段类型1, 字段名2 字段类型2
);
最后一个字段不加逗号

2-MYSQL中的数据类型

3-举例 

  • 需求:设计一张学生表,请注重数据类型长度的合理性

1.编号

2.姓名,姓名最长不超过10个汉字

3.性别,因为取值只有两种可能,因此最多一个汉字

4.生日,取值为年月日

5.入学成绩,小数点后保留两位

6.邮件地址,最大长度不超过 64

7.家庭联系电话,不一定是手机号码,可能会出现 - 等字符

8.学生状态(用数字表示,正常、休学、毕业...)

-- 需求1:创建学生表
create table stu(-- 编号id int,name varchar(10), -- 10表示姓名的值最多只能是10个字符sex char(1), -- 1表示性别是1个字符birthday date,score double(5,2), -- 5 表示长度最多是5   2 表示小数点保留2位,即位数 3.14email varchar(64),tel varchar(20),-- 学生状态,tinyint 表示微整型 -- status 0 表示正常 1 休学 2 毕业status tinyint
);

 10-DDL查看表

1-查看某个数据库中的所有表格

SHOW TABLES;

2-查看表的结构

DESC 表名;

3-查看创建表的SQL语句

SHOW CREATE TABLE 表名;

11-DDL删除表

1-快速创建一个表结构相同的表格

CREATE TABLE 表名 LIKE 其他表;

2-删除表格

1-直接删除

DROP TABLE;

2-判断表是否存在并删除

DROP TABLE IF EXISTS 表名;

12-DDL修改表的结构

1-添加表列

ALTER TABLE 表名 ADD 字段名/列名 类型;

2-修改列的类型

ALTER TABLE 表名 MODIFY 字段名 新的类型;

3-修改列的名和类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型;

4-删除列的字段

ALTER TABLE 表名 DROP 字段名;

5-修改表名

RENAME TABLE 旧表名 TO 新表名;

6-修改字符集

ALTER TABLE 表名 character set 字符集;

13-DML插入记录

1-插入全部字段

也可有写出字段名,但是需要把所有字段都写出来

INSERT INTO 表名 VALUES (字段值1, 字段值2...);

2-插入部分数据

INSERT INTO 表名 (字段名1, 字段名2...) VALUES (字段值1, 字段值2...);

3-批量插入数据

INSERT INTO 表名 values(字段值1, 字段值2...),(字段值1, 字段值2...),(字段值1, 字段值2...);

4-具体说明

INSERT INTO 表名 – 表示往哪张表中添加数据
(字段名1, 字段名2, …)  --  要给哪些字段设置值
VALUES (值1, 值2, …); -- 设置具体的值
注意:使用   select * from 表名 --查看该表的所有信息。

5-注意事项

1-字段名就是列,有多少个列就要写多少个值,如果插入的值为空,可以使用null表示插入为空。

2-值的数据类型要和被定义的数据类型一直一致。

3-在mysql中使用单引号表示字符串。

4-date事件类型也是用单引号括起来。

14-DML更新表记录

1-不带条件修改数据

UPDATE 表名 SET 字段名=新的值,字段名=新的值,..;

 2-带条件的修改数据

UPDATE 表名 SET 字段名=新的值,字段名=新的值,..WHERE 条件

15-DML删除表记录

1-不带条件的删除数据

DELETE FROM 表名;
表还在,可以操作,只是删除数据。

2-带条件的删除数据

DELETE FROM 表名 WHERE 条件;

3-truncate删除表的记录,属于DDL

TRUNCATE TABLE 表名;

4-truncate和delete的区别

  • delete是将表中的数据一条一条删除

  • truncate是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样

 16-DQL的简单查询

1-查询表中所有列的数据

#方法1
SELECT -- 表示查询
SELECT 字段名1, 字段名2, ... FROM 表名;
#方法2
SELECT * FROM 表名;

2-查询表中指定列的数据

SELECT 字段名1, 字段名2 FROM 表名;

3-别名查询

使用AS关键字

方便观看和处理查询到的数据

SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名 AS 表别名;`

4-清楚重复值

SELECT DISTINCT 字段名,字段名,.. FROM 表名;

5-查询结果参与运算

1-某列数据和固定值运算

SELECT 列名1 + 固定值 FROM 表名;

2-某列数据和其他列数据运算

SELECT 列名1 + 列名2 FROM 表名;

注意,参与运算的必须是数值类型

17-蠕虫复制

在已有的数据基础之上,将原来的数据进行复制,插入到对应的表当中

具体操作如下

创建一个list2表,结构和list一致

CREATE TABLE list2 LIKE list;

将list表中的数据复制到list2当中

INSERT INTO list2 SELECT * FROM list;

18-DQL查询语句-条件查询(重要)

通用格式

SELECT 字段名... FROM 表名 WHERE 条件;

具体操作

首先引入数据

CREATE TABLE student3 (id int,name varchar(20),age int,sex varchar(5),address varchar(100),math int,english int
);INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES 
(1,'lzw',20,'男','陕西',66,78),
(2,'fyq',18,'女','深圳',58,87),
(3,'hjx',55,'男','香港',56,55),
(4,'szl',20,'女','北京',76,65),
(5,'xcj',20,'男','北京',96,NULL),
(6,'mht',57,'男','香港',99,99),
(7,'dd',22,'女','香港',99,99),
(8,'kk',18,'男','南京',56,65);

比较运算符

>大于 <小于 <=小于等于 >=大于等于 =等于 <>!=不等于

 1-查询math分数大于80分的学生

SELECT * FROM student3 WHERE math>80;

2-查询english小于等于80分的学生

SELECT * FROM student3 WHERE english<=80;

3-查询age等于20岁的学生

SELECT * FROM student3 WHERE age=20;

4-查询成绩不等于20岁的学生

SELECT * FROM student3 WHERE age!=20;
SELECT * FROM student3 WHERE age<>20;

逻辑运算符

and(&&) 多个条件同时满足 一假即假

or(||) 多个条件其中一个满足 一真即真

not(!) 不满足 取反  

 5-in关键字

SELECT * FROM 表名 WHERE 字段 in (值1, 值2, 值3);

in里面的每个数据都会作为一次条件,只要满足条件的就会显示

6-范围

BETWEEN

BETWEEN 值1 AND 值2 -- 表示从值1到值2范围,包头又包尾

 eg:查询english成绩大于等于75,且小于等于90的学生

SELECT * FROM student3 WHERE english>=75 AND english<=90;
SELECT * FROM student3 WHERE english BETWEEN 75 AND 90;

19-DQL模糊查询like

SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';

MySQL通配符有两个:

%: 表示零个一个多个字符(任意多个字符)

_: 表示一个字符

 eg:

例如:  name like '李%' 所有姓张学员。 

name like '%李%' 只要有张就可以。

name like '李_' 所有姓张名字为两个字学员。

name like '_李_'  只有中间是张,前面一个字,后面一个字。

20-DQL查询(排序) 

SELECT 字段 FROM 表名 ORDER BY 排序的字段 [ASC|DESC];

ASC: 升序排序(默认) DESC: 降序排序  

仅仅是对查询出来的结果进行排序,并不会对原有的数据库中的数据产生影响

组合排序

组合排序就是先按第一个字段进行排序,如果第一个字段相同,才按第二个字段进行排序,依次类推。 

21-DQL查询语句(聚合函数)

5个聚合函数

count:在根据指定的列统计的时候,如果这一列中有null的行,该行 不会被统计在其中。按照列去统计有多少行数据。

sum: 计算指定列的数值和,如果不是数值类型,那么计算结果为0

max: 计算指定列的最大值

min: 计算指定列的最小值

avg: 计算指定列的平均

1-简单使用

SELECT 聚合函数(字段) FROM 表名;

 如果值为null则不会统计。

注意!在mysql中null值和任何值相加为null,如果是同一列的值相加,null值会默认为0

同一条记录,不同列的值相加就会变为null。

这个时候我们就需要使用使用ifnull函数ifnull(列名, 默认值)

22-DQL查询语句(分组)

select … from … group by 列名,列名,....

select ... from ... where 条件1 ... group by ... having 条件2 order by...

注意事项

1-sql语句中where后面不允许添加聚合函数

2-having必须和group by 一起使用,having和where的用法一模一样,where怎么使用having就怎么使用,where不能使用的,having也可以使用,比如说where后面不可以使用聚合函数,但是在having后面是可以使用聚合函数的。

3、where 是在分组之前进行过滤的。having 是在分组之后进行过滤的。

到这里,基本的一些操作就完成了,这是参考文献,然后进行总结出来的,期待下次见面!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC 基本配置步骤 总结

1.简介 本文记录Spring MVC基本项目拉起配置步骤。 2.步骤 在pom.xml中导入依赖&#xff1a; <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.0.6</version><scope>…

Activiti7《第九式:破气式》——流畅驱动工作流进程。面试题大全

冲冲冲&#xff01;开干 这篇文章将分为九个篇章&#xff0c;带你逐步掌握工作流的核心知识。“破气式”&#xff0c;代表着工作流中的 无形之力&#xff0c;它是贯穿整个流程的 关键驱动 不知不觉已经到了独孤九剑最后一式了&#xff0c;我相信到这里之后各位都已经出神入化…

成功使用DDNS动态域名访问我的群晖NAS(TP-link路由器)

当NAS设备部署在动态IP环境中&#xff08;如家庭或小型办公室宽带&#xff09;&#xff0c;远程访问常常受到IP地址频繁变动的困扰。为了解决这一问题&#xff0c;结合神卓互联NAS公网助手提供的DDNS&#xff08;动态域名服务&#xff09;功能&#xff0c;我们可以轻松实现通过…

EasyGBD国标GB28181设备端,支持GB28181-2016、GB28181-2022

功能概要&#xff1a; 功能概述&#xff1a;EasyGBD是GB/T28181 Device的简称&#xff0c;指国标GB28181协议的设备端。EasyGBD功能组件支持Windows、Linux、Android、iOS、ARM等所有平台&#xff0c;可兼容国标GB28181-2011、GB28181-2016的全部功能。 操作系统&#xff1a;任…

医院监护病房智慧ICU远程探视双向对讲为医院带来什么?

随着信息技术的进步和社会对医疗服务要求的不断提高&#xff0c;医院在努力提升服务质量的同时&#xff0c;也在积极寻求更科学有效的管理手段。全视通智慧医院解决方案下有十几个业务系统&#xff0c;主要专注于医院信息化系统&#xff0c;针对于智慧门诊、智慧病房、智慧手术…

玩转腾讯混元大模型——带您解读各个功能

自从2022年的OpenAI公司推出chatGPT人工智能聊天机器人&#xff0c;从此人工智能大模型便在各国可所谓风靡一时&#xff0c;不断涌现出各种各样的大模型&#xff0c;深得用户喜爱。然而在此领域中&#xff0c;腾讯也研发出了自己的大语言模型&#xff0c;下面我们一起来了解一下…

C#基础(11)函数重载

前言 前面我们已经完成了ref和out补充知识点的学习&#xff0c;以及函数参数相关的学习&#xff0c;今天便再次为函数补充一个知识点&#xff1a;函数重载。 函数重载是指在同一个作用域中&#xff0c;可以有多个同名函数&#xff0c;但参数列表不同。它的发展可以追溯到早期…

一.python入门

gyp的读研日记&#xff0c;哈哈哈哈&#xff0c;&#x1f642;&#xff0c;从复习python开始&#xff0c; 目录 1.python入门 1.1 Python说明书 1.2 Python具备的功能 1.3 学习前提 1.4 何为Python 1.5 编程语言 2.Python环境搭建 2.1 开发环境概述 2.2 Python的安装与…

【开发心得】筑梦上海:项目风云录(5)

写这个长篇的目的&#xff0c;前文已经说过。就这个目的而言&#xff0c;这里会更多的讲项目中存在的风险和应对&#xff0c;假如你正在做项目或者打算从事软件项目管理&#xff0c;可以一起交流讨论一下。 目录 小娇的离去 管人的大忌 理解甲方的立场 时刻表的诞生 未完…

dotnet4.0编译问题

因为最近在写cobaltstrike的execute-assembly内存加载的c#项目 用visual studio2022编译&#xff0c;最低net只能用6.0版本的&#xff0c;并且execute-assembly不支持 我想使用4.x版本进行编译&#xff0c;因为visual studio不支持&#xff0c;那么使用命令行进行编译 因为要用…

np.pad实现零填充

np.pad 是 NumPy 中用于对数组进行填充的函数&#xff0c;它可以在数组的不同维度上添加指定数量的值。 X&#xff1a;输入的 NumPy 数组。通常是一个 4 维数组&#xff0c;可能表示图像数据&#xff0c;形状为 (batch_size, height, width, channels)&#xff0c;例如 (样本数…

Java语法-类和对象(上)

1. 面向对象的初步认识 1.1 什么是面向对象 概念: Java是一门纯面向对象的语言(Object Oriented Program&#xff0c;简称OOP)&#xff0c;在面向对象的世界里&#xff0c;一切皆为对象。 1.2 面向对象VS面向过程 如:洗衣服 面向过程: 注重的是洗衣服的过程,少了一个环节也不…

nginx基础篇(一)

文章目录 学习链接概图一、Nginx简介1.1 背景介绍名词解释 1.2 常见服务器对比IISTomcatApacheLighttpd其他的服务器 1.3 Nginx的优点(1)速度更快、并发更高(2)配置简单&#xff0c;扩展性强(3)高可靠性(4)热部署(5)成本低、BSD许可证 1.4 Nginx的功能特性及常用功能基本HTTP服…

工厂模式,策略模式,代理模式,单例模式在项目中的应用

项目背景&#xff1a; 首先这篇文章是总结了OJ项目和AI答题平台项目&#xff08;和一点点的聚合搜索项目&#xff09;中设计模式的文章 在项目中也用了很多次的设计模式&#xff0c;我感觉起来&#xff0c;这些设计模式的作用就是提高项目的扩展性和降低耦合性 工厂模式&…

vite分目录打包以及去掉默认的.gz 文件

1.vite打包情况介绍&#xff1a; 1.1vite在不进行任何配置的情况下&#xff0c;会将除开public的所有引用到资源打包编译添加哈希值至assets文件夹中&#xff08;非引用文件以及行内样式图片未被打包编译资源会被treeSharp直接忽略不打包&#xff09;&#xff0c;     1.2w…

七层负载均衡和四层负载均衡的区别

文章目录 什么是七层负载均衡&#xff1f;一、定义与工作原理二、优点与缺点三、应用场景四、常见七层负载均衡器五、负载均衡算法 什么是四层负载均衡&#xff1f;一、定义与原理定义&#xff1a;原理&#xff1a; 二、特点与应用场景特点&#xff1a;应用场景&#xff1a; 三…

Python中的数据可视化:从基础图表到高级可视化

数据可视化是数据分析和科学计算中不可或缺的一部分。它通过图形化的方式呈现数据&#xff0c;使复杂的统计信息变得直观易懂。Python提供了多种强大的库来支持数据可视化&#xff0c;如Matplotlib、Seaborn、Plotly等。本文将从基础图表入手&#xff0c;逐步介绍如何使用这些库…

基础漏洞——SSRF

目录 一.原理 二.引起ssrf的函数 三.这些函数具体作用 &#xff08;1&#xff09;File_get_content() &#xff08;2&#xff09;Fsockopen() &#xff08;3&#xff09;Curl_exec() 四.常见的业务场景&#xff08;可能出现的漏洞的地方&#xff0c;漏洞挖掘&#xff09…

自动化学习2:pytest的高级用法(mark标记/fixture/hook)

一.mark的用法 概念&#xff1a;Pytest提供的mark标记&#xff0c;允许我们标记测试函数&#xff0c;测试类和整个模块。通过不同的标记实现不同的运行策略&#xff0c;如标记冒烟测试用例。 1.注册标记 可以在pytest.ini文件注册自定义标记 除了自己注册的标记外&#xff0…

蓝队技能-应急响应篇Web内存马查杀JVM分析Class提取诊断反编译日志定性

知识点&#xff1a; 1、应急响应-Web内存马-定性&排查 2、应急响应-Web内存马-分析&日志 注&#xff1a;传统WEB类型的内存马只要网站重启后就清除了。 演示案例-蓝队技能-JAVA Web内存马-JVM分析&日志URL&内存查杀 0、环境搭建 参考地址&#xff1a;http…