MySQL必知必会1

上传人:工**** 文档编号:472029230 上传时间:2023-10-03 格式:DOC 页数:18 大小:33KB
返回 下载 相关 举报
MySQL必知必会1_第1页
第1页 / 共18页
MySQL必知必会1_第2页
第2页 / 共18页
MySQL必知必会1_第3页
第3页 / 共18页
MySQL必知必会1_第4页
第4页 / 共18页
MySQL必知必会1_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《MySQL必知必会1》由会员分享,可在线阅读,更多相关《MySQL必知必会1(18页珍藏版)》请在金锄头文库上搜索。

1、MySQL必知必会1MySQL必知必会? 了解SQL什么是数据库:数据库(database)保存有阻止的数据的容器,可以把数据库想象成一个文件柜。什么是表:表(table) 某种特定类型结构的结构化清单,数据库中的表的名字是唯一的。什么是列:列(column)表中的一个字段。所有表都是有一个或多个列组成的,理解列的最好办法是将数据库表想象为一个网格,网格中每一列存储着一条特定信息。例如,编号,地址,邮政编码。什么是行:行(row) 表中的数据是按行存储的,所保存的每个记录存储在自己的行内,例如,每一行存储一个顾客。什么是主键:主键(primary key ) 一列(或一组列)其值能够唯一区分表

2、中的每一行。唯一标识表中每行的这个列称为主键。主键用来表示一个特定的行,没有主键,更新或删除特定的行很困难,因为没有安全的方法保证只涉及相关的行。什么是SQL: SQL(发音为字母S-Q-L或sequel)是结构化查询语言(Structured Query Language)的缩写,SQL是一种专门用来与数据库通信的语言。检索数据SELECT语句:检索单个列:SELECT prod_name FROM products;分析:上述语句利用SELECT语句从products表中检索一个名为prod_name的列。所需的列名在SELECT关键字之后给出,FROM关键字指出从其中检索数据的表名。检索

3、多个列:SELECT prod_id,prod_name,prod_price FROM products;分析:指定了3个列名,列名之间用逗号分隔,最后一个列名不加逗号检索所有列: SELECT * FROM products;分析:如果给定了一个通配符(*),则返回表中的所有列。列的顺序一般是列在表中定义出现的顺序。但有时候并不是这样的,表的模式的变化(如添加或删除列),可能会导致顺序变化检索不同的行:SELECT DISTINCT vend_id FROM products ;分析:SELECT DISTINCT vend_id告诉MySQL只返回不同的vend_id行,如果使用DIST

4、INCT关键字,必须放在列名的最前面限制结果: SELECT pro_name FROM products LIMIT 5;分析: 此语句使用SELECT语句检索单个列,LIMIT 5指示MySQL返回不多于5行为了得到下一个5行,可指定要检索的开始行和行数: SELECT pro_name FROM products LIMIT 5 ,5分析:LIMIT 5 , 5指示MySQL返回从行5开始的5行。第一个数为开始位置,第二个数为要检索的行数。注意:检索从第0行开始使用完全限定的表名:*完全限定(同时使用表名和列名)SELECT products.prod_name FROM product

5、s;? 排序检索数据子句: SQL语句由子句构成,有些子句是必须的,而有的是可选的,ORDER BY: SELECT prod_name FROM products ORDER BY prod_name分析: 选择prodects的prod_name列,对prod_name列按照字母升序多个列排序: SELECT prod_id,pro_price,prod_name FROM products ORDER BY prod_price,prod_name;分析: 仅在多个行具有相同的prod_price值时才对产品按prod_name进行排序。如果prod_price列中所有的值是唯一的,则不

6、会按prod_name排序指定排序方向: SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price DESC;分析:以价格降序排序产品多个列排序: SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price DESC,prod_name;分析: DESC 关键字只应用到直接位于其前面的列名,prod_price列指定DESC,对prod_name列不指定。因此,prod_price列以降序排序,而prod_name仍然按标准的升序排序

7、如果想在多个列进行降序排序,必须对每个列指定DESC关键字升序:ASC,默认值? 过滤数据只检索所需数据需要指定搜索条件,搜索条件也称为过滤条件在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤,WHERE子句在表名(FROM子句)之后给出输入: SELECT prod_name,prod_price FROM products WHERE prod_price = 2.50;分析: 这条语句从products表中检索两个列,但不返回所有行,只返回prod_price值为2.5的行WHERE子句操作符操作符说明=等于lt;不等于!=不等于lt;小于lt;=小于等于大于=大于等

8、于BETWEEN在指定的两个值之间检查单个值输入:SELECT prod_name,prod_price FROM products WHERE prod_name = fuses分析: 检查WHERE prod_name=fuses语句,他返回prod_name的值为Fuses的一行。MySQL在执行匹配时默认不区分大小写范围值检查输入: SELECT prod_name,prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;分析: 在使用BETWEEN时,必须指定两个值;所需范围的低端值和高端值,这两个值必须用AND关键字分隔

9、,BETWEEN匹配范围中所有的值,包括指定的开始和结束值。空值检查在创建表时,表设计人员可以指定其中的列是否可以不包含值,一个列不包含值时,称其为包含空值NULL输入: SELECT prod_name FROM products WHERE prod_price IS NULL;分析: 这条语句返回没有价格的所有产品? 数据过滤AND操作符为了通过不止一个列进行过滤,可以使用AND操作符给WHERE子句附加条件。下面的代码给出了一个例子:输入: SELECT prod_id,prod_price,prod_name FROM products WHERE vend_id = 1003 AN

10、D prod_price lt;= 10;分析:此sql语句检索由供应商1003制造且价格小于等于10美元的所有产品的名称和价格。AND:用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行上述例子中使用了只包含一个关键字AND的语句。把两个过滤条件组合在一起。还可以添加多个过滤条件,每添加一条就要使用一个ANDOR操作符OR操作符与AND操作符不同,他指示MySQL检索任一条件的行输入: SELECT prod_name,prod_price FROM products WHERE vend_id = 1002 OR vend_id = 1003;分析: 此SQL语句检索由任一指定

11、供应商的所有产品的产品名和价格。OR操作符告诉DBMS匹配任一条件而不是同时匹配两个条件。计算次序输入: SELECT prod_name,prod_price FROM products WHERE( vend_id=1002 OR vend_id =1003) AND prod_price =10;分析: 圆括号具有敲AND或OR操作符高的计算次序,DBMS首先过滤圆括号内的OR条件。IN操作符圆括号在WHERE子句中还有另外一种用法。IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单全都在圆括号中。输入: SELECT prod_name,prod

12、_price FROM products WHERE vend_id IN(1002,1003) ORDER BY prod_name;分析: 此SELECT语句检索供应商1002和1003制造的所有产品。操作符后跟由逗号分隔的合法值清单,整个清单必须在圆括号中IN操作符与OR具有相同的功能NOT操作符WHERE子句中的NOT操作符有且只有一个功能,那就是否定他之后所跟的任何条件NOT WHERE子句中用来否定后跟条件的关键字。输入: SELECT prod_name,prod_price FROM products WHERE vend_id NOT IN(1002,1003) ORDER

13、BY prod_name;分析: 这里的NOT否定跟在他之后的条件,因此MySQL不是匹配1002和1003的vend_id,而是匹配1002和1003之外的供应商的? 用通配符进行过滤百分号(%)通配符最常用的通配符是百分号(%)。在搜索串中,%表示任何字符出现的任意次数。例如,为了找出所有以词jet开头的产品,可以使用一下SELECT语句:输入: SELECT prod_id,prod_name FROM products WHERE prod_name LIKE jet%;分析: 此例子使用了搜索模式jet%,在执行这条子句时,将检索任意以jet起头的词。%告诉MySQL接受jet之后的

14、任意字符,不管他有多少字符通配符可在搜索模式中任意位置使用,并且可以使用多个通配符,下面的例子使用两个通配符,他们位于模式的两端:输入: SELECT prod_id,prod_name FROM products WHERE prod_name LIKE %anvil%;分析: 搜索模式%anvil% 表示匹配任何位置包含文本anvil的值,不论他之前或之后出现什么字符*下划线(_)通配符*另一个有用的通配符是下划线(_).下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符输入: SELECT prod_id,prod_name FROM products WHERE prod_na

15、me LIKE _ ton anvil;分析: 与%能匹配0个字符不一样,_总是匹配一个字符,不能多不能少? 用正则表达式进行搜索使用MySQL正则表达式正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较,MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定正则表达式过滤SELECT检索出的数据基本字符匹配输入:SELECT prod_name FROM products WHERE prod_name REGEXP 1000 ORDER BY prod_name;分析: 除了关键字LIKE被REGEXP替代外,这条语句非常像使用LIKE语句,他告诉MySQL:REGEXP后所跟的东西作为正则表达式(与文字正文1000匹配的一个正则表达式)处理输入: SELECT prod_name FROM products WHERE prod_name REGEXP .000 ORDER BY prod_name;分析: 这里使用正则表达式.000 。.是正则表达式语言中一个特殊的 字符,他表示匹配任意一个字符。示例:mysql SELECT NAME FROM account WHERE NAME REGEXP #39;.s#39; ORDER

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号