MySQL必知必会 笔记

  1. DBMS可分为两类:一类为基于共享文件系统的DBMS,另一类为基
    于客户机 — 服务器的DBMS。前者(包括诸如Microsoft Access和FileMaker)用于桌面用途,通常不用于高端或更关键的应用。
    MySQL、Oracle以及Microsoft SQL Server等数据库是基于客户机—服务器的数据库。客户机—服务器应用分为两个不同的部分。服务器部分是负责所有数据访问和处理的一个软件。这个软件运行在称为数据库服务器的计算机上。
  2. MySQL语句中各关键字的顺序:
子 句 说 明 是否必须使用
SELECT 要返回的列或表达式
FROM 从中检索数据的表 仅在从表选择数据时使用
WHERE 行级过滤
GROUP BY 分组说明 仅在按组计算聚集时使用
HAVING 组级过滤
ORDER BY 输出排序顺序
LIMIT 要检索的行数
  1. 在匹配过滤或不匹配过滤时不返回具有NULL值的行。
  2. MySQL通配符:
    (1)百分号:匹配0个、1个或多个字符
    (2)下划线:只匹配单个字符而不是多个字符
  3. MySQL使用正则表达式过滤:
select ... from ... where  待过滤的列名  regexp  '正则表达式'
  1. MySQL 支持的函数
函数名 意义 用法
concat() 将多个列的值连接到一起输出 select concat(‘首都’, ‘(’, ‘国家’, ‘)’) from 表名
trim() 去掉值两端的空格 select trim(列名) from 表名
rtrim() 去掉值右端的空格 select rtrim(列名) from 表名
ltrim() 去掉值左端的空格 select ltrim(列名) from 表名
length() 返回串的长度 select length(列名) from 表名
left() 返回串左边n个字符 select left(列名, n) from 表名
right() 返回串右边n个字符 select right(列名, n) from 表名
lower() 返回小写字符 select lower(列名) from 表名
upper() 返回大写字符 select upper(列名) from 表名

此外MySQL也支持常见的数值处理函数:Abs() Cos() Exp() Mod() Pi() Rand() Sin() Sqrt() Tan()它们的含义是显然的。

  1. 聚集函数在没有group by关键字时作用于所有行上, 有group by时则会作用于每个分组。
  2. 在用UNION组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。对于结果集,不存在用一种方式排序一部分,而又用另一种方式排序另一部分的情况,因此不允许使用多条ORDER BY子句。
  3. auto_increment声明的主键在插入新值时可以不给主键赋值,该列将由MySQL自动增量。
  4. INSERT插入多条数据:
insert into table_name(col_name_1, col_name_2, ...)
	      values(val_1_1, val_1_2, ...),
	        (val_2_1, val_2_2, ...),
	        ...
	        (val_n_1, val_n_2, ...)

此技术可以提高数据库处理的性能,因为MySQL用单条INSERT语句处理多个插入比使用多条INSERT语句快。
11. 从另一张表导入数据:

insert into table_name(col_name_1, col_name_2, ...)
	      select new_col_1, new_col_2, ... from new_table
  1. 如果想从表中删除所有行,不要使用DELETE。可使用TRUNCATE TABLE语句,它完成相同的工作,但速度更快(TRUNCATE实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)。
  2. select last_insert_id()
    
    此语句返回最后一个AUTO_INCREMENT值,然后可以将它用于后续的MySQL语句。

你可能感兴趣的:(MySQL必知必会 笔记)