当前位置:首页 > MySQL必知必会
MySQL必知必会
了解SQL 数据库基础
数据库(Database):保存有组织的数据的容器(通常是一个文件或一组文件),是通过DBMS创建和操纵的容器。
表(table):某种特定类型数据的结构化清单。表名具有唯一性。 模式(schema):关于数据库和表的布局及特性的信息。 列(column):表中的一个字段。所有表都是由一个或多个列组成的。 分解数据:正确地数据分解为多个列极为重要。这样才有可能利用特定的列对数据进行排序和过滤。
数据类型(datatype):所容许的数据的类型。每个表列都有相应的数据类型,它限制或容许该列存储的数据。
行(row):表中的一个记录。 主键(primary key):一列(或一组列),其值能够唯一区分表中的每个行。(应该总是定义主键,主键列不允许NULL值)
主键的好习惯:不更新主键列中的值;不重用主键列的值;不在主键列中使用可能会更改的值。
什么是SQL
SQL(Structured Query Language):结构化查询语言。 MySQL简介
2.1什么是MySQL
A.MySQL是一种DBMS,即它是一种数据库软件。种类:一类基于共享文件系统的DBMS,另一类基于客户机-服务器的DBMS。
B.客户机-服务器软件:服务器部分是负责所有数据访问和处理的一个软件,它运行在称为数据库服务器的计算机上。客户机是与用户打交道的软件(所有请求或更改来自运行客户机软件的计算机)。
C.服务器软件为MySQL DBMS,客户机可以是MySQL提供的工具,脚本语言,web开发语言,程序设计语言。
2.2 MySQL工具(已经集成到MySQL Workbench) A.MySQL命令实用程序
B.MySQL Administrator:用于简化MySQL服务器的管理。 C.MySQL Query Browser:用来编写和执行MySQL命令。 使用MySQL 3.1 连接
A.如何连接和登录到MySQL,为了连接到MySQL,需要一下信息:主机名(计算机名)——如果连接到本地MySQL服务器,为localhost;端口(使用默认端口3306之外的端口);一个合法的用户名;用户口令(如果需要的话)。
3.2 选择数据库
A.在执行任何数据库操作前,需要选择一个数据。为此,可使用USE关键字。 B.关键字(key word):作为MySQL语言组成部分的一个保留字。 C.(USE crashcource;)必须先使用USE打开数据库,才能读取其中的数据。 3.3 了解数据库和表
A.(SHOW DATABASES;)数据库、表、列、用户、权限等信息被存储在数据库和表中。
B.不过,内部的表一般不直接访问。(可用SHOW命令来显示这些信息,MySQL从内部表中提取这些信息。)SHOW TABLES; SHOW COLUMNS FROM customers;
C.什么是自动变量?某些表列需要唯一值。在每个行添加到表中时,MySQL可以自动地为每个行分配下一个可用编号,不用在添加一行时手动分配唯一值。
D.DESCRIBE语句:MySQL支持用 DESCRIBE作为SHOW COLUMNS FROM的一种快捷方式。
4.1 SELECT语句
A.SELECT语句的用途是从一个或多个表中检索信息。 4.2 检索单个列
A.SELECT prod_name FROM products;
B.未排序数据:如果没有明确排序查询结果,则返回的数据的顺序没有特殊意义。 C.结束SQL语句:多条SQL语句必须以分号分隔。如果使用的是MySQL命令行,必须加上分号来结束SQL语句。
D.SQL语句和大小写:SQL语句不区分大小写,但是一般对所有SQL关键字使用大写,而对所有列和表名使用小写。
E.使用空格:在处理SQL语句时,其中所有空格都被忽略。 4.3 检索多个列
A.当心逗号:在选择多个列时,一定要在列名之间加上逗号,但最后一个列名后不加。SELECT prod_id, prod_name, prod_price FROM products;
B.数据表示:SQL语句一般返回原始的,无格式的数据。数据的格式化是一个表示问题,而不是一个检索问题。因此,表示(对齐和显示上面的价格值,用货币符号和逗号表示其金额)一般在现实该数据的应用程序中规定。
4.4 检索所有列
A.SELECT * FROM products;
B.使用通配符:一般,除非你确定需要表中的每个列,否则最好不要使用*通配符。检索不需要的列通常会降低检索和应用程序的性能。
C.检索未知列:由于不明确指定列名,所以能检索出名字未知的列。 4.5 检索不同行
A.SELECT vend_id FROM products; B.SELECT DISTINCT vend_id FROM products; 关键字DISTINCT指示MySQL只返回不同的值(唯一)。
C.DISTINCT关键字应用于所有列而不仅是前置它的列。 4.6 限制结果
A.SELECT prod_name FROM products LIMIT x,y; x和y为数字,第一个为开始位置,第二个数字为要检索的行数。
B.检索出来的第一行为行0而不是行1。
C.在行数不够时,MySQL将只返回它能返回的那么多行。 D.MySQL 5的LIMIT语法 4.7 使用完全限定的表名
A.使用完全限定的名字来引用列(同时使用表名和列字) B.SELECT products.prod_name FROM products;
C.SELECT products.prod_name FROM crashcource.products;
排序检索数据 5.1 排序数据
A.关系数据库设计理论认为:如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有意义。
B.子句(clause)SQL语句由子句构成,一个子句通常由一个关键字和所提供的数据组成。
C.SELECT prod_name FROM products ORDER BY prod_name;
D.通常,ORDER BY子句使用的列将是为显示所选择的列。但是,用非检索的列排序数据是完全合法的。
5.2 按多个列排序
A.SELECT prod_id, prod_price, prod_name FROM products
ORDER BY prod_price, prod_name; 5.3 指定排序方向
A.默认是升序排序,为了进行降序排序,必须指定DESC关键字。DESC关键字只应用到直接位于其后面的列名。如果想在多个列上进行降序排序,必须对每个列指定DESC。
B.SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC;
C.区分大小写和排序顺序在字典排序顺序中,A被视为与a相同,这是MySQL的默认行为。不过有需要可以改变数据库的设置。
D.使用ORDER BY和LIMIT的组合,能够找出一个列中最高或最低的值。SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT 1;
过滤数据
6.1 使用WHERE子句
A.只检索所需数据需要指定搜索条件(search criteria)或过滤条件(filter condition) B.SELECT prod_name, prod_price FROM products WHERE prod_price = 2.5;
C.SQL过滤与应用过滤数据也可以在应用层过滤。但是,这种实现并不令人满意。 D.WHERE子句排在ORDER BY之前。 6.2 WHERE子句操作符
A.SELECT prod_name, prod_price FROM products WHERE prod_name = ‘fuses’;MySQL在执行匹配时默认不区分大小写。
B.何时使用引号:单引号用来限定字符串的。如果将值与串类型的列进行比较,则需要限定引号,用来跟数值列进行比较的值不用引号。
C.范围值检查:为了检查某个范围的值,可使用BETWEEN操作符。SELECT prod_name, prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;
D.NULL 无值(no value)它与字段包含0,空字符串或仅仅包含空格不同。SELECT prod_name FROM products WHERE prod_price IS NULL;
E.NULL与不匹配,在过滤数据时,一定要验证返回数据中确实给出了被过滤列具有NULL的行。
数据过滤
7.1 组合WHERE子句
A.为了进行更强的过滤控制,MySQL允许给出多个WHERE子句,以AND子句的方式或OR子句的方式使用。
B.操作符(operator)用来联结或改变WHERE子句中的子句的关键字,也称为逻辑
操作符(logical operator)
C.AND 用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。OR 它指示MySQL检索匹配任一条件的行。
D.在WHERE子句中使用圆括号任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。
7.2 IN操作符
A.IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配,IN取合法值的由逗号分隔清单,全都括在圆括号中。
B.IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。
SELECT prod_name,prod_price FROM products
WHERE vend_id IN (1002,1003) ORDER BY prod_name; 7.3 NOT
A.WHERE子句中用来否定后跟条件的关键字。(NOT IN)
B.MySQL中的NOT MySQL支持使用NOT对IN,BETWEEN和EXISTS子句取反,这与多数其他DBMS允许使用NOT对各种条件取反有很大的差别。SELECT prod_name, prod_price FROM products WHERE vend_id NOT IN (1002, 1003) ORDER BY prod_name;
用通配符进行过滤 8.1 LIKE操作符
A.利用通配符可创建比较特定数据的搜索模式。
B.通配符(wildcard)用来匹配值的一部分的特殊字符。
C.搜索模式(search pattern)由字面值,通配符或两者组合构成的搜索条件。 D.LIKE指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。 E.谓词:操作符在它作为谓词(predicate)时,不是操作符,从技术上说,LIKE是谓词而不是操作符。
F.百分号(%)通配符:在搜索串中,%表示任何字符出现任意次数。以下例子使用了搜索模式’jet%’:
G.区分大小写:根据MySQL的配置方式,搜索可以是区分大小写的。
H.注意尾空格:尾空格可能会干扰通配符匹配。注意NULL:虽然似乎%通配符可以匹配任何东西,但是有一个例外,即NULL。
I.下划线(_)通配符:下划线只匹配单个字符而不是多个字符,不能多也不能少。 8.2 使用通配符的技巧
A.使用通配符搜索的处理一般要比前面讨论的其他搜索所花时间更长。
B、不要多度使用通配符。在确实需要使用通配符时,除非绝对有必要,否则不要把他们用在搜索模式的开始处。仔细注意通配符的位置。
用正则表达式进行搜索 9.1 正则表达式介绍
A.正则表达式是用来匹配文本的特殊的串(字符集合)。所有种类的程序设计语言,文本编辑器,操作系统等都支持正则表达式。
9.2 使用MySQL正则表达式
A.MySQL仅仅支持多数正则表达式实现的一个很小的子集。
B.LIKE匹配整个列值。如果被匹配的文本仅在列值中出现,LIKE将不会找到它,相
共分享92篇相关文档