MySQL-Select语句高级应用
1.1 SELECT高级应用
1.1.1 前期准备工作
本次测试使用的是world数据库,由mysql官方提供下载地址:
world文件导入方法,官方说明:
下载sqlyog 软件,用于之后的数据库管理用:
创建用户,能够让sqlyog登录数据库即可,注意权限控制。
- mysql> grant all on *.* to root@'%' identified by '';
- Query OK, 0 rows affected (0.00 sec)
授权用户后参看
- mysql> select user,host from mysql.user where user like 'root';
- +------+-----------+
- | user | host |
- +------+-----------+
- | root | % |
- | root | 10.0.0.1 |
- | root | 127.0.0.1 |
- | root | localhost |
- +------+-----------+
- 4 rows in set (0.00 sec)
1.1.2 select语法格式说明
- mysql> help select;
- Name: 'SELECT'
- Description:
- Syntax:
- SELECT
- [ALL | DISTINCT | DISTINCTROW ]
- [HIGH_PRIORITY]
- [STRAIGHT_JOIN]
- [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
- [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
- select_expr [, select_expr ...]
- [FROM table_references
- [PARTITION partition_list]
- [WHERE where_condition]
- [GROUP BY {col_name | expr | position}
- [ASC | DESC], ... [WITH ROLLUP]]
- [HAVING where_condition]
- [ORDER BY {col_name | expr | position}
- [ASC | DESC], ...]
- [LIMIT {[offset,] row_count | row_count OFFSET offset}]
- [PROCEDURE procedure_name(argument_list)]
- [INTO OUTFILE 'file_name'
- [CHARACTER SET charset_name]
- export_options
- | INTO DUMPFILE 'file_name'
- | INTO var_name [, var_name]]
- [FOR UPDATE | LOCK IN SHARE MODE]]
1.2 select中where子句使用
- SELECT *|{[DISTINCT] column|select_expr [alias], ...]}
- [FROM [database.]table]
- [WHERE conditions];
where 条件的说明:
WHERE条件又叫做过滤条件,它从FROM子句的中间结果中去掉所有条件conditions不为TRUE(而为FALSE或者NULL)的行。
WHERE子句跟在FROM子句后面,不能在WHERE子句中使用列别名。
【示例一】where字句的基本使用
- SELECT * FROM world.`city` WHERE CountryCode='CHN';
- or
- SELECT * FROM world.`city` WHERE CountryCode='chn';
sql说明:从数据库中查找是中国的城市。
注意:
WHERE中出现的字符串和日期字面量必须使用引号括起来
这里,字符串字面量写成大写或小写结果都一样,即不区分大小写进行查询。
这和ORACLE不同,ORACLE中WHERE条件中的字面量是区分大小写的
【示例二】where字句中的逻辑操作符
- SELECT * FROM world.`city`
- WHERE CountryCode='chn' AND district = 'shanxi';
sql说明: 从数据库中查找是中国的并且是山西的城市
逻辑操作符介绍:
逻辑操作符 |
说明 |
and |
逻辑与。只有当所有的子条件都为true时,and才返回true。否则返回false或null |
or |
逻辑或。只要有一个子条件为true,or就返回true。否则返回false或null |
not |
逻辑非。如果子条件为true,则返回false;如果子条件为false,则返回true |
xor |
逻辑异或。当一个子条件为true而另一个子条件为false时,其结果为true; 当两个条件都为true或都为false时,结果为false。否则,结果为null |
【示例三】:where字句中的范围比较
- SELECT * FROM world.`city`
- WHERE
- population BETWEEN 100000 AND 200000 ;
sql说明: 从数据库中查找人口数量在 100000-200000 之间的城市
【示例四】:where字句中的IN
- SELECT * FROM city
- WHERE countrycode IN ('CHN','JPN');
sql说明: 查询中国和日本的所有城市
【示例五】:where字句中的like
- USE world;
- SELECT * FROM city
- WHERE countrycode LIKE 'ch%';
sql说明: 从city表中找到国家是一ch开头的。
like的语法:
- like ‘匹配模式字符串’
实现模式匹配查询或者模糊查询:测试一个列值是否匹配给出的模式
在‘匹配模式字符串’中,可以有两个具有特殊含义的通配字符:
- %:表示0个或者任意多个字符
- _:只表示一个任意字符
1.3 select中ORDER BY子句
1.3.1 order by 子句的作用
ORDER BY子句用来排序行
如果SELECT语句中没有ORDER BY子句,那么结果集中行的顺序是不可预料的
语法:
- SELECT expr
- FROM table
- [WHERE condition(s)]
- [ORDER BY {column, expr, numeric_position} [Asc|DEsc]];
部分参数说明:
参数 |
参数说明 |
Asc |
执行升序排序。默认值 |
DEsc |
执行降序排序 |
使用方法 |
ORDER BY子句一般在SELECT语句的最后面 |
1.3.2 order by 示例
【示例一】Order by基本使用
- SELECT * FROM city
- ORDER BY population;
sql说明:将城市表按照人口数量升序排列
【示例二】多个排序条件
- SELECT * FROM city
- ORDER BY population,countrycode;
sql说明: 按照人口和国家进行排序
【示例三】以select字句列编号排序
- SELECT * FROM city
- ORDER BY 5;
sql说明:按照第5列进行排序
【示例四】desc实践
- SELECT * FROM city
- ORDER BY 5 DESC;
sql说明: 按照第列进行逆序排列
说明:NULL值的排序
在MySQL中,把NULL值当做一列值中的最小值对待。
因此,升序排序时,它出现在最前面。
1.4 LIMIT子句
特点说明:
MySQL特有的子句。
它是SELECT语句中的最后一个子句(在order by后面)。
它用来表示从结果集中选取最前面或最后面的几行。
偏移量offset的最小值为0。
语法:
- limit <获取的行数> [OFFSET <跳过的行数>]
- 或者
- limit [<跳过的行数>,] <获取的行数>
查询示例
- SELECT * FROM city
- ORDER BY 5 DEsc
- LIMIT 4;
sql说明: 获取排序后的前4行
注:先按照人口数量进行降序排序,然后使用limit从中挑出最前面的4行。
如果没有order by子句,返回的4行就是不可预料的。
1.5 多表连接查询
1.5.1 传统的连接写法(使用where)
- SELECT NAME,ci.countrycode ,cl.language ,ci.population
- FROM city ci , countrylanguage cl
- WHERE ci.`CountryCode`=cl.countrycode;
sql说明: city定别名为ci ,国家定别名问为cl,进行连表查询,NAME是共同的键值,使用where条件进行连接。
注意:一旦给表定义了别名,那么原始的表名就不能在出现在该语句的其它子句中了
1.5.2 NATURAL JOIN子句
自动到两张表中查找所有同名同类型的列拿来做连接列,进行相等连接
- SELECT NAME,countrycode ,LANGUAGE ,population
- FROM city NATURAL JOIN countrylanguage
- WHERE population > 1000000
- ORDER BY population;
sql说明:使用natural join 进行相等连接,两个表,条件为人口大于1000000的,进行升序排列。
注意:在select子句只能出现一个连接列
1.5.3 使用using子句
- SELECT NAME,countrycode ,LANGUAGE ,population
- FROM city JOIN countrylanguage
- USING(countrycode);
sql说明:使用join进行两表的来连接,using指定countrycode为关联列。
1.5.4 集合操作
- UNION [DISTINCT]
- UNION ALL
语法:
- SELECT ...
- UNION [ALL | DISTINCT]
- SELECT ...
- [UNION [ALL | DISTINCT]
- SELECT ...]
⛳ UNION用于把两个或者多个select查询的结果集合并成一个
⛳ 进行合并的两个查询,其SELECT列表必须在数量和对应列的数据类型上保持一致
⛳ 默认会去掉两个查询结果集中的重复行
⛳ 默认结果集不排序
⛳ 最终结果集的列名来自于第一个查询的SELECT列表
1.5.5 分组操作及分组处理
“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。
Having与Where的区别
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。
1.5.6 【select高级应用】数据库备份脚本拼接
- SELECT CONCAT("mysqldump ","-uroot ","-p123 ",table_schema," ",table_name,">/tmp/",table_schema,"_",table_name,".sql")
- FROM information_schema.tables
- WHERE table_schema='world'
- INTO OUTFILE '/tmp/world_bak.sh'
使用concat进行拼接数据备份脚本。
-- 显示信息,可直接进行运算
- SELECT CONCAT("132");
- SELECT CONCAT("132+123");
- SELECT CONCAT("132+123");
-- 查看引擎是innodb的表
- SELECT TABLE_NAME FROM TABLES WHERE ENGINE='innodb';
- SELECT CHARACTER_SET_NAME, COLLATION_NAME
- FROM INFORMATION_SCHEMA.COLLATIONS
- WHERE IS_DEFAULT = 'Yes';
-- 显示每个库下有多少表
- SELECT TABLE_SCHEMA ,COUNT(*)
- FROM information_schema.`TABLES`
- GROUP BY TABLE_SCHEMA;
1.5.7 子查询
子查询定义
在一个表表达中可以调用另一个表表达式,这个被调用的表表达式叫做子查询(subquery),我么也称作子选择(subselect)或内嵌选择(inner select)。子查询的结果传递给调用它的表表达式继续处理。
子查询(inner query)先执行,然后执行主查询(outer query)
子查询按对返回结果集的调用方法,可分为:where型子查询,from型子查询及exists型子查询。
使用子查询原则
一个子查询必须放在圆括号中。
将子查询放在比较条件的右边以增加可读性。
子查询不包含 ORDER BY 子句。对一个 SELECT 语句只能用一个 ORDER BY 子句,并且如果指定了它就必须放在主 SELECT 语句的最后。
在子查询中可以使用两种比较条件:单行运算符(>, =, >=, <, <>, <=) 和多行运算符(IN, ANY, ALL)。
不相关子查询
子查询中没有使用到外部查询的表中的任何列。先执行子查询,然后执行外部查询
相关子查询(correlated subquery)
子查询中使用到了外部查询的表中的任何列。先执行外部查询,然后执行子查询
以上两种类型之下又可以分为:
- 行子查询(row subquery):返回的结果集是 1 行 N 列
- 列子查询(column subquery):返回的结果集是 N 行 1列
- 表子查询(table subquery):返回的结果集是 N 行 N 列
- 标量子查询(scalar subquery):返回1行1列一个值
子查询示例
创建数据表
- CREATE TABLE PLAYERS
- (PLAYERNO INTEGER NOT NULL,
- NAME CHAR(15) NOT NULL,
- INITIALS CHAR(3) NOT NULL,
- BIRTH_DATE DATE ,
- SEX CHAR(1) NOT NULL,
- JOINED SMALLINT NOT NULL,
- STREET VARCHAR(30) NOT NULL,
- HOUSENO CHAR(4) ,
- POSTCODE CHAR(6) ,
- TOWN VARCHAR(30) NOT NULL,
- PHONENO CHAR(13) ,
- LEAGUENO CHAR(4) ,
- PRIMARY KEY (PLAYERNO));
- CREATE TABLE PENALTIES
- (PAYMENTNO INTEGER NOT NULL,
- PLAYERNO INTEGER NOT NULL,
- PAYMENT_DATE DATE NOT NULL,
- AMOUNT DECIMAL(7,2) NOT NULL,
- PRIMARY KEY (PAYMENTNO));
- INSERT INTO PLAYERS VALUES (2, 'Everett', 'R', '1948-09-01', 'M', 1975, 'Stoney Road','', '3575NH', 'Stratford', '070-237893', '');
- INSERT INTO PLAYERS VALUES (6, 'Parmenter', 'R', '1964-06-25', 'M', 1977, 'Haseltine Lane','', '1234KK', 'Stratford', '070-476537', '');
- INSERT INTO PLAYERS VALUES (7, 'Wise', 'GWS', '1963-05-11', 'M', 1981, 'Edgecombe Way','', '9758VB', 'Stratford', '070-347689', NULL);
- INSERT INTO PLAYERS VALUES (8, 'Newcastle', 'B', '1962-07-08', 'F', 1980, 'Station Road','', '6584WO', 'Inglewood', '070-458458', '');
- INSERT INTO PLAYERS VALUES (27, 'Collins', 'DD', '1964-12-28', 'F', 1983, 'Long Drive','', '8457DK', 'Eltham', '079-234857', '');
- INSERT INTO PLAYERS VALUES (28, 'Collins', 'C', '1963-06-22', 'F', 1983, 'Old Main Road','', '1294QK', 'Midhurst', '010-659599', NULL);
- INSERT INTO PLAYERS VALUES (39, 'Bishop', 'D', '1956-10-29', 'M', 1980, 'Eaton Square','', '9629CD', 'Stratford', '070-393435', NULL);
- INSERT INTO PLAYERS VALUES (44, 'Baker', 'E', '1963-01-09', 'M', 1980, 'Lewis Street','', '4444LJ', 'Inglewood', '070-368753', '');
- INSERT INTO PLAYERS VALUES (57, 'Brown', 'M', '1971-08-17', 'M', 1985, 'Edgecombe Way','', '4377CB', 'Stratford', '070-473458', '');
- INSERT INTO PLAYERS VALUES (83, 'Hope', 'PK', '1956-11-11', 'M', 1982, 'Magdalene Road','16A', '1812UP', 'Stratford', '070-353548', '');
- INSERT INTO PLAYERS VALUES (95, 'Miller', 'P', '1963-05-14', 'M', 1972, 'High Street','33A', '5746OP', 'Douglas', '070-867564', NULL);
- INSERT INTO PLAYERS VALUES (100, 'Parmenter', 'P', '1963-02-28', 'M', 1979, 'Haseltine Lane','', '6494SG', 'Stratford', '070-494593', '');
- INSERT INTO PLAYERS VALUES (104, 'Moorman', 'D', '1970-05-10', 'F', 1984, 'Stout Street','', '9437AO', 'Eltham', '079-987571', '');
- INSERT INTO PLAYERS VALUES (112, 'Bailey', 'IP', '1963-10-01', 'F', 1984, 'Vixen Road','', '6392LK', 'Plymouth', '010-548745', '');
- INSERT INTO PENALTIES VALUES (1, 6, '1980-12-08',100);
- INSERT INTO PENALTIES VALUES (2, 44, '1981-05-05', 75);
- INSERT INTO PENALTIES VALUES (3, 27, '1983-09-10',100);
- INSERT INTO PENALTIES VALUES (4,104, '1984-12-08', 50);
- INSERT INTO PENALTIES VALUES (5, 44, '1980-12-08', 25);
- INSERT INTO PENALTIES VALUES (6, 8, '1980-12-08', 25);
- INSERT INTO PENALTIES VALUES (7, 44, '1982-12-30', 30);
- INSERT INTO PENALTIES VALUES (8, 27, '1984-11-12', 75);
创建数据库语句
例一、获取和100号球员性别相同并且居住在同一城市的球员号码。
- select playerno
- from players
- where (sex, town) = (
- select sex, town
- from players
- where playerno = 100);
例二、获取和27号球员出生在同一年的球员的号码
- select playerno
- from players
- where year(birth_date) =
- (select year(birth_date)
- from players
- where playerno = 27)
- and playerno <> 27;
例三、获取那些至少支付了一次罚款的球员的名字和首字母。
- select name, initials
- from players
- where exists
- (select * from penalties
- where playerno = players.playerno);
例四、获取那些从来没有罚款的球员的名字和首字母。
- select name, initials
- from players
- where not exists
- (select * from penalties
- where playerno = players.playerno);
1.6 Informatica_schema获取元数据
1.6.1 元数据访问方法
查询 INFORMATION_SCHEMA 数据库表。其中包含 MySQL 数据库服务器所管理的所有对象的相关数据
使用 SHOW 语句。用于获取数据库和表信息的 MySQL 专用语句
使用 DESCRIBE(或 DESC)语句。用于检查表结构和列属性的快捷方式
使用 mysqlshow 客户端程序。SHOW 语法的命令行程序
INFORMATION_SCHEMA 数据库优点介绍
充当数据库元数据的中央系统信息库,模式和模式对象,服务器统计信息(状态变量、设置、连接) 。
采用表格式以实现灵活访问,使用任意 SELECT 语句。是“虚拟数据库”,表并非“真实”表(基表),而是“系统视图”,根据当前用户的特权动态填充表。
列出 INFORMATION_SCHEMA 数据库中所有的表:
- mysql> USE information_schema;
- Database changed
- mysql> SHOW TABLES;
- +---------------------------------------+
- | Tables_in_information_schema |
- +---------------------------------------+
- | CHARACTER_SETS |
- | COLLATIONS |
- | COLLATION_CHARACTER_SET_APPLICABILITY |
- | COLUMNS |
- | COLUMN_PRIVILEGES |
1.6.2 对 INFORMATION_SCHEMA 使用 SELECT
示例一:
查找引擎是innodb的表。
- SELECT TABLE_NAME, ENGINE
- FROM INFORMATION_SCHEMA.TABLES
- WHERE ENGINE= 'innodb';
示例二:
- SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
- FROM INFORMATION_SCHEMA.COLUMNS
- WHERE DATA_TYPE = 'set';
sql说明:查找数据类型是set的表
示例三:
- SELECT CHARACTER_SET_NAME, COLLATION_NAME,IS_DEFAULT
- FROM INFORMATION_SCHEMA.COLLATIONS
- WHERE IS_DEFAULT = 'Yes';
sql说明:查看找默认为yes的表
示例四:
- SELECT TABLE_SCHEMA, COUNT(*)
- FROM INFORMATION_SCHEMA.TABLES
- GROUP BY TABLE_SCHEMA;
sql说明:查看每个数据库下表的个数
使用 INFORMATION_SCHEMA 表获取有关创建 shell 命令的信息。
- SELECT CONCAT("mysqldump -uroot -p ",
- TABLE_SCHEMA," ", TABLE_NAME, " >> ",
- TABLE_SCHEMA,".bak.sql")
- FROM TABLES WHERE TABLE_NAME LIKE 'Country%'
1.6.3 使用 mysql 命令创建 SQL 语句。
- mysql -uroot -p123 --silent --skip-column-names -e "SELECT CONCAT('CREATE TABLE ', TABLE_SCHEMA, '.',TABLE_NAME, '_backup LIKE ', TABLE_SCHEMA, '.',TABLE_NAME, ';')
- FROM INFORMATION_SCHEMA.TABLES
- WHERE TABLE_SCHEMA = 'world_innodb';"
1.6.4 MySQL中的show语句
- SOHW databases:列出所有数据库
- SHOW TABLES:列出默认数据库中的表
- SHOW TABLES FROM <database_name>:列出指定数据库中的表
- SHOW COLUMNS FROM <table_name>:显示表的列结构
- SHOW INDEX FROM <table_name>:显示表中有关索引和索引列的信息
- SHOW CHARACTER SET:显示可用的字符集及其默认整理
- SHOW COLLATION:显示每个字符集的整理
- SHOW STATUS:列出当前数据库状态
- SHOW VARIABLES:列出数据库中的参数定义值
- SHOW PROCESSLIST 查看当前的连接数量
1.6.5 DESCRIBE 语句
DESCRIBE 语句 等效于 SHOW COLUMNS
一般语法:
- mysql> DESCRIBE <table_name>;
显示 INFORMATION_SCHEMA 表信息
- mysql> DESCRIBE INFORMATION_SCHEMA.CHARACTER_SETS;
- +----------------------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +----------------------+-------------+------+-----+---------+-------+
- | CHARACTER_SET_NAME | varchar(32) | NO | | | |
- | DEFAULT_COLLATE_NAME | varchar(32) | NO | | | |
- | DESCRIPTION | varchar(60) | NO | | | |
- | MAXLEN | bigint(3) | NO | | 0 | |
- +----------------------+-------------+------+-----+---------+-------+
- 4 rows in set (0.00 sec)
有关数据库和表的结构的信息与 SHOW 语句相似
一般语法:
- shell> mysqlshow [options] [db_name [table_name[column_name]]]
显示所有数据库或特定数据库、表和/或列的相关信息:
- [root@db02 ~]# mysqlshow -uroot -p123
- Warning: Using a password on the command line interface can be insecure.
- +--------------------+
- | Databases |
- +--------------------+
- | information_schema |
- | clsn |
- | haha |
- | mysql |
- | oldboy |
- | performance_schema |
- | world |
- +--------------------+
查看数据库下的表
- [root@db02 ~]# mysqlshow -uroot -p123 world
- Warning: Using a password on the command line interface can be insecure.
- Database: world
- +-----------------+
- | Tables |
- +-----------------+
- | PENALTIES |
- | PLAYERS |
- | city |
- | country |
- | countrylanguage |
- +-----------------+
查看数据库下表记录
- [root@db02 ~]# mysqlshow -uroot -p123 world city
- Warning: Using a password on the command line interface can be insecure.
- Database: world Table: city
- +-------------+----------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
- | Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
- +-------------+----------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
- | ID | int(11) | | NO | PRI | | auto_increment | select,insert,update,references | |
- | Name | char(35) | latin1_swedish_ci | NO | | | | select,insert,update,references | |
- | CountryCode | char(3) | latin1_swedish_ci | NO | MUL | | | select,insert,update,references | |
- | District | char(20) | latin1_swedish_ci | NO | | | | select,insert,update,references | |
- | Population | int(11) | | NO | | 0 | | select,insert,update,references | |
- +-------------+----------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
查看记录信息
- [root@db02 ~]# mysqlshow -uroot -p123 world city CountryCode
- Warning: Using a password on the command line interface can be insecure.
- Database: world Table: city Wildcard: CountryCode
- +-------------+---------+-------------------+------+-----+---------+-------+---------------------------------+---------+
- | Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
- +-------------+---------+-------------------+------+-----+---------+-------+---------------------------------+---------+
- | CountryCode | char(3) | latin1_swedish_ci | NO | MUL | | | select,insert,update,references | |
- +-------------+---------+-------------------+------+-----+---------+-------+---------------------------------+---------+
查看数据库类似like。
- [root@db02 ~]# mysqlshow -uroot -p123 "w%"
- Warning: Using a password on the command line interface can be insecure.
- Wildcard: w%
- +-----------+
- | Databases |
- +-----------+
- | world |
- +-----------+
1.7 参考文献
- https://dev.mysql.com/doc/refman/5.6/en/select.html SELECT语法官方说明
MySQL-Select语句高级应用的更多相关文章
- mysql SELECT语句 语法
mysql SELECT语句 语法,苏州大理石方箱 作用:用于从表中选取数据.结果被存储在一个结果表中(称为结果集). 语法:SELECT 列名称 FROM 表名称 以及 SELECT * FROM ...
- MySQL SELECT语句
说明:MySQL的offset第一行是0 位置指的是在SELECT语句中第几个出现的字段,如:1,则代表用第一个出现的字段来分组. SELECT语句: SELECT select_expr1 [,s ...
- Mysql 基本语句 + 高级查询
MySQL执行SQL脚本文件的命令: 从cmd进入mysql命令行模式: mysql> -uroot –prootpassword –Ddatabasename 如果是我本地的数据库,就相应修改 ...
- MySQL SELECT 语句
SELECT语句: products表例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1eWluZ18xMDAx/font/5a6L5L2T ...
- 关于Mysql select语句中拼接字符串的记录
在mysql的SELECT语句中拼接两列(或多列)的字符串显示: mysql> select concat(dname,loc) from dept; 以上语句便把dept表的dname,loc ...
- mysql select语句解析
select语句用于从一个或多个数据表选出特定行.特定列的交集 最简单的select语句的语法格式如下: select column1,column2 ........ (列) from 数 ...
- mysql select语句执行顺序
SELECT语句定义 一个完成的SELECT语句包含可选的几个子句. SELECT语句的定义如下: <SELECT clause> [<FROM clause&g ...
- mysql select语句查询流程是怎么样的
select查询流程是怎么样的 mysql select查询的数据是查询内存里面,如果没有查询的数据没有在内存,就需要mysql的innodb引擎读取磁盘,将数据加载的内存后在读取.这就体现了,mys ...
- MySQL SELECT语句中只能输出1000行数据的原因
同事反映,客户的一套MySQL生产库,执行SELECT.. INTO OUTFILE语句只能导出1000行 最初以为是系统参数被重新设置了,建议他更改系统参数 mysql> set global ...
- MySQL Select语句的执行顺序
源文章:How is a query executed in MySQL? 当执行SQL的Select查询语句时,SQL指令的执行顺序如下: FROM 子句 WHERE 子句 GROUP BY 子句 ...
随机推荐
- CUDA C Best Practices Guide 在线教程学习笔记 Part 1
0. APOD过程 ● 评估.分析代码运行时间的组成,对瓶颈进行并行化设计.了解需求和约束条件,确定应用程序的加速性能改善的上限. ● 并行化.根据原来的代码,采用一些手段进行并行化,例如使用现有库, ...
- 一个JS效果竟然要研究一天,我是不是不适合做前端?
前言 今天这篇文章的标题,显然是要搞事情.一个JS交互效果,居然花费了一天的宝贵时间才研究出来,我是不是不太适合做前端? 别急,搬好小板凳,正文从这开始- 本来今天下班回来感觉有点累,想着今天就别学了 ...
- Java面试题-2
程序员面试之九阴真经 谈谈final, finally, finalize的区别: final:::修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此 ...
- 数据结构 单链表元素定位 PTA
由于这个很简单,他也貌似没要判断溢出,取巧突破 #include<stdio.h> #include<malloc.h> #include<stdlib.h> // ...
- vue.js项目安装
Vue.js 安装 NPM 方法安装vue.js项目 npm 版本需要大于 3.0,如果低于此版本需要升级它: # 查看版本 $ npm -v 2.3.0 #升级 npm npm install np ...
- 初识React-Redux之粗暴理解入门
权当暂记 日后再行补充完善,若有阅读者,请翻到下文黄色标题'从这里开始'起阅读. Rudex在我看来最本质做的事情就是将所有的State属性统一存储(一个属性就是一个注册到store的Reducer) ...
- 基于IWICImage的截图代码
截图方式和以前一样, 用GetDC, 保存为JPG的方式改用IWICImage接口, 在我机器上 1920*1080 大概花费70毫秒左右, 比用TJPEGImage快了一倍多(TJPEGImage需 ...
- python基础-------模块与包(四)
configparser模块与 subprcess 利用configparser模块配置一个类似于 windows.ini格式的文件可以包含一个或多个节(section),每个节可以有多个参数(键=值 ...
- WebService的基本介绍
一.WebService的基本介绍 1.WebService是什么? WebService ---> Web Service web的服务 2.思考问题: WebService是we ...
- Win32API起始处的mov edi, edi与用户空间InlineHook
在x86平台上,无论是在调试器中跟到系统DLL中时,还是反汇编某个系统DLL时,经常会发现很多API的第一条汇编指令都是mov edi, edi.根据经验来讲,C函数的汇编形式,应该是首先push e ...