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() |
说明 |
绝对值 |
余弦 |
指数 |
圆周率 |
随机数 |
平方根 |
Mysql 基本语句 + 高级查询的更多相关文章
- 2017-03-10 T-sql 语句 高级查询
T-SQL语句: 创建数据库: 1,点击新建查询,在弹出的页面上进行代码编写.点击可用数据库,编写前确定当前操作的页面是自己想要进行操作的界面. 2,数据库创建语句 Create datebase ...
- 10月17日下午MySQl数据库CRUD高级查询
高级查询:1.连接查询 #适用于有外键关系的 没有任何关系没法用select * from Info,Nation #同时查询这俩表并把两表每个数据相互组合,形成笛卡尔积 select * from ...
- mysql中的高级查询语句
此随笔用到的数据全是来自 关于mysql中表关系的一些理解(一对一,一对多,多对多) 提及的 学院表,学生表,学生详情表,选课表,课程表 单标查询:(查看学生表的学生名单) select st ...
- mysql sql语句执行时间查询
第一种:show profiles 之类的语句来查看 1.查一下profile是不是打开了,默认是不打开的. mysql> show profiles; Empty set (0.02 sec) ...
- mysql中的高级查询
以前学习的查询语法: select 字段名 from 表名 where 条件 其实,查询的语法变化很多: 1. select 可以查询表达式, 表达式就是 运算符+操作数. 比如 1 + 1 2 * ...
- [MySQL]子语句的查询技巧
一.统计group by语句的行数 group by语句中,如果包含字段统计函数(诸如:count(),sum()...),这种情况下统计函数只会作用于group by的字段,因此想拿到最终结果的行数 ...
- MySql数据and高级查询
1.CREATE TABLE grade(stuID INT AUTO_INCREMENT PRIMARY KEY NOT NULL,stuName VARCHAR(32),stuAge INT ) ...
- MySQL基础语句(查询)
students表 id class_id name gender score 1 1 小明 M 90 2 1 小红 F 95 3 1 小军 M 88 4 1 小米 F 73 5 2 小白 F 81 ...
- mysql sql语句高级写法
将user表的内容,插入到team_member表INSERT INTO team_member (Nike,HeadImageUrl) SELECT Nike,HeadImageUrl FROM u ...
随机推荐
- Effective C++ .14 智能指针的拷贝与deleter函数
#include <iostream> #include <cstdlib> #include <memory> using namespace std; clas ...
- 1-3 Sass 语法、编译、调试
Sass 语法格式 这里说的 Sass 语法是 Sass 的最初语法格式,他是通过 tab 键控制缩进的一种语法规则,而且这种缩进要求非常严格.另外其不带有任何的分号和大括号.常常把这种格式称为 Sa ...
- Apache服务器运维笔记(2)----使用<IfDefine>容器实现不同的配置
还有一种方法用来实现不同配置的Apache服务器启动,就是在一个配置文件中使用<IfDefine name> ... </IfDefine> 容器来定义,在<IfDefi ...
- UMTSkeeper: keep your UMTS/GPRS/GSM connection alive automatically
UMTSkeeper: keep your UMTS/GPRS/GSM connection alive automatically by Elias from Mintaka This page i ...
- Web.py报错:OSError: No socket could be created -- (('0.0.0.0', 8080):
web.py报错 Python代码: import web urls = ( '/(.*)', 'hello' ) app = web.application(urls, globals()) cla ...
- Android--Otto事件总线 -- 组件之间通讯框架使用 --模式解析
前言:Otto事件总线 -- 组件之间通讯框架 对于之前的情况activity之间或者fragment之间等跳转传值一般都是用bundle.intent等,从activityA --- activit ...
- Anaconda 执行命令报ssl错误
- androidUI异步消息
private Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { switch ...
- mac 修改MAC代码
1.生成一个mac地址: openssl rand -hex | sed 's/\(..\)/\1:/g; s/.$//' 2.关闭无线 sudo /System/Library/PrivateFra ...
- PHP通过header和meta实现页面编码声明
一.使用方式: <META http-equiv=”content-type” content=”text/html; charset=xxx”> header(“content-type ...