MySQL必知必会读书笔记,要点记录
一 了解SQL
1 数据库: 保存有组织的数据的容器
数据库软件:DBMS,数据库管理系统
2 表:某种特定类型数据的结构化清单,名字唯一,储存同一类型数据
3 模式:关于数据库和表的布局以及特性信息
4 列: 表中的一个字段,所有表均由一个或多个列构成,每个列有自己的数据类型
5 行:表中的一个记录
6 主键:一(或一组)列,其值能够唯一区分表中每个行,应该总是定义主键,且有两个条件:
任意两行都不具有相同主键值
每行必须有一个主键值(不允许为NULL)
主键的好习惯: 不更新,不重用,不使用可能会更改的值
7 SQL 结构化查询语言
二 MySQL简介
1 MySQL是一种DBMS,是基于客户机-服务器的数据库。每个MySQL都安装有一个名为mysql的简单命令行实用程序。注意:
- 命令以;或\g结束
- 输入help或\h获得帮助
- quit或exit退出命令行实用程序
2 图形交互客户机: MySQL Administrator, MySQL Query Browser
三 使用SQL
1 默认端口3306
2 USE:打开一个数据库
3 内部的表一般不直接访问,可用SHOW命令显示,如
SHOW DATABASES;
SHOW TABLES;
SHOW COLUMNS FROM 表名(貌似跟DESC 表名的结果一样)
SHOW STATUS;
SHOW CREATE DATABASE/TABLE;
SHOW GRANTS;
SHOW ERRORS/WARNINGS;
四 检索数据
1 最常用命令SELECT,从一个或者多个表格中检索信息
2 mysql命令行必须以分号;作为结尾,SQL语句不区分大小写,惯例是对所有SQL关键词使用大写,对所有列和表名使用小写
3 检索多个列,列名之间以逗号分割,SQL语句一般返回原始的,无格式的数据
4 给定通配符*能返回表中所有的列,使用SELECT DISTINCT可以指示只返回不同的值
5 为了返回第一行或前几行,可使用LIMIT子句。如 LIMIT 3,4 为返回从第3行开始的4行。带一个值的LIMIT指的是从第一行开始
6 可使用完全限定的名字来引用列 table.column
五 排序检索顺序
1 SQL由子句构成,一个子句通常由一个关键字和所提供的数据组成
2 ORDER BY可以用来对检索出的数据进行排序,按多个列排序只需用逗号分开即可
3 降序排序在后面加 DESC关键字,多个列降序排序需要每个列都指定DESC关键字
六 过滤数据
1 WHERE子句用于指定搜索条件
2 MySQL在执行匹配时默认不区分大小写
3 在将值与串类型进行比较时需要限定引号,用来与数值列进行比较时不用引号
4 检查某个范围的值可以用 BETWEEN,其包括开始值与结束值
5 NULL为无值。与字段包含0,空字符串或者只包含空格不同,有 IS NULL可以用来判定
七 过滤数据
1 操作符:用于联结或改变WHERE子句中的子句的关键字,也称为逻辑操作符
2 AND、OR,连用时最好结合圆括号使用
3 IN 用来指定条件范围
4 NOT否定之后的所有条件,在MySQL中支持对 IN,BETWEEN和EXISTS子句取反
八 利用通配符进行过滤
1 通配符:用于匹配值的一部分的特殊字符,为在搜索子句中使用通配符,必须使用LIKE操作符
2 最常用的是百分号%,表示任何字符出现的任意次数,如 %123%表示匹配任何位置包含文本123的值
3 下划线_ 用于匹配一个字符
九 用正则表达式进行搜索
1 .是正则表达式语言中的特殊字符,表示匹配任意一个字符
2 用REGEXP代替LIKE
3 |表示正则表达式 的OR操作符
4 []是另一种形式的OR语句,如[123]表示匹配1或2或3,[1-9]表示匹配1到9,[a-z]表示任意字母字符
5 匹配特殊字符必须用\\为前导
6 匹配字符类
7 重复元字符
如 [:digit:]{4}表示匹配连在一起的任意4位数字
8 定位符
如 ^[0-9] 表示以一个数开始的所有数据
十 创建计算字段
1 计算字段是在运行SELECT语句内创建的,字段基本与列的含义相同,在数据库多称列,计算字段时多用术语字段
2 拼接字段:
多数DBMS: + 或 ||
MySQL:Concat() 函数, 把多个串连接起来形成一个较长的串
如:
SELECT Concat(C1, '(' , C2,')') FROM ...
3 RTrim去掉右边空格, LTrim去掉左边空格,Trim去掉左右两边的空格
4 AS 赋予别名,如 S
ELECT Concat(C1, '(' , C2,')') AS newname FROM ...
别名也被称为导出列
5 算数操作符 + - * /
SELECT C1*C2 AS newname FROM ...