MySql--SQL语言

目录

SQl---DDL  结构定义

创建、删除 数据库

代码

 运行

设计表

数据类型

整数

浮点数

主键

约束

主键自增长

默认值

字段注释

创建、删除 表

代码

运行

代码

代码

运行 

SQL---DML  数据操纵

插入数据

代码 

运行 

代码 

运行 

代码 

运行 

代码 

运行

修改数据

代码 

运行 

删除数据

代码  

运行

SQL---DQL  数据查询

基础查询

特定列查询,全部列查询

代码  

运行

代码  

运行 

算数运算符 + - * /

代码  

运行 

排除重复行

代码  

运行 

条件查询

代码  

运行 

模糊查询

like

代码  

运行 

between and 

代码  

运行 

in

代码  

运行 

is null /is not null

代码  

运行 

union 

代码  

运行 

union all

代码  

运行 

排序

代码  

运行 

数量限制

代码  

运行 

分组查询

代码  

运行

代码  

运行

代码  

运行 

函数  查询结果处理

单行函数 

字符函数

代码 

运行

代码 

运行

代码 

运行

代码 

运行

代码 

运行

代码 

运行

代码 

运行

代码 

运行

代码 

运行

代码 

运行 

逻辑处理

代码  

运行

代码  

运行

代码  

运行 

数学函数

代码  

运行

代码  

运行

代码  

运行 

日期函数 

代码  

运行

代码  

运行

​编辑

代码  

运行

代码  

运行

​编辑

代码   

运行 

分组函数

代码  

运行


SQl---DDL  结构定义

创建、删除 数据库

代码

-- 创建数据库
CREATE DATABASE IF NOT EXISTS schooldb CHARSET utf8
-- 删除数据库
DROP DATABASE IF EXISTS schooldb 

 运行

-- mysql中数据库一旦创建,名字不能修改

-- 修改数据库字符集
ALTER DATABASE schooldb CHARSET utf8

设计表

数据类型

char(n)  可变长度的字符串  n是最大长度  如果只存储2个字符,实际占有2个空间位置

varchar(n)  可变长度的字符串  n是最大长度  如果只存储2个字符,实际占有2个空间位置

data  日期,包含年,月,日

datetime  年月日,时分秒

整数

signed  有符号,默认为无符号

unsigned  无符号 

浮点数

decimal(M,D)

M:精度,数据的总长度;

D:标度,小数点后的长度。

主键

在一张表中代表唯一的一条记录,不能为空且不能重复

约束

主键约束  PRIMARY KEY

不能为空约束  NOT NULL

唯一性约束 UNIQUE

主键自增长

主键自增长,设置主键自增长后,只能为整数类型

AUTO_INCREMENT

默认值

DEFAULT default_value

字段注释

comment'注释'

创建、删除 表

-- 创建表
-- 确定表名  学生信息表
-- 确定表中字段(列) 学号,姓名,性别,生日,电话,身高,注册时间
-- 确定字段(列)的数据类型   以及长度
-- 确定列的约束
-- 创建表语法

代码

 CREATE TABLE student(
     number INT,
     NAME VARCHAR(6),
     gender CHAR(1),
     birthday DATE,
     phone VARCHAR(11),
     height DECIMAL(3,2),
     reg_time DATETIME
 )

运行

 

 -- 删除表结构,删除后表中数据就不存在了

代码

DROP TABLE student

-- 创建表  并添加约束规则
-- PRIMARY KEY 设置主键约束 ,添加主键约束后,值不能重复,一个表中只能有一个列是主键
   -- 主键列可以唯一
   -- mysql中主键可以设置为自动增长  AUTO_INCREMENT
-- NOT NULL 不能为空约束
-- UNIQUE 唯一性约束
-- 检查约束 设置条件

代码

CREATE TABLE student(
     number INT PRIMARY KEY AUTO_INCREMENT COMMENT '学号主键',
     NAME VARCHAR(6)  NOT NULL COMMENT '姓名',
     gender CHAR(1) NOT NULL COMMENT '性别',
     birthday DATE NOT NULL,
     phone VARCHAR(11) NOT NULL UNIQUE,
     height DECIMAL(3,2) CHECK(height<3),
     reg_time DATETIME
)

运行 

SQL---DML  数据操纵

常用语句:insert into,update,delete

插入数据

方式1: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n);

代码 

INSERT INTO student(NAME,gender,birthday,phone,height,reg_time)VALUES('杜兰特','男','2019-6-8','12345678913',1.98,NOW())
INSERT INTO student(NAME,gender,birthday,phone,height,reg_time)VALUES('科比','男','2019-6-8','12345678912',1.98,NOW())
运行 

方式2: INSERT INTO 表名 set 列名1=值1,..列名n=值n;

代码 
INSERT INTO student SET NAME='詹姆斯',gender='男',birthday='1986-2-3',phone='12345678911'
运行 

方式3: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n),(值1,值2…..,值n);

代码 
INSERT INTO student(NAME,gender,birthday,phone,height,reg_time)
                    VALUES('科比','男','1988-6-8','12345678914',1.88,NOW()),
                          ('库里','男','1987-6-8','12345678915',2.12,NOW())
运行 

方式4:INSERT INTO 表名(列1,列2……,列n) 查询语句(查询的列数与插入列数匹配。

代码 
-- 复制表结构 
CREATE TABLE stu LIKE student 
INSERT INTO stu(number,NAME,gender,birthday,phone,height,reg_time)SELECT * FROM student
运行

 

修改数据

-- 修改记录  修改时一定注意条件

UPDATE 表名 SET 列名 = ‘新值’WHERE 条件

代码 
 UPDATE stu SET NAME='c罗',height=1.70 WHERE number = 1
运行 

删除数据

DELETE FROM 表名 WHERE 条件

TRUNCATE TABLE 表名;清空整张表

代码  

-- 删除 
DELETE FROM student WHERE number = 4
-- 修改表名
RENAME TABLE student TO stu
RENAME TABLE stu TO student

-- 复制表结构 
CREATE TABLE stu LIKE student
运行

SQL---DQL  数据查询

-- select 结果 from 表名

基础查询

特定列查询,全部列查询

select column1,column2 from table

代码  
-- 查询指定的列
SELECT NAME,gender,birthday,phone FROM student
运行

  

select * from table 

代码  
-- 查询所有的列  *-表示所有的列  查询的结果是虚拟的表格,不能操作,是只读的,不能写入
SELECT * FROM student
运行 

算数运算符 + - * /

代码  
-- 查询结果进行算术运算 + - * /
SELECT NAME,height+1 FROM student
运行 

排除重复行

select distinct column1,column2 from table

代码  
-- 去除重复数据 查询结果中所有的列都相同,就视为重复数据
-- DISTINCT关键字去除重复数据
SELECT DISTINCT NAME,gender FROM student
运行 

条件查询

select  结果  from 表  where 条件  【group  by 条件  order  by 列  limit】

-- select * from 表名 where 条件 
-- =
-- and 并且 
-- >
-- or 多个条件只需要满足一个即可
-- !=
-- <>

代码  

SELECT * FROM student WHERE gender = '男' AND height > 1.90
SELECT * FROM student WHERE gender = '男' OR height > 1.70
SELECT * FROM student WHERE gender != '男'
SELECT * FROM student WHERE gender <> '女
运行 

模糊查询

like

是否匹配于一个模式 一般和通配符搭配使用,可以判断字符型数值 或数值型.

通配符: % 任意多个字符

代码  
-- like '库%' 模糊匹配
SELECT * FROM student WHERE NAME LIKE '库%'
运行 

between and 

两者之间,包含临界值;

代码  
-- between 1.65 and 1.98 两者之间
SELECT * FROM student WHERE height>=1.65 AND height<=1.98
SELECT * FROM student WHERE height BETWEEN 1.65 AND 1.98 
运行 

in

判断某字段的值是否属于in列表中的某一项

代码  
-- in(值1,值2,值n) 在给定的值中
SELECT * FROM student WHERE height =1.78 OR height =1.88 OR height =1.98 
SELECT * FROM student WHERE height NOT IN(1.78,1.88,1.98)
运行 

is null /is not null

为空的/不为空的

代码  
-- 查询身高为null的数据
SELECT * FROM student WHERE height IS NULL
SELECT * FROM student WHERE height IS NOT NULL
运行 

union 

mysql 会把结果集中重复的记录删掉

代码  
-- union 将多个查询的结果合并,合并时注意列数一致,会去除重复数据
SELECT NAME,gender FROM student WHERE gender = '男'
  UNION
SELECT NAME,gender FROM student WHERE number>1 
运行 

union all

mysql 会把所有的记录返回,且效率高于union

代码  
-- union all 只是将查询的多个结果合并,不会去除重复数据
SELECT NAME,gender FROM student WHERE gender = '男'
  UNION ALL
SELECT NAME,gender FROM student WHERE number>1
运行 

排序

order by 排序列

asc代表的是升序,desc代表的是降序,如果不写,默认是升序

代码  
-- order by 列  asc(升序)  desc(降序)
SELECT * FROM student WHERE number>0 ORDER BY number ASC
SELECT * FROM student WHERE number>0 ORDER BY number DESC
SELECT * FROM student WHERE number>0 ORDER BY height DESC
SELECT * FROM student WHERE number>0 ORDER BY reg_time ASC
SELECT * FROM student WHERE number>0 ORDER BY height ASC,reg_time DESC
运行 

数量限制

limit子句:对查询的显示结果限制数目 (sql语句最末尾位置)

代码  
-- 数量限制 实现分页查询
-- limit 开始位置,每次查询的数量
SELECT * FROM student WHERE number>0 ORDER BY number ASC LIMIT 0,3
SELECT * FROM student WHERE number>0 ORDER BY number ASC LIMIT 3,3
SELECT * FROM student WHERE number>0 ORDER BY number ASC LIMIT 6,3
运行 

分组查询

-- 分组--在一些统计场景中,按照某一个条件进行区分(分组)
-- 统计时,按照性别,班级,年级,部门,年份,月份
-- 把满足某一个条件的数据分到同一个组中,每一个组内单独进行处理

select 分组函数,列(要求出现在group by的后面)

from 表

[where 筛选条件]

group by 分组的列表

[having 分组后的筛选]

[order by 子句]

-- 查询男生,女生各有多少人  每个年级各有多少人 每个部门各有多少人
   -- 分组统计 男生组统计一次,女生组统计一次

代码  
   SELECT COUNT(*),gender FROM student GROUP BY gender  
   SELECT MAX(height),gender FROM student GROUP BY gender  
   
   SELECT COUNT(*),DATE_FORMAT(reg_time,'%Y-%m')  FROM student GROUP BY DATE_FORMAT(reg_time,'%Y-%m')
运行

   -- 统计男生女生各多少人

代码  
    SELECT COUNT(*),gender FROM student GROUP BY gender
运行

代码  

   -- 男生和女生谁的人数大于2
   -- having count(*)>2  having 条件 是对分组后的结果进行条件筛选

    SELECT COUNT(*),gender FROM student GROUP BY gender  HAVING COUNT(*)>2
运行 

函数  查询结果处理

-- 单行函数:会对查询中的每一行数据进行处理

-- 分组函数  聚合函数(查询多行,返回一行)  统计函数

单行函数 

字符函数

-- length(列名) 以字节为单位

代码 
SELECT LENGTH(NAME),NAME,gender FROM student
运行

-- char_length(列名) 以字符为单位

代码 
 SELECT CHAR_LENGTH(NAME),NAME,gender FROM student
运行

-- concat(str1,str2,str3) 连接多个字符串  as  别名

代码 
 SELECT CONCAT(NAME,":",CHAR_LENGTH(NAME)) AS NAME,gender FROM student
运行

-- upper() 转大写 lower() 转小写

代码 
  SELECT UPPER(NAME),LOWER(NAME) FROM student
运行

-- substring(字符串,开始位置,截取长度) 开始位置从1开始 

代码 
 SELECT SUBSTRING(NAME,1,2) FROM student
运行

-- instr(字符串,指定的字符)获取指定字符首次出现位置,找不到返回0

代码 
SELECT INSTR(NAME,'o') FROM student
运行

-- trim(字符串) 默认是去掉字符串前后空格的

代码 
SELECT TRIM(NAME),NAME FROM student
运行

-- trim(指定的子串 from 字符串) 可以去掉前后指定的子串

代码 
  SELECT TRIM('a' FROM NAME),NAME FROM student
运行

-- 左填充 右填充到指定长度

代码 
SELECT LPAD(NAME,5,'a'),RPAD(NAME,5,'b') FROM student
运行

-- replace(列,'old','new')字符串的替换

代码 
 SELECT REPLACE(NAME,'o','O') FROM student
运行 

逻辑处理

-- case when 条件 then 条件成立结果 else 不成立结果 end;

代码  
 SELECT
  NAME,
  gender,
  (CASE WHEN height>=2 THEN '高个子' ELSE '正常身高' END) AS height
FROM
  student
SELECT
  NAME,
  gender,
  (CASE WHEN height>=2 THEN 'A'
        WHEN height>=1.8 THEN 'B'
        ELSE 'C' END) AS height
FROM
  student
运行

-- ifnull(列名,'为空时默认信息')

代码  
SELECT
  NAME,
  gender,
  IFNULL(reg_time,'暂未录入') AS reg_time
FROM
  student
运行

-- if(条件,'结果1','结果2')

代码  
SELECT
  NAME,
  gender,
  IF(height>=2,"高个子","正常") AS height   
FROM
  student
运行 

数学函数

-- round(数值)  四舍五入
-- ceil(数值)  向上取整,返回>=该参数的最小整数
-- floor(数值)  向下取整,返回<=该参数的最大整数

代码  
 SELECT NAME,gender,ROUND(height),CEIL(1.1),FLOOR(1.9) FROM student
运行

-- mod(被除数,除数)  取余,被除数为正,则为正;被除数为负,则为负

代码  
SELECT height,number,MOD(height,number) FROM student
运行

-- truncate(数值,保留小数的位数)  截断,小数点后截断到几位
-- rand()  获取随机数,返回0-1之间的小数

代码  
SELECT NAME,gender,TRUNCATE(height,1),height,RAND() FROM student
运行 

日期函数 

-- now() 年月日 时分秒  获取系统当前时间
-- curdate() 年月日
-- curtime() 时分秒

代码  
SELECT NOW(),CURDATE(),CURTIME() FROM student
运行

-- year(日期) 将日期格式化为年
-- month(日期) 将日期格式化为月

代码  
SELECT YEAR(birthday),MONTH(birthday) FROM student
SELECT * FROM student WHERE MONTH(birthday) = 6
SELECT COUNT(*),YEAR(birthday) FROM student GROUP BY YEAR(birthday)
运行

-- str_to_date('2022-3-6','%Y-%m-%d') 将字符串日期格式化为日期类型

代码  
 SELECT STR_TO_DATE('2022-3-6','%Y-%m-%d') FROM student
运行

-- date_format(birthday,'%Y-%m') 将日期格式化为指定的字符串

代码  
SELECT DATE_FORMAT(birthday,'%Y-%m') FROM student
SELECT COUNT(*),DATE_FORMAT(reg_time,'%Y-%m') FROM student GROUP BY DATE_FORMAT(reg_time,'%Y-%m')
运行

- datediff(CURDATE(),birthday) 计算两个日期之间相差的天数

代码   
SELECT DATEDIFF(CURDATE(),birthday) FROM student
运行 

分组函数

-- sum() 求和
-- avg() 平均值
-- max() 最大值
-- min() 最小值
-- count() 统计个数

代码  
SELECT SUM(height) FROM student 
SELECT AVG(height) FROM student
SELECT MAX(height) FROM student 
SELECT MIN(height) FROM student
SELECT COUNT(*) FROM student
运行

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

轻量音乐网站程序源码,在线音乐免费听歌

这是一个高品质的音乐共享和流媒体平台&#xff0c;用户可以在这个网站上免费在线听歌。这个轻量级的音乐网站程序源码&#xff0c;是您创建自己的音乐流媒体网站的最佳选择&#xff01;它还支持制作插件&#xff0c;并且在更新后&#xff0c;您可以保留您的自定义设置。 下 载…

LeetCode刷题之HOT100之比特位计数

今天把仙剑三看完了&#xff0c;茂茂割肉让人无法释怀&#xff0c;眼泪止不住的流。长卿和紫萱的分离似乎也意味着重逢&#xff0c;这就是他们的宿命吧。怅然若失的感觉席卷全身&#xff0c;哎&#xff0c;做题吧。 1、题目描述 2、逻辑分析 题目要求将整数从0到此元素&#…

番外篇 | YOLOv5更换主干网络之Conformer:首个CNN + Transformer的backbone模型

前言:Hello大家好,我是小哥谈。Transformer和CNN在处理视觉表征方面都有着各自的优势以及一些不可避免的问题。因此,国科大、鹏城实验室和华为研究人员首次将二者进行了融合并提出全新的Conformer模型,其可以在不显著增加计算量的前提下显著提升了基网表征能力。论文已被IC…

“壕无人性”的沙特也要买量子计算机!巨头沙特阿美的合作方竟是它?

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 排版丨沛贤 深度好文&#xff1a;1200字丨5分钟阅读 摘要&#xff1a;石油巨头沙特阿美与 Pasqal 开启合作&#xff0c;计划于 2025 年部署一台 200 量子比特的量子计算机&#xff…

ubuntu设置root开机登录,允许root用户ssh远程登录

ubuntu与centos系统不同&#xff0c;默认root开机不能登录。 1、输入一下命令创建root密码&#xff0c;根据提示输入新密码 sudo passwd root 2、打开gdm-autologin文件&#xff0c;将auth required pam_succeed_if.so user ! root quiet_success这行注释掉&#xff0c;这行就…

Wpf 使用 Prism 实战开发Day22

客户端添加IDialogService 弹窗服务 在首页点击添加备忘录或待办事项按钮的时候&#xff0c;希望有一个弹窗&#xff0c;进行相对应的内容添加操作。 一.在Views文件夹中&#xff0c;再创建一个Dialog 文件夹&#xff0c;用于放置备忘录和待办事项的弹窗界面。 1.1 备忘录&…

ROS | 标准消息包std_msgs和common_msgs

std_msgs Duration:相对时间 可正可负 Time:绝对时间 一定大于0 Header:记录时间戳的结构体 MultiArrayDimension&#xff0c;MultiArrayLayout:描述数组的结构体 common_msgs visualization_msgs 图形显示包 几何消息包&#xff1a; 传感器消息包&#xff1a;

必应崩了?

目录 今天使用必应发现出现了不能搜索&#xff0c;弹出乱码的情况。 搜了一下&#xff0c;发现其他人也出现了同样的问题。 使用Edge浏览器的话&#xff0c;可以试着改一下DNS&#xff0c;有可能会恢复正常&#xff08;等官方修复了记得改回来&#xff09; 使用谷歌浏览器打开…

A股翻车现场

英伟达业绩炸裂&#xff0c;但今天A股这边不仅没喝着汤&#xff0c;还再度上演大型翻车现场&#xff0c;人家不仅股价大涨7个点还站上1000美元大关&#xff0c; 而咱A股里的英伟达&#xff0c;AI&#xff0c;TMT相关概念股&#xff0c;包括工业&#xff08;富联&#xff09;&am…

蓝牙Classic加密算法设计和实现,SAFER+,E0,E1,E2,E3(python)

概述 之前用python给大家实现了所有LE相关加密工具算法。bobwenstudy/BluetoothCryptographicToolbox: LE SMP加密算法设计和实现(python) (github.com)&#xff0c;最近重温了下Classic加密&#xff0c;顺便将Classic所有加密算法给实现了一遍。 在蓝牙Classic Spec中&#…

【STM32项目】基于stm32智能鱼缸控制系统的设计与实现(完整工程资料源码)

实物演示效果 基于stm32智能鱼缸控制系统的设计与实现 目录&#xff1a; 实物演示效果 目录&#xff1a; 一、 绪论 1.1 项目研究目的及意义 1.1.1 选题目的 1.1.2 选题意义 1.2 国内外研究现状 1.2.1 国外发展现状 1.2.2 国内发展现状 1.3 项目研究内容 二、智能鱼缸系统总体设…

IPA酒精清洁笔:打印机打印头、相机镜头等光学设备清洁的好帮手!

打印机打印头、相机镜头等光学设备在长期使用的过程中&#xff0c;会产生油脂、污渍和灰尘等污染物杂质&#xff0c;从而影响到打印质量、镜头清晰度等。通过IPA酒精清洁笔可以简便快捷、安全有效的清除这些污染物杂质&#xff0c;保持设备表面的清洁度&#xff0c;从而确保设备…

列举几个淘宝商品详情API接口测试示例

API名&#xff1a;item_get 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_shop等]cacheString否[yes…

MyBatis入门——MyBatis XML配置文件(3)

目录 一、配置连接字符串和MyBatis 二、写持久层代码 1、添加 mapper 接口 2、添加 USerInfoXmlMapper.xml 3、测试类代码 三、增删改查操作 1、增&#xff08;Insert&#xff09; 返回自增 id 2、删&#xff08;Delete&#xff09; 3、改&#xff08;update&#xf…

Java中Spring MVC 来如何接收表单数据

目录 一、Java语言介绍 二、Spring MVC 框架介绍 三、什么是表单 四、Spring MVC 来如何接收表单数据 一、Java语言介绍 Java是一种广泛使用的面向对象的编程语言&#xff0c;由Sun Microsystems公司的James Gosling等人开发。它最初于1995年发布&#xff0c;被设计为具有…

Android Studio 与 Gradle 及插件版本兼容性

Android Studio 开始新项目时&#xff0c;会自动创建其中部分文件&#xff0c;并为其填充合理的默认值。 项目文件结构布局&#xff1a; 一、Android Gradle 及插件作用&#xff1a; Android Studio 构建系统以 Gradle 为基础&#xff0c;并且 Android Gradle 插件 (AGP) 添加…

利用远控工具横向

一.横向移动介绍和方式 1.介绍 内网渗透的横向移动是指攻击者在成功进入内网后&#xff0c;通过利用内部系统的漏洞或者获取的合法访问权限&#xff0c;从一个受感染的系统向其他系统扩散或移动。这种横向移动的目的通常是为了获取更多的敏感信息、提升权限、扩大攻击面或者更…

记录踩坑事件 分页查询order by出现重复数据bug

MySQL排序小坑_mysql order by name相同导致排序混乱-CSDN博客 1、问题描述 列表页分页查询出现重复数据。 2、问题排查 排查最终执行sql日志。 select * from tableA where (start_time>2024-04-17 00:00:00) AND (start_time<2024-05-18 00:00:00) ORDER BY sta…

rocketmq 学习二 基本概念

教程&#xff1a;基本概念 | RocketMQ 视频教程 https://www.bilibili.com/video/BV1d5411y7UW?vd_sourcef1bd3b5218c30adf0a002c8c937e0a27 版本&#xff1a;5.0 一 基本概念 1.1 生产者/Producer 1.1.1 定义 消息发布者。是构建并传输消息到服务端的运行实体。…

mac远程桌面连接工具:Microsoft Remote Desktop正式版

Microsoft Remote Desktop 是一款由微软开发的远程桌面控制软件。它允许用户通过互联网连接到远程计算机&#xff0c;从而可以在本地计算机上访问和控制远程计算机的桌面、文件和应用程序。 下载地址&#xff1a;https://www.macz.com/mac/1004.html?idOTI2NjQ5Jl8mMjcuMTg2Lj…