MySQL基本语句总结

MySQL命令行基础知识

1. MySQL命令集合:

http://www.cnblogs.com/zhangzhu/archive/2013/07/04/3172486.html

http://www.php100.com/html/webkaifa/database/Mysql/2009/0910/3288.html

MySQL执行SQL脚本文件的命令:

从cmd进入mysql命令行模式:

mysql> -uroot –prootpassword –Ddatabasename

如果是我本地的数据库,就相应修改为:

Mysql> -uroot –p111111 –Dmy_database < xxx.sql

执行SQL脚本文件:

mysql> source E:\program files\sql\xxxxxx.sql.

如下图所示:

clip_image002

2. MySQL基础知识:

2.1 连接MySQL数据库

主机名(计算机名)——如果连接到本地MySQL服务器,为localhost;

端口——默认端口为3306.

2.2 数据库操作

假设数据库的名称为:myDatabase;

(1)选择数据库:

输入:USE myDatabase;

输出:Database changed

(2)显示所有的数据库:

输入:SHOW DATABASES;

(3)显示该数据库下的所有表:

输入:SHOW TABLES;

(4)显示某一个表内的所有列,假设表名为customers:

输入: SHOW COLUMNS FROM customers; 或者是 DESCRIBE customers;

2.3 检索数据(SELECT)

输入:SELECT product_name FROM products;

含义:从products表中检索出一个名为product_name的列。

注意:检索出的数据没有排序,返回的数据可能是数据被添加到表中的顺序。

输入:SELECT product_id, product_name, product_price FROM products;

输入:SELECT * FROM products;

输入:SELECT DISTINCT vend_id FROM products;

输入:SELECT product_name FROM products LIMIT 5; //少于5行.

输入:SELECT product_name FROM products LIMIT 5,5; //检索出第6行后的5行.

输入:SELECT product.product_name FROM products; //使用完全限定的表名

输入:SELECT products.product_name FROM myDatabase.products; //完全限定数据库名和表名

2.4 排序检索数据(ORDER BY)

输入:SELECT product_name FROM products ORDER BY product_name; //按一列排序.

输入:SELECT product_id, product_price, product_name FROM products ORDER BY product_price, product_name; //按多个列排序.

指定排序方向(如果不指定排序方向,默认是升序ASC):

输入:SELECT product_id,product_price,product_name FROM products ORDER BY product_price DESC/ASC; //DESC是降序,ASD是升序.

输入:SELECT product_id,product_price,product_name FROM products ORDER BY product_price DESC, product_name; //先按照product_price降序排,再对结果按name排序.

输入:SELECT product_price FROM products ORDER BY product_price DESC LIMIT 1;

注意:关键字顺序SELECT->FROM>ORDER BY>LIMIT,如果次序不对,结果会报错。

2.5 过滤数据(WHERE)

过滤条件:=,<>,!=,<,<=,>,>=,BETWEEN

操作符

=

<>

!=

<

<=

>

>=

BETWEEN

说明

等于

不等于

不等于

小于

小于等于

大于

大于等于

之间

输入:SELECT product_name,product_price FROM products WHERE product_price=2.50;

输入:SELECT product_name,product_price FROM products WHERE product_price BETWEEN 5 AND 10;

输入:SELECT product_name FROM products WHERE product_price IS NULL; // 空值检查.

2.6 数据过滤(组合WHERE子句,AND/OR/IN/NOT)

输入:SELECT product_id,product_price,product_name FROM products WHERE vend_id = 1003 AND product_price <=10;

输入:SELECT product_name,product_price FROM products WHERE vend_id=1002 OR vend_id=1003;

输入:SELECT product_name,product_price FROM products WHERE (vend_id=1002 OR vend_id=1003) AND product_price >=10;

注意任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符,而不要去过分依赖默认计算次序。

输入:SELECT product_name,product_price FROM products WHERE vend_id IN (1002,1003) ORDER BY product_name;

输入:SELECT product_name,product_price FROM products WHERE vend_id=1002 OR vend_id=1003 ORDER BY product_name;

注意:在where子句中应用IN和OR的功能是相同的,但是IN操作符的优点如下:

(1) 使用长的合法选项清单时,IN操作符的语法更清楚且更直观;

(2) 计算的次序更容易管理;

(3) IN操作符一般比OR操作符清单执行更快;

(4) IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。

输入:SELECT product_name,product_price FROM products WHERE vend_id NOT IN (1002,1003) ORDER BY product_name;

2.7 用通配符进行过滤(LIKE—%)

通配符(wildcard):用来匹配值的一部分的特殊字符。

LIKE指示MySQL后跟的搜索模式利用通配符匹配,而不是直接相等匹配进行比较。

%:表示任何字符出现任意次数。

1)找到所有以词jet开头的产品:

输入SELECT product_id,product_name FROM products WHERE product_name LIKE ‘jet%’;

注意:通配符可以在搜索模式中任意位置使用,并且可以使用多个通配符。

输入SELECT product_id,product_name FROM products WHERE product_name LIKE ‘%anvil%’;

_:用途与%一样,但下划线只匹配单个字符而不是多个字符。

注意:通配符搜索的处理一般要比之前讨论的其他搜索花费时间长。使用通配符的技巧:

(1) 不要过度使用通配符,即如果其他操作符能达到相同目的,应该使用其他操作符;

(2) 确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的;

(3) 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。

2.8 用正则表达式进行搜索

正则表达式:用来匹配文本中的特殊的串(字符集合)。所有种类的程序设计语言、文本编辑器、操作系统都支持正则表达式。

注意:MySQL仅支持多数正则表达式实现的一个很小的子集。

2.8.1基本字符匹配

输入:SELECT product_name FROM products WHERE product_name REGEXP ‘1000’ ORDER BY product_name;

含义:它告诉MySQL,REGEXP后所跟的东西作为正则表达式(与文字正文1000匹配的一个正则表达式)处理。

注意:LIKE与REGEXP的区别:

(1) LIKE匹配整个列。如果被匹配的文本在列值中出现,LIKE将不会找到它,相应的行也不会被返回(除非使用通配符);

(2) REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行也会被返回。

2.8.2 进行OR匹配

输入:SELECT prod_name FROM products WHERE prod_name REGEXP ‘1000|2000’ ORDER BY prod_name;

输入:SELECT prod_name FROM products WHERE prod_name REGEXP ‘[123] Ton’ ORDER BY prod_name;

含义:[123]定义一组字符,意思是匹配1或2或3,等同于1|2|3。

2.9创建计算字段

需求:由于存储在表中的数据不是应用程序所直接需要的。因此需要在检索的过程中同时进行计算。

2.9.1 拼接字段( concatenate)

输入:SELECT Concat( vend_name, ‘(’, vend_country, ‘)’) FROM vendors ORDER BY vend_name;

含义:将会形成一个新的拼接后的列名,为Concat(vend_name, ‘(’, vend_country, ‘)’)。

2.9.2 使用别名(alias)

输入:SELECT Concat(RTrim(vend_name), ‘(’, vend_country, ‘)’) AS vend_title FROM vendors ORDER BY vend_name;

含义:表示拼接后,并创建一个新的计算字段名vend_title用来存储计算结果。

2.9.3 执行算术计算

输入:SELECT prod_id, quantity, item_price, quantity*item_price AS expanded_price FROM orderitems WHERE order_num = 2000;

2.10使用数据处理函数

SQL支持以下类型的函数:

(1) 处理字符串函数;

(2) 在数值数据上进行算术操作;

(3) 处理日期和时间值并从这些值中提取特定成分(例如,返回两个日期之差,检查日期有效性等)。

2.10.1 文本处理函数

输入:SELECT vend_name, Upper(vend_name) AS vend_name_upcase FROM vendors ORDER BY vend_name;

文本函数

Left/Right()

Length()

Locate()

Lower/Upper

LTrim/RTrim

Substring()

说明

返回串左/右的字符

串长度

串的子串

小写/大写

去掉左/右边的空格

返回字符的字符

2.10.2 日期和时间处理函数

在数据库中,日期和时间均采用相应的数据类型和特殊的格式存储,以便能快速和有效地排序或过滤,并且节省物理存储空间。

常用日期和时间的处理函数表

AddDate/AddTime()

增加一个日期/时间.

CurDate/CurTime()

返回当前日期/时间.

Date()

返回日期时间的日期部分.

DateDiff()

计算两个日期之差.

Date_Add()

高度灵活的日期运算函数.

Date_Sub()

从日期减去指定的时间间隔.

Date_Format()

返回一个格式化的日期或时间串.

Year/Month/Day()

返回一个日期的年/月/天数部分.

DayOfWeek()

对于一个日期,返回对应的星期几.

Now()

返回当前日期和时间.

Hour/Minute/Second

返回一个时间的小时/分钟/秒.

在MySQL中,无论是插入或更新表值,还是用WHERE子句进行过滤,日期必须为格式yyyy-mm-dd。

输入:SELECT cust_id, order_num FROM orders WHERE order_date = ‘2005-09-01’

注意:假如数据库的order_date字段值存储的时间除了日期还有时间外,则上述的检索会失败。因此,更保险的检索语句为:

输入:SELECT cust_id, order_num FROM orders WHERE Date(order_date) = ‘2005-09-01’;

输入: SELECT cust_id, order_num FROM orders WHERE Date(order_date) BETWEEN ‘2005-09-01’ AND ‘2005-09-30’;

输入:SELECT cust_id, order_num FROM orders WHERE Year(order_date) = 2005 AND Month(order_date) = 9;

2.10.3 数值处理函数

数值函数

Abs()

Cos()

Exp ()

Pi()

Rand()

Sqrt()

说明

绝对值

余弦

指数

圆周率

随机数

平方根

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inter_peng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值