Linux命令:MySQL系列之五--SELECT单表查询、多表查询升级及删除,插入

SELECT:查询

SELECT select-list FROM tb WHERE qualification  根据标准qualification查找对应的行

查询语句类型:  qualification条件  field领域  distinct独特的

简单查询:

多表查询:

子查询:

SELECT * FROM tb_name: 查询tb_name表的所有信息

SELECT field1,field2 FROM tb_name: 投影显示所设定的领域条目(field),一个field就是一列

SELECT [DISTINCT] * FROM tb_name WHERE qualification;从tb_name表中选择符合条件的独特的不重复的条目。

FROM子句:表、多个表、其他SELECT语句

WHERE子句:布尔关系表达式  =、>、<、<=、>= 表示大于等于,小于等于,大于,小于,等于。

逻辑关系:AND(与&&)   OR(或||)    NOT(非!)    XOR(异或)

mysql>SELECT Name,Age,Gender FROM students WHERE NOT Age>20 AND NOT Gender=‘M‘; #选择查询年龄不大于20,且性别不是男的数据,也可以写成下面的条件

mysql> SELECT Name,Age,Gender FROM students WHERE NOT ( Age>20 OR Gender=‘M‘ );

特殊关系:BETWEEN ... AND ...  在两者之间之间。

LIKE ‘‘

%:任意长度任意字符

_:任意单个字符

Usage: SELECT Name FROM students WHERE Name LIKE ‘Y%‘; 查找Name字段以Y开头的数据。

SELECT Name FROM students WHERE Name LIKE ‘%ing%‘;查找Name字段中必须包括ing的字段

SELECT Name FROM students WHERE Name LIKE ‘Y___‘;查找Name字段中Y后面至少跟着3个字符的

REGEXP或者RLIKE 支持正则表达式:

Usage:SELECT Name,Age FROM students WHERE Name RLIKE ‘^[XY].*$‘;

查找Name字段行首为X或Y的数据

 IN离散条件的查找:

Usage: SELECT Name,Age FROM students WHERE Age IN (18,20,25);

查找Age字段为18或20或25岁的相关数据

有空值的时候,比较:IS NULL ,NOT NULL  ORDER BY ... 以...某字段升序排列

         ORDER BY ... 以...某字段降序排列

Usage: SELECT Name,Age FROM students WHERE Name IS NULL;

查找Name字段为空值的数据

SELECT Name,Age FROM students WHERE Name IS NULL;

查找Name字段不为空值的数据

按照升序或者降序排列出查找的数据:ORDER BY field_name {ASC|DESC}; 

   ASC升序排列(默认值)DESC降序排列

SELECT Name,Age FROM students WHERE CID IS NOT NULL ORDER BY Name;

查找CID字段不为空的数据并按字段Name的升序排列;

SELECT Name,Age FROM students WHERE CID IS NOT NULL ORDER BY Name DESC;

查找CID字段不为空的数据并按字段Name的降序排列;

字段别名:AS

Usage: SELECT Name AS Student_Name FROM student;

mysql> SELECT Name FROM student;

+------------+

| Name       |

+------------+

| Li Lianjie |

| Cheng Long |

| Yang Guo   |

| Guo Jing   |

+------------+

4 rows in set (0.00 sec)

mysql> SELECT Name AS Student_Name FROM student;

+--------------+

| Student_Name | AS别名为Student_Name

+--------------+

| Li Lianjie   |

| Cheng Long   |

| Yang Guo     |

| Guo Jing     |

+--------------+

4 rows in set (0.00 sec)

LIMIT子句:LIMIT [offset,]Count  offset偏移多少,Count显示多少

Usage: SELECT Name AS Student_Name FROM student LIMIT 3;

查找显示Name别名为Student_Name,只显示前3个数据

Usage: SELECT Name AS Student_Name FROM student LIMIT 2,2;

查找显示Name别名为Student_Name,偏移掉前2个数据不显示,显示第2个数据后的2个数据

mysql> SELECT Name AS Student_Name FROM student LIMIT 3;

+--------------+

| Student_Name |

+--------------+

| Li Lianjie   |

| Cheng Long   |

| Yang Guo     |

+--------------+

3 rows in set (0.00 sec)

mysql> SELECT Name AS Student_Name FROM student LIMIT 2,2;

+--------------+

| Student_Name |

+--------------+

| Yang Guo     |

| Guo Jing     |

+--------------+

2 rows in set (0.00 sec)

聚合运算:SUM()求和,MIN()最小值,MAX()最大值,AVG()平均值,COUNT()个数;

新建立一张表:

mysql> CREATE TABLE class(ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,Name CHAR(20) NOT NULL UNSIGNED, Age TINYINT NOT NULL);

mysql> INSERT INTO class (Name,Age) VALUES (‘Yang Guo‘,22),(‘Guo Jing‘,46),(‘Xiao Longnv‘,18),(‘Huang Rong‘,40);

mysql> DESC class;

+-------+------------+------+-----+---------+----------------+

| Field | Type       | Null | Key | Default | Extra          |

+-------+------------+------+-----+---------+----------------+

| ID    | int(11)    | NO   | PRI | NULL    | auto_increment |

| Name  | char(20)   | NO   |     | NULL    |                |

| Age   | tinyint(4) | NO   |     | NULL    |                |

+-------+------------+------+-----+---------+----------------+

3 rows in set (0.00 sec)

mysql> SELECT * FROM class;

+----+-------------+-----+

| ID | Name        | Age |

+----+-------------+-----+

|  1 | Yang Guo    |  22 |

|  2 | Guo Jing    |  46 |

|  3 | Xiao Longnv |  18 |

|  4 | Huang Rong  |  40 |

+----+-------------+-----+

4 rows in set (0.00 sec)

mysql> SELECT SUM(Age) FROM class;

+----------+

| SUM(Age) |

+----------+

|      126 |

+----------+

1 row in set (0.02 sec)

mysql> SELECT MAX(Age) FROM class;

+----------+

| MAX(Age) |

+----------+

|       46 |

+----------+

1 row in set (0.00 sec)

mysql> SELECT MIN(Age) FROM class;

+----------+

| MIN(Age) |

+----------+

|       18 |

+----------+

1 row in set (0.00 sec)

mysql> SELECT AVG(Age) FROM class;

+----------+

| AVG(Age) |

+----------+

|  31.5000 |

+----------+

1 row in set (0.00 sec)

分组:GROUP BY ... HAVING qualification   根据...分组 并且满足条件qualification

 对于GROUP BY的条件选择需用HAVING作为条件筛选,而不是用WHERE

mysql> SELECT Age,Gender FROM class1 GROUP BY Gender; #以性别分组显示

+-----+--------+

| Age | Gender |

+-----+--------+

|  18 | F      |

|  22 | M      |

+-----+--------+

2 rows in set (0.00 sec)

mysql> SELECT AVG(Age),Gender FROM class1 GROUP BY Gender; #求男同学和女同学的平均年龄。

+----------+--------+

| AVG(Age) | Gender |

+----------+--------+

|  29.0000 | F      |

|  34.0000 | M      |

+----------+--------+

2 rows in set (0.00 sec)

mysql> SELECT Name,AVG(Age) FROM class1 GROUP BY Gender HAVING Name RLIKE ‘Y.*‘;

#求以Gender分组的年龄平局值,且只显示以Y开头的Name字段的平均值和姓名

+----------+----------+

| Name     | AVG(Age) |

+----------+----------+

| Yang Guo |  34.0000 |

+----------+----------+

1 row in set (0.00 sec)


时间: 2024-08-02 11:04:57

Linux命令:MySQL系列之五--SELECT单表查询、多表查询升级及删除,插入的相关文章

Mysql数据库理论基础之五--SELECT单多表查询、子查询、别名

一.简介 由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点: 1.是一种数据库管理系统 2.是一种关联数据库管理系统 3.是一种开放源码软件,且有大量可用的共享MySQL软件 4.MySQL数据库服务器具有快速.可靠和易于使用的特点 5.MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中 InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建.这样,表的大小就能超过单独文件的最大容量.表空间可包括原始磁盘分区,从而使得很大的表成为可能

MySQL 备份脚本(单库/分库分表)

目录 MySQL数据库分库备份 MySQL数据库分库分表备份 MySQL数据库分库备份 数据库密码保存在/etc/my.cnf文件中,所以在执行与mysql相关的命令不需要输入密码 分库备份思路: mysqldump db1 >db1.sql.gz mysqldump db2 >db2.sql.gz 拿到库名 mysql -e 'show databases' |sed '1d' |grep -v "_schema" 1.注释版 #!/bin/bash # author:

MySQL系列:innodb源码分析之表空间管理

innodb在实现表空间(table space)基于文件IO之上构建的一层逻辑存储空间管理,table space采用逻辑分层的结构:space.segment inode.extent和page.在实现层的逻辑使用了磁盘链表这种结构来管理逻辑关系.我们先来介绍磁盘链表. 1.磁盘链表 磁盘链表的实现fut0lst.*文件当中, innodb为了管理表空间和索引模块,定义了一个基于磁盘的链表,主要是用来保存磁盘数据结构之间的关系.这个链表不是基于内存指针的,而是基于page no和boffse

Linux服务器部署系列之五—Webmin篇

对于很多习惯使用windows的用户,在刚接触Linux的时候,要使用命令行配置Linux服务器可能会感觉难以适应.今天我们来讲解一下,Linux下的图形配置工具—Webmin,通过这款工具,用户可以很方便的使用web界面对Linux服务器进行配置.下面我们就来具体看看这款工具的部署: 1. 首先,我们需要安装好软件,安装步骤很简单,只需要四部就可以完成. Webmin需要以下软件的支持: Perl-5.8.8-18.el5  (一般系统自带) Openssl-0.9.8k.tar.tar  (

linux命令学习系列-用户管理2

先复习一下上节内容: 1.       用户和用户组的基本介绍,UID,GID,用户类型(普通用户,系统用户,根用户) 2.       用户和组常用命令id,groups,who命令,加用户名参数和不加用户名参数的区别 3.       用户添加命令useradd,执行命令后系统进行了哪些操作,如何通过参数自定义添加用户信息 4.       同时还给大家留了一个小作业,不知道大家完成了没有呢,作业的命令是 useradd –u 503 –g users –d /home/users user

linux命令学习系列10-权限相关chown,chmod,chgrp命令的使用

上节内容复习: 1. 进入目录:cd命令 2. 创建目录:mkdir命令 3. 删除目录:rmdir命令 4. 文件和目录复制:cp 作业:创建目录test1,test2,在test1中创建test1.txt文件,然后把test1.txt文件复制到test2文件夹下面 mkdir test1 mkdir test2 cd test1 touch test1.txt cp test1.txt /test2 本节内容: 1. 文件/目录详情信息 用ll命令查看文件/目录详情时,可以看到类似下面的信息

linux命令学习系列12-locate,whereis,which命令

先复习一下上节内容: 1. 默认权限和umask 2. 查看文件类型file命令 3. 查找文件find命令 作业:在/tmp目录下创建test.txt文件,查看文件的默认权限,用find命令找出刚才创建的文件,用file命令查看刚才创建的文件类型 touch /tmp/test.txt find / -name test.txt file /tmp/test.txt 本节来说一下另外几个查找的命令: 1. locate 命令 locate命令与find命令不同,需要依赖于一个数据库文件,即lo

linux命令学习系列11-umask,file,find

上节内容复习: 1. 文件/目录详情 2. 修改权限命令:chmod命令 3. 修改文件所有者:chown命令 4. 修改文件所有组:chgrp命令 作业:创建文件test.txt,修改文件权限为所有者有读写执行的权限,所有组有读写的权限,其它人有读取的权限,改变此文件的所有者为user1 touch test.txt chmod u=rwx,g=rw,o=r test.txt chown user1 test.txt 1. 默认权限和Umask 通过查看我们自己创建的文件可以发现权限是:644

linux命令学习系列13-gzip,tar命令

上节内容复习: 1. locate命令 2. whereis,which命令 作业:创建文件myfile.txt,用locate进行查找:分别用which 和whereis 查找cd命令 touch myfile.txt locate myfile.txt updatedb locate myfile.txt whereis cd which cd 1. gzip/gunzip gzip用于就地压缩文件,使用比较简单,比如我们要压缩/var/log下的messages文件,可以直接用gzip m