读mysql必知必会有感_读MYSQL必知必会的总结

看到了mysql必知必会

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

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

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

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

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

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

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

5.利用我们在TP中常用的where。select 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数据有1000和2000

(1)where id LIKE 1000,返回为空;(2)where 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]

比如我们想找存在.的数据,需要进行\\.来进行操作,称之为前导。通配符类详情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 表名1(id,name) 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;

表示id和name字段不能为空,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,UPDATE和DELETE进行更新。

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

32.存储过程。

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

(2)在创建存储过程中:

CREATE PORCEDURE productpricing()

BEGIN

SELECT Avg(prod_price) AS priceaverage

FROM products;

END;

可以使用BEGIN和END来限定存储的过程体。

(3)CALL 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.GRANT和REVOKE可以在几个层次上使用

这个服务器,使用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命令行选项更改.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值