读MYSQL必知必会的总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读MYSQL必知必会的总结相关的知识,希望对你有一定的参考价值。

看到了mysql必知必会

总结了以下几个以后很有可能用到的知识点:

1.在检索多列的时候,需要再列名之间用“,”进行分开,最后的列名后面不加。

select id,uid,name from 表名;      select* form 表名 代表检索所有的列

 

2.在检索指定从第几行开始后的几行

select id from 表名 limit 3,4;3行开始的后4行,要注意的是检测出来的第一行为0.

 

3.可以用 order by 语句对检测数来的进行排序,因为数据会受到修改编辑的影响导致顺序错乱。

 

4.同理,行的检索。在列 select id,uid,name from 表名 order by name ,uid 进行排序(接下来就是对order by的延伸,比如指定关键字进行排序,用DESC

 

5.利用我们在TP中常用的whereselect id,name from 表名 where name XX

只会返回名字XX的数据,而且只会返回id name两列,where语句的大小于比较使用的还是 > < = (where列名is null可以用于检测该列数据为空的数据)

 

6.当使用where进行条件筛选的时候,可以用AND进行删选条件的增加。OR的话是让MYSQL检索匹配任一条件进行。AND的优先级高于OR,在进行组合的时候需要注意。

 

7.where 可以用In来进行数据过滤:where 条件 in 1,2(一般是指范围);类似于OR的功能。NOT可放在IN进行否定的条件筛选。

 

8.通配符,用于查询未知范围或数值的的数据。需要用到LIKE进行操作。

:where uid like “ab%” 就会出现ab123 ab222等等;注意点是数据搜索的时候是最好尾部加一个%避免空格的影响。”_”和”%”类似,但是”_”只能对一个字符进行筛选。

 

9.正则表达式 where id REGEXP “.000”将解锁出1000.2000.3000......

如果我们的id数据有10002000   

(1)where id LIKE 1000,返回为空;(2where id REGEXP 1000,返回1000

 

10.OR在正则中表现形式为 where id REGEXP”1000|2000”

   匹配字符 where id REGEXP “[123]people”

如果数据存在,id输出1 people;2 people;3 people

[]可以用来[1-5][a-c]

 

  1. 比如我们想找存在.的数据,需要进行\\.来进行操作,称之为前导。通配符类详情P58

 

12.定位符 ^ ,可以规定搜索匹配开始的位置。5^[0-9] 0-100中,会搜索出50-59

 

13.字符串的拼接:Concat()函数可以用来拼接两个列(这个是MYSQL特别之处,其他SQL可能使用”+”或者是”||” Concat(name,” (“,uid,”)”) 输出::名字 (10);注意名字和(10)之前有空格!!!

14.函数。RTrim()去除列值右边的空格;Upper()将文本转为大写,数据输出的时候会出现两次。语法  Upper(uid) AS uid_upcase   1.AC ab  2.AC AB

有个神奇的函数 Soundex()函数可以匹配所有发音类似的名字,时间的函数详看P71,数值处理P74

 

15.聚集函数 AVG() COUNT(确定表中行的数目或符合特定条件的行的数目) MAX() MIN() SUM()

DISTINCT参数与ALL不同,只会选择输出不同的值,ALL为默认行为。

 

16.分组数据,使用GROUP BY指示MySQL分组的数据,将对选出的组进行聚集,不会对整个结果进行。HAVING可以代替WHERE,区别是HAVING可以过滤筛选分组,WHERE只能过滤筛选行。注:在使用GROUP BY会出现一定顺序问题,需要使用ORDER BY对其进行重新排序。

 

17.子查询。顾名思义,就是在查询内再套一层查询,但是子查询优先级高。

 

18.联结:关系表:利用主键和外键。主键为唯一标识,外键包含另一个表的主键值,定义了两个表之间的关系。

 

19.组合查询。我们可以用UNION将两句SQL语句进行组合查询,且输出组合原单个查询的结果集。UNION在查询的时候会自动去除重复的行。

 

20.全文本搜索。可以使用 Match()Against()执行全文本的搜索,Match()指定被搜索的列,Against()指定要使用的搜索表达式

 

21.布尔文本搜索。操作符在P128,简单来说,就是在检索的时候增加条件。

-------------------------------------------------------------------------------------------------------------------

22.数据插入。INSERT为数据插入,SELECT为数据查询。

基本语法INSERT INTO 表名

         VALUSE(按列所需要的数据进行,注,由于第一列为自增,所以填NULL

NSERT插入多行的时候用”;”区分。

 

23.INSERT SELECT就是插入检索出的数据。基本语法:

   INSERT INTO 表名1idname) SELECT id,name FROM 表名2

   注意的是,MYSQL关心的是位置而不是列名。

----------------------------------------------------------------------------------------------------------------------

24.更新表中特定的行UPDATE ; 删除数据DELETE

基本语法 UPDATE 表名 SET name=”fjf ” WHERE id = 1;

DELETE 表名 SET name=”fjf ” WHERE id = 1;

 

 

 

 

 

25.NULL的使用。 CREATE  TABLE(创建表)

CREATE  TABLE  表名(

id  int  NOT NULL,

name  int  NOT NULL,

content text NULL,

PRIMARY  KEY (order_num)

ENGINE=InnoDB;

表示idname字段不能为空,content字段可以为空(主键是默认不能为NULL的)

可以使用DEFAULT来指定默认值,在NOT NULL的条件下。

content  text  NOT NULL DEFAULT 123456789 ,

 

26.AUTO_INCREMENT确定了哪一个字段可以成为主键。每个表只能允许存在一个。

 

27.ENGINE=InnoDB;为指定引擎,如果省略这个,会使用默认引擎。MYSQL使用多个引擎处理。(P151)注:外键不能跨引擎使用。

 

28.ALTER TABLE:用于定义外键,可以使众多表一起修改列的信息

DROP TABLE:用于删除表

RENAME TABLE:用于重命名表

----------------------------------------------------------------------------------------------------------------------

29.使用视图。可以将查询包装成一个虚拟表。虚拟表不包含表中应有的任何列或者数据,只包含SQL语句。类似于封装,把需要的东西封装好,我们只需要知道调用的时候输入什么就可以了。

注:

1)视图表唯一的名称;

2)视图表可以使用ORDER BY,但是SELECT出来的数据含有ORDER BY,则视图中的ORDER BY将会被覆盖掉;

3)视图表不能索引,也不会有关联的触发器和默认值。

4)视图表可以和表在一起使用,如编写一条联结表和视图的SELECT语句。

 

30.视图用CREATE VIEW语句创建。使用SHOW CREATE VIEW viewname查看创建视图的语句。

使用DROP可以删除视频,其语法为DROP VIEW viewname

更新视图的时候,可以先用DROP再用CREATE,也可以直接使用CREATE OR REPLACE VIEW(如果视图不存在,第二条语句会创建一个视图;如果更新的视图存在,第二条语句会替换原有视图)

 

31.视图的更新。可以使用INSERT,UPDATEDELETE进行更新。

 

----------------------------------------------------------------------------------------------------------------------

 

 

 

 

 

32.存储过程。

1MYSQL的存储语句为CALL。例:CALL  productpricing@hight@low@average;执行了名为productpricing的存储过程。 注:所有MYSQL变量都必须@开始

2)在创建存储过程中:

CREATE PORCEDURE productpricing()

BEGIN

SELECT Avg(prod_price) AS priceaverage

FROM products;

END;

可以使用BEGINEND来限定存储的过程体。

3CALL productpricing()执行刚创建的存储过程并显示返回的结果。存储实际上是一种函数,所以在存储过程名后需要加()

 

33.删除存储过程。 DROP PROCEDURE productpricing

删除的时候productpricing后面没有加()。为了防止指定的过程不存在而报错,可以使用

DROP PROCEDURE IF EXISTS,即指定的过程存在才删除。

 

34.检查存储过程。SHOW CREATE PROCEDURE。获取建表详情:SHOW PROCEDURE STATUS

 

----------------------------------------------------------------------------------------------------------------------

35.游标。游标是一个存储在MYSQL服务器上的数据库查询,是被语句检索出来的结果集。游标可以用DECLARE语句创建

例:CREATE PROCEDURE 过程名()

BEGIN

DECLARE 游标名 CURSOR

FOR

SELECT 字段 FROM 表名;

END;

注:游标在存储完成之后会消失。

 

36.游标打开。由OPEN CURSOR语句打开。声明游标之后,再次打开OPEN+游标名;关闭 CLOSE+游标名,释放游标使用的资源和内存。如果不用CLOSE,当END语句会自动关闭。

游标的数据可以使用FETCH进行访问

 

----------------------------------------------------------------------------------------------------------------------

37.使用ROLLBACK可以撤销MYSQL语句;COMMIT可以确保明确提交。

 

38.保留点。设置:SAVEPOINT 标点名。 回退保留点ROLLBACK TO 标点名。

 

39.SET autocommit=0;可以让数据库不会自动提交更改。不管COMMIT语句,直到autocommit被设置为真时。

 

40.使用字符集和校对顺序。SHOW CHARACTER SET。显示所有可用的字符集以及每个字符集的描述和默认校对。SHOW COLLATION,显示所有可用的校对,以及他们使用的字符集。

41.CREATE USER创建新用户账号

CREATE USER 用户名 IDENTIFIED BY 口令;RENME UESR aaa TO bbb;名字从aaa变成bbb

DROP USER 用户名,删除了用户账号。

SHOW GRANTS FOR,设置账号的权限,可以登入,但是无法修改数据。

更好的是使用GRANT语句来设置权限。需要赋予的权限,赋予权限的数据库或者表,用户名。

GRANT SELECT ON 数据库名.*(这个数据库所有表) TO 用户名:表示用户在这个数据库上所有表只能执行查询的功能。

 

42.REVOKE为撤销赋予的权限。

REVOKE SELECT ON 数据库名.*(这个数据库所有表) TO 用户名;撤销的时候,权限必须在,否则容易出错。

 

43.GRANTREVOKE可以在几个层次上使用

这个服务器,使用GRANT/REVOKE ALL ;整个数据库 GRANT/REVOKE ON 数据库名.*

特定的表 GRANT/REVOKE ON 数据库名.表名 ; 特定的列 ; 特定的存储过程。P202-203

 

44.SET PASSWORD FOR 用户名 = Password(‘新口令’)

SET PASSWORD = Password(‘新口令’);设置自己的密码

 

45.mysqldump将所有数据库内容到某个外部的文件。mysqlhotcopy从一个数据库复制所有数据。

BACKUP TABLE或者SELECT INTO OUTFILE转储所有数据到某个外部文件。这两个语句都接受要创建的系统文件名,此系统文件必须不存在,否则会出错。数据可以用RESTORE TABLE来复原。

 

46.ANALYZE TABLE检查表键是否正确;CHECK TABLE用来针对许多问题对表进行检查。CHANGED检查最后一次检查以来改动的表。MEDIUM检查所有被删除的链接并进行键检验。QUICK只进行快速扫描。

 

47.日志文件。

错误日志:通常命名为hostname.err,位于data目录中,该日志可以使用--log-error命令行选项更改.

查询日志。他记录MYSQL所有活动,通常命名为hostname.log,位于data目录中,该日志可以使用--log命令行选项更改.

二进制日志:记录更新过的数据,或者可能更新过数据的所有语句。通常命名为hostname.bin,位于data目录中,该日志可以使用--log-bin命令行选项更改.

缓慢插叙日志。这个日志记录执行缓慢的任何查询。可以优化数据库。通常命名为hostname-slow.log,位于data目录中,该日志可以使用--log-slow-queries命令行选项更改.

 

以上是关于读MYSQL必知必会的总结的主要内容,如果未能解决你的问题,请参考以下文章

必知必会的设计原则——合成复用原则

mysql必知必会的学习

必知必会的MySQL知识②使用MySQL

ZooKeeper 必知必会的知识点

读《MySql必知必会》笔记

开发中必知必会的常用Linux命令