关于mysql的基础知识(持续学习更新)

基于书籍《mysql必知必会》
4.21
1.mysql 的基本概念:DB、DBMS、SQL
2.mysql服务的启动:计算机-右击管理-服务和应用程序-服务(本机mysql80)
快捷启动:管理员模式启动命令行-输入net start/stop mysql80
3.mysql 连接方法和原理:mysql -h localhost -P3306 -u root -p
-h计算机名,-P端口号,-u用户名,-p口令密码
当使用本机时可省略-h和-P
4.sql语句相关:sql语句结尾加“;”、“\g”
显示数据库:show databases;
使用数据库:use sys;
查看现在所在数据库:select database ();
获得数据库内表的列表:show tables;
显示表列:show COLUMNS from version;=describe version;
±--------------±-----------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±--------------±-----------±-----±----±--------±------+
| sys_version | varchar(5) | NO | | | |
| mysql_version | varchar(6) | NO | | | |
±--------------±-----------±-----±----±--------±------+
5.检索单个列:select sys_version from version;
检索多个(全部)列:select sys_version,mysql_version from version;=select * from version;
检索不同的行:select DISTINCT sys_version from version;
6.排序数据:
使用“order by”子句:select sys_version from version ORDER BY sys_version;
多个列排序:select sys_version,mysql_version from version ORDER BY sys_version;
select column1,column2,column3 from table order by column1,column2;
仅在多个行具有相同的column1时才对column2进行排序,如果指定的column1是唯一的,则不会按照column2排序
7.指定排序方向:使用“DESC”关键字:select column1,column2,column3 from table order by column1 DESC;
”DESC“只应用到直接位于其前面的列明,如果需要对多个列进行降序排序,需要对每一列加"DESC":
select column1,column2,column3 from table order by column1 DESC,column2 DESC;
“ASC”关键字代表顺序,“Limit 1”表示仅返回一行,可以组合输出最高值或者最低值

4.26
过滤数据
1.使用“where”子句,where子句在表明(from子句)后给出:SELECT column1;column2 FROM table WHERE column2 =x;从表中检索两列,不返回所有行,只返回colunm2=x得行;
在同时使用order by子句时,应该使order by子句位于where子句之后,不然会发生错误
2.where子句操作符:

操作符说明
=等于
<>不等于
!=不等于
<小于
<=小于等于
>大于
>=大于等于
BETWEEN在指定的两个值中间

3.where子句中,如果将值与字符串类型的列进行比较,需要限定单引号’’,用来与数值列进行比较的值不需要用引号
4.不匹配检索使用<>或者!=
5.范围值检索SELECT column1,column2 FROM table BETWEEN A AND B;
使用between时,必须指定两个值,所需范围的最低值和最高值,使用AND关键字分隔。between匹配范围内的所有值,包括指定的开始值和结束值
6.在创建表时,表设计人员可以指定其中的列是否可以不包含值。在一个列不包含值时,称其为包含空值。
NULL 无值,它与字段包含0、空字符串或仅仅包含空格不同
使用IS NULL子句SELECT colunm1 FROM table WHERE column2 IS NULL;
在过滤数据时,一定要验证返回数据中确实给出了被过滤列具有NULL的行

数据过滤
1.为了通过不止一个列进行过滤,可使用AND操作符给WHERE子句附加条件:SELECT colum1,column2 FROM table WHERE column1=A AND column2<=B;
AND关键字指示只返回满足所有给定条件的行,可以添加多个过滤条件,每添加一条,就要使用一个and
2.OR操作符指示mysql检索匹配任一条件的行SELECT column1, column2 FROM table WHERE column3=X OR column4=Y;
3.计算次序:where可包含任意数目的AND和OR操作符。SQL语言在处理OR操作符之前优先处理AND操作符,因此使用圆括号明确的分组相应的操作符。
SELECT column1, column2 FROM table WHERE (column3=X OR column4=Y) AND column5=A;
圆括号具有较AND或OR操作符高的计算次序,首先过滤圆括号内的OR条件
4.IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单,全都括在圆括号中。SELECT colunm1, column2 FROM table WHERE column3 IN (A,B);
IN WHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当。
5.WHERE子句中的NOT操作符有且只有一个功能,否定它之后所跟的任何条件。
mysql支持使用NOT对IN、BETWEEN、EXISTS子句取反。
SELECT column1, column2 FROM table WHERE column3 NOT IN (A,B) ORDER BY column1;

用通配符进行过滤
1.通配符:用来匹配值的一部分的特殊字符。
搜索模式:有字面值、通配符或两者组合构成的搜索条件。
利用通配符可以创建比较特定数据的搜索模式。
为了搜索子句中使用通配符,必须使用LIKE操作符。LIKE指示mysql,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。
2.百分号(%)通配符
在搜索串中,%表示任何字符出现的任意次数。
SELECT column1, column2 FROM table WHERE column2 LIKE 'jet%';检索任意以jet起头的词。
通配符可以在搜索模式中任意位置使用,并且可以使用多个通配符。
SELECT column1, column2 FROM table WHERE column2 LIKE '%jet%;'匹配任何位置包含文本jet的值,不论他之前或之后出现什么字符。
通配符也可以出现在搜索模式的中间。SELECT column1, column2 FROM table WHERE column2 LIKE 'je%t;找出以je起头,t结尾的所有产品。
除了一个或多个字符外,%还能匹配0个字符。%代表搜索模式中给定位置的0个、1个或多个字符。
%不可以匹配用NULL作为产品名的行
3.下划线(_)通配符
_的用途与%一样,但下划线只能匹配单个字符而不是多个字符,与%能匹配0个字符不一样,_总是匹配一个字符,不能多也不能少。SELECT column1, column2 FROM table WHERE column2 LIKE '_jet;
4.使用通配符的技巧
不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。
在确实需要使用通配符时,除非绝对有必要,否则不要把他们用在搜索模式的开始处,搜索起来最慢。
仔细注意通配符的位置。

4.27
用正则表达式进行搜索
1.正则表达式是用来匹配文本的特殊的串(字符集合)。
如:从一个文本文件中提取电话号码;查找名字中间有数字的所有文件;在一个文本块中找到所有重复单词。。。
2.基本字符匹配
REGEXP后所跟内容为正则表达式,“.”是正则表达式中的特殊字符,表示匹配任意一个字符
SELECT column FROM table WHERE column REGEXP '.000' ORDER BY column;
mysql中的正则表达式不区分大小写,为区分大小写可以使用BINARY关键字,如
WHERE column REGEXP BINARY 'JetPack .000'
3.进行OR匹配
为搜索两个串之一,使用|,类似于SELECT语句中的OR语句,多个OR条件可并入单个正则表达式,如'1000|2000|3000',SELECT column FROM table WHERE column REGEXP '1000|2000|3000' ORDER BY column;
4.匹配几个字符
匹配任何单一字符,可通过指定一组用[和]括起来的字符完成。
SELECT column FROM table WHERE column REGEXP '[123] ton' ORDER BY column;
使用正则表达式[123] ton,这里[123]定义一组字符,意思是匹配1或2或3。[]是另一种形式的OR语句,正则表达式[123] ton 是[1|2|3] ton 的缩写。但是必须用[]来定义OR语句查找什么。
如果不使用[],表达式为'1|2|3 ton',mysql会假定为搜索“1”、“2”或“3 ton”
字符集合也可以被否定,即,他们讲匹配除指定字符外的任何东西。为否定一个字符集,在集合的开始处放置一个‘^’即可。
5.匹配范围
集合可用来定义要匹配的一个或多个字符。
[0123456789]将匹配数字0到9,为简化这种类型的集合,可使用-来定义一个范围:[0-9]。范围不限于完整的集合,[1-3]和[6-9]也是合法的范围。此外,范围不一定只是数值,[a-z]匹配任意字母字符。
6.匹配特殊字符
正则表达式语言由具有特定含义的特殊字符构成。为了匹配特殊字符,必须用\\为前导。\\-表示查找-,\\.代表查找.。SELECT column FROM table WHERE column REGEXP '\\.' ORDER BY column;
这种处理就是所谓的转义,正则表达式内具有特殊意义的所有字符都必须以这种方式转义。为匹配反斜杠(\)字符本身,需使用\\\。多数正则表达式实现使用单个反斜杠转义特殊字符,,以便能使用这些字符本身。但mysql要求两个反斜杠,mysql自己解释一个,正则表达式库解释另一个。
\\也用来引用元字符(具有特殊含义的字符)

元字符说明
\\f换页
\\n换行
\\r回车
\\t制表
\\v纵向制表

7.匹配字符类
存在找出你自己经常使用的数字、所有字母字符或所有数字字母字符等的匹配。可以使用预定义的字符集,称为字符类。详见P58。
8.匹配多个实例
有时需要对匹配的数目进行更强的控制,可以用正则表达式重复元字符来完成。P58
9.定位符
为了匹配特定位置的文本,可以使用定位元字符。P60

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值