当前位置:Gxlcms > 数据库问题 > 《MySQL 必知必会》读书总结

《MySQL 必知必会》读书总结

时间:2021-07-01 10:21:17 帮助过:4人阅读

MySQL 必知必会》 的读书总结。也是自己整理的常用操作的参考手册。

? ?

使用 MySQL

  • 连接到 MySQL

shell>mysql -u root -p

Enter password:******

  • 显示数据库

mysql>SHOW DATABASES;

  • 选择数据库

mysql>USE mytest;

  • 显示数据库中的表

mysql>SHOW TABLES;

  • 显示表列

mysql>SHOW COLUMNS FROM tmall_user;

mysql>DESCRIBE tmall_user;

第二种方法与第一种方法效果相同

  • SHOW 的其他用法

mysql>SHOW STATUS;

显示服务器的状态信息

mysql>SHOW CREATE DATABASE mytest;

显示创建数据库的语句

mysql>SHOW CREATE TABLE tmall_user;

显示创建表的语句

mysql>SHOW GRANTS;

显示授权用户的安全权限

mysql>SHOW ERRORS;

显示服务器错误

mysql>SHOW WARNINGS;

显示服务器警告信息

? ?

基本查询(SELECT 语句)

  • 查询某列

mysql>SELECT username FROM tmall_user;

  • 查询多列

mysql>SELECT username, password, time FROM tmall_user;

  • 查询所有列

mysql>SELECT * FROM tmall_user;

  • 查询不同行

mysql>SELECT DISTINCT password FROM tmall_user;

注:DISTINCT 关键字应用于所有列。

  • 限制结果

mysql>SELECT username FROM tmall_user LIMIT 5

返回5

mysql>SELECT username FROM tmall_user LIMIT 5,5

返回从第5行开始的5

注:查询结果的第一行为行0,因此,LIMIT 1,1 将检索出第二行

新语法:LIMIT 4 OFFSET 3 从行3开始取4行,就像 LIMIT 3,4 一样

  • 使用完全限定的列名、表名

mysql>SELECT tmall_user.username FROM mytest.tmall_user;

? ?

排序数据(ORDER BY 子句)

  • 排列数据

mysql>SELECT username FROM tmall_user

->ORDER BY username;

username 结构列以字母顺序排列数据

  • 按多个列排序

mysql>SELECT prod_id, prod_price, prod_name FROM products

->ORDER BY prod_peice, prod_name;

查询三个列,先按照价格排序,然后再按名称排序

  • 指定排序方向

mysql>SELECT prod_id, prod_price, prod_name FROM products

->ORDER BY prod_price DESC

默认的排序是升序排序,DESC 关键字指定降序排序(价格由高到低)

  • 多个列排序并指定方向

mysql>SELECT prod_id, prod_price, prod_name FROM products

->ORDER BY prod_price DESC, prod_name;

以降序排序产品(价格从高到低),然后再对产品名排序。

注:DESC 关键字之应用到直接位于其前面的列名,如果想在多个列上进行降序排序,必须对每个列指定 DESC 关键字。

  • 使用 ORDER BY LIMIT 的组合,找出一个列中最高或最低的值

mysql>SELECT prod_price FROM products

->ORDER BY prod_price DESC

->LIMIT 1;

查询价格最贵的那个商品

? ?

查询条件(WHERE 子句)

  • 查询满足条件的行

mysql>SELECT prod_name, prod_price FROM products

->WHERE prod_price = 2.50

返回 prod_price 值为 2.50 的行

  • WHERE 子句操作符

=

等于

<>

不等于

!=

不等于

<

小于

<=

小于等于

>

大于

>=

大于等于

BETWEEN

在指定的两个值之间

  • 一些操作符的例子

mysql>SELECT prod_name, prod_price FROM products

->WHERE prod_price < 10;

列出价格小于 10 的所有产品

mysql>SELECT vend_id, prod_name FROM products

->WHERE vend_id <> 1003;

列出不是由供应商1003制造的所有产品

mysql>SELECT prod_name, prod_price FROM products

->WHERE prod_price BETWEEN 5 AND 10

查询价格在 5 10 之间的所有产品

mysql>SELECT prod_name FROM products

->WHERE prod_price IS NULL;

查询价格列值为 NULL 的行。(空值=值为NULL

  • 组合 WHERE 子句(逻辑操作符)

AND

OR

  • IN 操作符

mysql>SELECT prod_name FROM products

->WHERE vend_id IN (1002, 1003)

->ORDER BY prod_name;

查询供应商10021003制造的所有产品

IN WHERE 子句中用来指定要匹配值得清单的关键字,功能与 OR 相当

  • NOT 操作符

mysql>SELECT prod_name FROM products

->WHERE vend_id NOT (1002, 1003)

->ORDER BY prod_name;

查询除10021003之外的所用供应商制造的产品

NOT WHERE 子句中用来否定后跟条件的关键字,MySQL中的 NOT 支持使用 INBETWEEN EXISTS 子句取反

  • LIKE 操作符(通配符过滤)

%

任何字符出现任意次数,不能匹配 NULL

_

任何一个字符

mysql>SELECT prod_name FROM products

->WHERE prod_name LIKE ‘s%e‘;

查询以s开头以e结尾的产品

? ?

? ?

函数

  • 文本处理函数

Left()

返回串左边的字符

Length()

返回串的长度

Locate()

找出串的一个子串

Ltrim()

去掉串左边的空格

Right()

返回串右边的字符

Rtrim()

去掉串右边的空格

Soundex()

返回串SOUNDEX值(根据发音比较而不是字母比较)

SubString()

返回子串的字符

Upper()

转换为大写

mysql>SELECT name FROM tmall_user

->WHERE SOUNDEX(name) = SOUNDEX(‘雷君‘)

返回:雷军

  • 时间和日期处理函数

AddDate()

??

AddTime()

??

CurDate()

返回当前日期

CurTime()

返回当前时间

Date()

返回日期时间的日期部分

DateDiff()

计算两个日期之差

Date_Add()

高度灵活的日期运算函数

Date_Format

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

Day()

返回日期的天数部分

DayOfWeek()

返回日期对应的星期数

Hour()

返回时间的小时部分

Minute()

返回时间的分钟部分

Month()

返回日期的月份部分

Now()

返回当前日期和时间

Second()

返回时间的秒数部分

Time()

返回日期时间的时间部分

Year()

返回日期的年份部分

mysql>SELECT username FROM tmall_user

->WHERE DATE(time) = ‘2016-09-21‘;

使用日期比较过滤查询结果

mysql>SELECT count(id) FROM tmall_user

->WHERE DATE(time) BETWEEN ‘2016-09-01‘ AND ‘2016-09-30‘;

查询20169月注册的用户数量

mysql>SELECT count(id) FROM t

人气教程排行