《MYSQL必知必会》读书笔记1

目录

主键

MYSQL工具

使用MYSQL

连接

检索数据

检索(SELECT)

限制结果(LIMIT)

排序检索(ORDER BY)

过滤数据(WHERE)

过滤数据(AND、OR)

通配符

LINK操作符

正则表达式

基本字符匹配 

进行OR匹配

匹配几个字符之一

匹配特殊字符

匹配字符类

匹配多个实例


表中的一个记录

主键

每一行都应该有可以唯一表示自己的一列(或一组列)

总是应该定义主键,便于以后的数据操纵和管理

  • 任意两行不具有相同的主键,主键不为NULL
  • 不更新主键列中的值
  • 不重用主键列的值
  • 不在主键列中使用可能会更改的值

MYSQL工具

DBMS分为两类:

  1. 基于共享文件系统的DBMS(用于桌面用途,通常不用于高端或更关键的应用)
  2. 基于客户机-服务器的DBMS

MYSQL是一个客户机-服务器DBMS,所以需要一个客户机来与MYSQL打交道的一个应用。

MYSQL Administrator(MYSQL管理器)是一个图形交互客户机,用来简化MYSQL服务器的管理。

MYSQL Query Browser是一个图形交互客户机,用来编写和执行MYSQL命令。

使用MYSQL

连接

连接到MYSQL需要一下信息:

  • 主机名(计算机名)——连接到本地MYSQL服务器,为localhost
  • 端口(使用默认端口3306之外的端口时需要标明)
  • 合法的用户名
  • 用户口令(需要操作时使用)

进入数据库及其一些操作:

SQL语句不区分大小写

输入指令:

mysql -uroot -p

接着输入进入数据库的密码

然后显示

接着可以输入一下指令来查看:

show databases;

(英文分号)

 

use 数据库名;

发出使用该数据库的命令时,可以使用该数据库

show tables;

查看数据库中的表

describe 表名; 

查看表的设计结构

show columns from study;(study是一个表名)

可以返回

创建数据库及其中的表

1、create database 数据库名;

创建数据库

2、use 数据库名;

这一步不能省,进入这个数据库,才能在这个数据库中创建表

3、create table user;

4、接着输入设计表的结构

检索数据

检索(SELECT)

检索单个列

SELECT coursename FROM courses;

从courses表中检索一个名为name的列

未排序数据(输出的数据顺序和这里的不同,有可能是数据添加到表中的顺序,也可能不是)

检索多个列

SELECT id,coursename,class_id,user_id FROM courses;

从courses表中选择数据,指定了要选择的数据

检索所有列

SELECT * FROM courses;

从courses表中使用星号通配符来表示

可以检索出名字未知的列

检索不同的行

SELECT coursename FROM courses;

可以返回所有匹配的行,如果要检索不同值的列表,可以使用DISTINCT关键字

SELECT DISTINCT coursename FROM courses;

在一条SQL语句中,不能部分使用DISTINCT关键字,如果给出:

SELECT DISTINCT name,class_id FROM courses; 

除非指定的两个列都不同,否则所有行都将被检索出来。

限制结果(LIMIT)

SELECT courseName FROM courses LIMIT 5;

LIMIT 5 指示MYSQL返回不多于5行

SELECT courseName FROM courses LIMIT 5,5;

LIMIT 5,5指示MYSQL返回从第五行开始的五行,第一个数是开始的位置,第二个是要检索的行数

注意:

  • 行0:检索出来第一行是行0而不是行1,LIMIT 1,1 将检索出第二行,而不是第一行
  • 行数不够,就会减少返回的行数

SELECT courses.courseName FROM courses;

同时使用表名和列名,来引用列

SELECT courses.courseName FROM study.courses;

表名也可以是完全限定的

排序检索(ORDER BY)

子句:SQL语句由子句构成,有些子句是必需的,有些是可选的,一个子句通常由关键字和所提供的数据组成。

按一个列排序

SELECT class_id FROM courses ORDER BY class_id;

这条语句指示对class_id列,以数字大小顺序排序数据

按多个列排序

SELECT class_id,id FROM courses ORDER BY class_id,id;

这条语句指示MYSQL先按照class_id排序,当class_id的值相同时,才根据course_id的值排序

指定排序方向

SELECT class_id,id FROM courses ORDER BY class_id DESC,id ;

按照班级id的大小从大到小排序。然后对于班级id相同的情况,再按照id的大小从小到大排序

DESC关键字只应用到直接位于其前面的列名

  • 在多个列上降序排序,必须对每个列指定DESC关键字
  • 与DESC相反的关键字是ASC,在升序排序是可以指定它,也可以省略(默认是升序)

过滤数据(WHERE)

SELECT user_id FROM courses WHERE courseName=‘离散数学’ ;

根据WHERE子句中指定的搜索条件进行过滤,WHERE子句在表名之后给出

如果还要使用ORDER BY子句,应该将ORDER BY子句放在WHERE之后

检查单个值

SELECT prod_name,price FROM products WHERE prod_name=‘fuses’ ;

这条语句可以检索到fuses、Fuses等,因为在MYSQL执行匹配时不区分大小写

SELECT prod_name,price FROM products WHERE price<10;

检索到价格小于等于10的所有产品

不匹配检查

SELECT user_id,age FROM users WHERE age<>20;

SELECT user_id,age FROM users WHERE age!=20;

范围值检查

SELECT prod_name,price FROM product BETWEEN 5 AND 10;

空值检查

创建表时,可以指定其中的列是否可以不包括值(NULL)

SELECT prod_name FROM products WHERE price IS NULL;

过滤数据(AND、OR)

AND操作符

SELECT id,price,prod_name FROM products WHERE products id=1003 AND price<=10;

OR操作符

SELECT prod_name,price FROM products WHERE id=1002 OR id=1003;

WHERE可包含任意数目的AND和OR操作符,SQL会优先处理AND操作符。 

IN操作符

SELECT prod_name,price FROM products WHERE id IN(1002,1003) ORDER BY prod_name;

用来指定条件范围,范围内的每个条件都可以匹配

NOT操作符

否定它之后的任何条件

SELECT prod_name,price FROM products WHERE id NOT(1002,1003) ORDER BY prod_name;

匹配 1002 和 1003 之外供应商的id。

通配符

LINK操作符

通配符:用来匹配值的一部分的特殊字符

搜索模式:由字面值、通配符或两者组合构成的搜索条件

百分号通配符(%)

%表示任何字符出现任意次数

SELECT id,prod_name FROM products WHERE prod_name LIKE 'jet%';

  • %jet%可以找出所有以jet开头的产品(可以匹配任何位置上包含jet的值)
  • 使用s%e可以找到以s开头,e结尾的产品

%可以匹配0个或1个或多个字符

注意尾空格

可能会干扰通配符匹配,例如'%anvil'不会匹配anvil,因为在最后的字母后面有多余的字符

解决办法:在搜索模式后附加一个%,或者是使用函数去掉尾空格

注意NULL

%不能匹配NULL

下划线通配符(_)

_ 的用途和%一样,但下划线只能匹配单个字符而不是多个字符

SELECT id,prod_name FROM products WHERE prod_name LIKE '_ ton anvil';

正则表达式

基本用法:

http://t.csdn.cn/bmrA8

基本字符匹配 

SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name;

REGEXP 后跟的为正则表达式,检索列prod_name包含文本1000的所有行

SELECT prod_name FROM products REGEXP '.000' ORDER BY prod_name;

使用正则表达式 .000,. 是正则表达式中一个特殊的字符,匹配任意一个字符,所以可以返回1000,2000,3000等


LIKE是匹配整列值,REGEXP是匹配子字符串

例如——num列的值为:30742328470-636310,

        pad like '30742328470’这种写法,是查询不到记录的,除非使用pad like ‘30742328470%’,匹配整列的值。

        如果用regexp,可以这样写,pad regexp ‘30742328470’,不用匹配整列值,就可以过滤出需要的记录行。

LIKE部分场景可以走索引,而REGEXP则不会走索引


MYSQL中的正则表达式不区分大小写,如果要区分可以使用BINARY关键字:

WHERE prod_name REGEXP BINARY 'JetPack .000'

进行OR匹配

SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name;

和1000或2000都匹配并返回

也两个以上的OR条件

匹配几个字符之一

SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton' ORDER BY prod_name;

使用了正则表达式[123] Ton,[123] Ton定义一组字符,意思是匹配1 Ton或2 Ton或3 Ton

SELECT prod_name FROM products WHERE prod_name REGEXP '1|2|3 Ton' ORDER BY prod_name;

匹配特殊字符

SELECT vend_name FROM vendors WHERE vend_name REGEXP '\\.' ORDER BY vend_name ;

\\ . 匹配 ,这种处理就是转义

\\\        匹配\

\\?       匹配?

\\|        匹配|

\\[        匹配[

\\也用来引用元字符:

\\f        换页

\\n       换行

\\r        回车

\\t        制表

\\v       纵向制表

匹配字符类

匹配多个实例

 SELECT prod_name FROM products WHERE prod_name REGEXP '\\[0-9] sticks?\\)' ORDER BY prod_name;

[0-9]匹配数字,\\(匹配(,stick?匹配sticks或stick

SELECT prod_name FROM products WHERE prod_name REGEXP '[[:digit:]]{4}' ORDER BY prod_name;

[:digit:]匹配数字,{4}要求它前面的字符出现四次

定位符

 SELECT prod_name FROM products WHERE prod_name RECEXP '^[0-9]' ORDER BY prod_name;

找出以数字开头的所有产品

  • ^有两种用法:在集合中(用[和]定义),用它 来否定该集合,否则,用来指串的开始处。
  • REGEXP有类似LIKE的作用:LIKE和REGEXP 的不同在于,LIKE匹配整个串而REGEXP匹配子串。利用定位 符,通过用^开始每个表达式,用$结束每个表达式,可以使 REGEXP的作用与LIKE一样。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【SpringCloud】SpringAMQP

文章目录 1、AMQP2、基本消息模型队列3、WorkQueue模型4、发布订阅模型5、发布订阅-Fanout Exchange6、发布订阅-DirectExchange7、发布订阅-TopicExchange 1、AMQP Advanced Message Queuing Protocol&#xff0c;高级消息队列协议。是用于在应用程序之间传递业务消息的开放标…

黑马Redis视频教程实战篇(一)

目录 一、短信登录 1.1、导入黑马点评项目 &#xff08;1&#xff09;导入黑马点评sql脚本 &#xff08;2&#xff09;导入后端项目 &#xff08;3&#xff09;导入前端项目 1.2、基于Session实现登录流程 1.3 、实现发送短信验证码功能 1.4 、实现登录拦截功能 1.5 、隐…

创建第一个.NET MAUI应用

1.打开VS2022,创建新项目,并选择.NET MAUI应用,然后点击下一步 2.输入项目相关配置,然后点击下一步 3. 选择框架版本,然后点击创建 4.项目创建成功后会自动打开概述页 5.平台框架切换 6.启动应用,如有下图提示,启动开发者模式 成功启动应用 7.修改应用 修改MainPage.xml如下图…

阿里直播平台面临的技术挑战

大流量、高并发场景下&#xff0c;大型直播的技术挑战一般体现在如下几个方面&#xff1a; 视频流的处理、分发 播放质量保障 视频可用性监控 超大直播间实时弹幕及聊天互动 高性能消息通道 内容控制&#xff0c;如算法鉴黄、文本过滤 系统可用性、稳定性保障 本文将针对其中的…

龙珠直播php,斗鱼、全民TV、龙珠等直播平台排行榜 看视频直播发展趋势

从2015年下半年起&#xff0c;视频直播市场便显露出了火爆之势。除了越来越多的人喜欢观看、愿意参与直播之外&#xff0c;直播类 App也如雨后春笋般不断涌出。 而2016年&#xff0c;视频直播领域更是出现了火爆场面&#xff0c;尤其是刚刚过去的一个月&#xff1a;先是卷土重来…

短视频和直播,哪个会火得更久呢

短视频和直播&#xff0c;哪个会火得更久呢 曾经&#xff0c;电视剧和综艺节目是人们在工作之余放松的主要方式&#xff0c;目前越来越多的电视剧和网剧依靠着当红明星、大 IP 能够在前期获得大量的热度&#xff0c;但在播出之后收视率往往不理想。随着时间的增长&#xff0c;…

怎么创建直播平台

现在直播应用非常火爆&#xff0c;它以生动直观的方式向用户传达最真实的现场信息&#xff0c;受到广大用户的普遍欢迎。小编作为一名技术人员&#xff0c;经常开发各种直播平台&#xff0c;&#xff08;娱乐直播、游戏直播、教育直播、财经直播等&#xff09;下面我把自己积累…

关于linux的ssh(出现的问题以及ubuntu的ssh配置和ssh连接超时问题)

目录 Ubuntu进行ssh连接 关于ssh报错排错 备注&#xff1a;防火墙和selinux可能对ssh连接存在限制&#xff0c;但是我在操作的时候并没对我照成影响 查看selinux状态 ssh_config和sshd_config的区别 Ubuntu进行ssh连接 1.首先需要安装SSH服务器&#xff0c;在ubuntu终端输…

matlab机器人画圆轨迹规划

在这里插入图片描述 function Untitled()clear;clc; L(1)Link([0 0.15055 0 pi/2]); L(2)Link([0 -0.115 0.246 0]); L(3)Link([0 0.1163 0.190 0]); L(4)Link([0 -0.1175 0 pi/2]); L(5)Link([0 0.1175 0 -pi/2]); L(6)Link([0 0.105 0 0]);ZU3SerialLink(L,name,JAKA Z…

Ps制造图标

&#xff08;作者&#xff1a;翟正兴&#xff0c;撰写时间&#xff1a;2019年6月17日&#xff09; 首先我们打开ps新建一个文档 &#xff0c;然后在文档里面用椭圆工具画一个圆出来&#xff0c;画圆的时候把填充禁掉&#xff0c;把描边大小调成30像素首先我们打开ps新建一个文档…

怎么用PS软件图层样式制作图标

1. 2.圆角60px 3. 4.添加图层样式【渐变叠加】 5. 添加【斜面和浮雕】 6. 7.再画一个圆角矩形并添加【图层样式】【渐变叠加】【描边】 8.画圆再次添加【图层样式】【渐变叠加】【内阴影】 9.画圆形并填充黑色【图层样式】【描边】 10. 11.复制圆形最后得到效果图 编辑&#xf…

chatgpt赋能python:Python中最大公约数的函数介绍

Python中最大公约数的函数介绍 在数学中&#xff0c;最大公约数&#xff08;GCD&#xff09;是两个或多个整数的最大公约数。 Python是一种高级编程语言&#xff0c;具有内置的GCD函数。在本篇文章中&#xff0c;我们将介绍Python中的最大公约数函数&#xff0c;以及如何使用它…

Python OpenCV画圆

Python OpenCV画圆 PS: 也是从网上各个帖子中学习的Python&#xff0c;因此代码的格式以及内容有粘贴网上其他大神的代码&#xff0c;如有侵权请告知删除 在图片中检测圆&#xff0c;并进行标注 #!/usr/bin/python # -*- coding: UTF-8 -*-import cv2# 加载图片 img cv2.im…

PS-切图

ps学习 1.改设置 新建ctrN &#xff0c;网页默认选web大小宽度1920 移动工具:设置选择图层 选择自动选择或者按Ctrl鼠标左键可选中 视图&#xff1a;勾标尺显示智能参考线 关掉一些窗口&#xff0c;只留下图层、历史、信息、字符 改信息窗口的面板选项&#xff1a; 改编辑…

C语言画圆(详细解释易懂)

代码 #include<iostream> #include<cmath> using namespace std; int main() { for(double y10;y>-10;y-1){for(int i0;i<10;i) cout<<" ";double x2.5*(10-sqrt(100-y*y)),t;for(t0;t<x;t1) cout<<" ";cout<<…

中点画圆算法----计算机图形学

圆的对称特性&#xff1a; 一个八分圆上的点可以映射为其余七个八分圆的点 利用圆的对称性可以减少计算量&#xff0c;只需要计算出一个八分之一圆上需要画的点&#xff0c;就可以映射出整个圆 中点画圆算法&#xff1a; &#xff08;对于原点为(xc,yc)的圆&#xff0c;假定圆…

Android 自定义View 画圆(奥运五环)

效果图 前言 你会画画吗&#xff1f;你会写代码吗&#xff1f;你会用代码画画吗&#xff1f; 正文 自定义View&#xff0c;实际开发过程中&#xff0c;因为涉及用户体验的时候&#xff0c;UI通常会弄一些骚操作出来&#xff0c;这个时候就有两个选择&#xff0c;你是用GIF…

PS小知识(三)——画圆滑线及虚线

一&#xff1a;画一个圆滑线 1、利用“套索工具”沿着地物画一个圈&#xff1b;或者利用“磁性套索工具”画圈&#xff08;这个的特点是可以大致按照不同的颜色自动追踪&#xff09;。 2、右击进行“描边” 3、进行下面的“平滑”操作 二&#xff1a;画一个圆滑且各段等长的…

html画布里面画圆,html5 canvas 画布画圆

什么是 Canvas? HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。javascript 画布是一个矩形区域,您能够控制其每一像素。css canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。html 浏览器支持 Internet Explorer 9+, Firefox, Opera, Chrome 以及 Sa…

Bresenham 画圆算法原理

文章目录 前言Bresenham 画圆算法原理两个近似构造判别式圆与网格点的关系关系由来关系含义 p i p_i pi​ 递推画圆程序伪码 圆与网格点的关系图示 前言 首先简要介绍一下生成圆的方法&#xff1a; 直接利用圆的方程生成圆利用圆的对称性生成圆 方法一由于会涉及到浮点运算等…