Mysql 基本语句 + 高级查询

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

从cmd进入mysql命令行模式:

mysql> -uroot –prootpassword –Ddatabasename

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

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

执行SQL脚本文件:

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

如下图所示:

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()


说明


绝对值


余弦


指数


圆周率


随机数


平方根

时间: 2024-10-12 21:41:04

Mysql 基本语句 + 高级查询的相关文章

mysql中的高级查询

mysql中的高级查询 以前学习的查询语法:   select 字段名 from 表名 where 条件   其实,查询的语法变化很多: 1. select 可以查询表达式, 表达式就是 运算符+操作数. 比如 1 + 1   2 * 3  2-1+5*9   Math.random() * 1; 可以看出,数据库中,字符串+字符串不是拼接,而是计算加法, 试一试,拿着'1' + 'a123'. 扩充,如果非要让两个字符串是拼接,咋办? 2. 表的别名     其实列也可以起别名:   3. d

2017-03-10 T-sql 语句 高级查询

T-SQL语句: 创建数据库: 1,点击新建查询,在弹出的页面上进行代码编写.点击可用数据库,编写前确定当前操作的页面是自己想要进行操作的界面. 2,数据库创建语句 Create datebase  数据库名(数据库名不能用汉字,不能以数字符号开头)写完后选中当前语句选择 执行(想要执行某句代码,就单独选中那句代码,). 数据库注释方式 /*要注释的内容*/  --要注释的内容 删除库:drop datebase 数据库名 创建表: 1,在可用数据库那找到自己要进行添加/修改表操作的数据库,也可

2017-3-10 SQL server T-sql语句 高级查询

条件修改: update 表名 set 列名 = 值 where 列名 = 值条件删除: delete from 表名 where 列名 = 值高级查询条件查询 查列 *改为要查看的列,多列逗号隔开 筛选条件 where 列名 = >= <= > < 值 and or模糊查询 select * from 表名 where 列名 like '%值%' %通配符排序查询 select * from 表名 where order by 列名 asc / desc去重查询 select d

web day15 数据库概述,MySQL,SQL语句,数据查询语法DQL

数据库管理系统(DBMS)的概述 1. 什么是DBMS:数据的仓库 > 方便查询 > 可存储的数据量大 > 保证数据的完整.一致 > 安全可靠 2. DBMS的发展:今天主流数据库为关系型数据库管理系统(RDBMS 使用表格存储数据) 3. 常见DBMS:Orcale.MySQL.SQL Server.DB2.Sybase 4. DBMS = 管理程序 + 多个数据库(DB) 5. DB = 多个table(不只是table,但这里先不介绍其他组成部分) 6. table的结构(即

数据库-T-SQL 语句-高级查询

1.连接查询(对列的扩展,把两张表连接到一起显示)(数据量大时少用此类查询,速度慢,会形成笛卡尔积) 第一种形式 select * from Info,Nation  #会笛卡尔积 select * from Info,Nation where Info.Nation = Nation.Code #加上筛选条件 select Info.Code,Info.Name,Sex,Nation.Name,Birthday from Info,Nation where Info.Nation = Nati

[MySQL]子语句的查询技巧

一.统计group by语句的行数 group by语句中,如果包含字段统计函数(诸如:count(),sum()...),这种情况下统计函数只会作用于group by的字段,因此想拿到最终结果的行数,只能靠返回结果后通过程序去遍历统计行数,这里有一个问题,如果被查询的结果过于庞大,这将耗费大量的系统资源,运用子查询可以解决这个问题 SELECT count(a.id) AS count FROM (SELECT id, sum(credit) AS credits FROM log_colle

mysql的一些高级查询

1,查出学生详情表性别为男,并同时年龄大于18的 2,根据上述的结果,查出学生表对应的姓名,年龄,性别,address 3,查出学生的(姓名,年龄,性别,所属学院) 还可以添加注释 原文地址:https://www.cnblogs.com/pywjh/p/9729679.html

第三章 MySQL高级查询(一)

第三章 MySQL高级查询(一) 一.SQL语言的四个分类 1.       DML(Data Manipulation Language)(数据操作语言):用来插入,修改和删除表中的数据,如INSERT,UPDATE,DELECT. 2.       DDL(Data Definition Language)(数据定义语言):创建或删除数据库对象操作,有CREATE,DROP,ALTER三个语法组成. 3.       DQL (STructured Query Language)(数据查询语

第四章 MySQL高级查询(二)

第四章 MySQL高级查询(二) 一.EXISTS子查询 在执行create 或drop语句之前,可以使用exists语句判断该数据库对像是否存在,返回值是true或false.除此之外,exists也可以作为where语句的子查询,语法如下: SELECT --FROM 表名 WHERE  EXISTS(子查询): EXISTS关键字后面的参数是一个任意的子查询,如果该子查询没有返回行,则EXISTS子查询的结果为true,此时再执行外层查询语句.如果EXISTS子查询结果为false,此时外