当前位置: 首页 > news >正文

mysql 5.5基本语句_MySql___(5) MySQL 必知必会

第3章 使用MySql

3.1 连接

3.2 选择数据库

首先在登录数据库情况,可以先使用 show databases;展示出有哪些数据库

mysql> show databases;

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

| Database |

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

| information_schema |

| 9 |

| book |

| bookstore |

| db_9griddiary |

| db_database13 |

| hibernate |

| hwp_db |

| jdbc01 |

| mysql |

| onlinexam |

| performance_schema |

| test |

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

13 rows in set (0.06 sec)

输入 USE book

输出 Database changed

表示选中了book数据库;

3.3 了解数据库和表

SHOW TABLES; 返回当前选择的数据库内可用表的列表。

输入 SHOW TABLES;

输出

mysql> SHOW TABLES;

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

| Tables_in_book |

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

| book_info |

| product_tb |

| tb_studnet_batch |

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

SHOW也可以用来显示表列:

输入 SHOE COLUMNS FROM book_info;

输出

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

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

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

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

| name | varchar(200) | NO | | NULL | |

| price | double | NO | | NULL | |

| bookCount | int(11) | NO | | NULL | |

| author | varchar(45) | NO | | NULL | |

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

**SHOE COLUMNS ** 要求给出一个表名,它对应每个字段返回一行,行中包含字段名、数据类型、是否允许NULL、键信息、默认值以及其他信息(如字段id的auto_incerement)。

其他的SHOW语句还有:

SHOW STATUS ,用于显示广泛的服务器状态信息;

SHOW GRANTS,用来显示授予用户(所有用户或特定用户)的安全权限;

SHOW ERRORS和SHOW WARNINGS,用来显示服务器错误或警告消息;

第4章 检索数据

4.1 SELECT 语句

4.2 检索单个列

输入

SELECT name FROM book_info;

上述语句利用SELECT语句从book_info表中检索一个名name的列。所需的列名在SELECT关键字之后给出,FROM关键字指出从其中检索数据的表名。此语句的输出如下所示:

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

| name |

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

| JAVAWeb |

| 1111 |

| 名称一 |

| 或者 |

| 名称一 |

| 山月不知心底事 |

| 致我们终将逝去的青春 |

| 平凡的世界 |

| aj |

| 我是作者 |

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

未排序数据“如果读者自己试验这个查询,可能会发现显示输出的数据顺序与这里的不同。出现这种情况很正常。如果没有明确排序查询结果(下一章介绍),则返回的数据的顺序没有特殊意义。返回数据的顺序可能是数据被添加到表中的顺序,

也可能不是。只要返回相同数目的行,就是正常的。

结束SQL语句多条SQL语叶心须以分号(;)分隔、MySQL如同多数DBMS一样,不需要在单条SQL语句后加分号。但特定的DBMS可能必须在单条SQL语叶后加上分号。当然,如果愿意可以总是加上分号。事实上,即使不一定需要,但加上分号肯定没有坏处。如果你使用的是mySq1l命令行,必须加上分号来结束SQL语句。

SQL语句和大小写 请注意,SQL语句不区分大小写,因此SELECT与select是相同的.同样,写成Select也没有关系。许多SQL开发人员喜欢对所有SQL关键字使用大写,而对所有列和表名使用小写,这样做使代码更易于阅读和调试

使用空格 在处理SQL语句时,其中所有空格都被忽略。SQL语句可以在一行上给出,也可以分成许多行.多数SQL开发人员认为将SQL语句分成多行更容易阅读和调试。

4.3 检索多个列

要想从一个表中检索多个列,使用相同的SELECT语句。唯一的不同是必须在SELECT关键字后给出多个列名,列名之间必须以逗号分隔。

当心逗号在选择多个列时,一定要在列名之间加上逗号,但_

最后一个列名后不加。如果在最后一个列名后加了迎号,将出

现错误。

输入

SELECT name ,author FROM book_info;

输出

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

| name | author |

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

| JAVAWeb | b |

| 1111 | c |

| 名称一 | 我的作者 |

| 或者 | 余华 |

| 名称一 | 安安 |

| 山月不知心底事 | 辛夷坞 |

| 致我们终将逝去的青春 | 辛夷坞 |

| 平凡的世界 | 路遥 |

| aj | back back |

| 我是作者 | 中文测试 |

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

4.4 检索所有列

输入 select * from book_info;

分析 如果给定一个通配符(*),则返回表中所有列。列的顺序一般是列在表定义中出现的顺序。但有时候并不是这样的,表的模式的变化(如添加或删除列)可能会导致顺序的变化。

4.5 检索不同的行

使用DISTINCT关键字,返回不同值的列表

输入 SELECT DISTINCT price FROM book_info;

分析 SELECT DISTINCT price告诉MYSQL 只返回不同的price行。

输出

+-------+

| price |

+-------+

| 20.6 |

| 30 |

| 80 |

| 30.5 |

| 35 |

| 40 |

| 58 |

+-------+

4.6 限制结果

SELECT语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使用LIMIT子句。

输入 SELECT price FROM book_info LIMIT 5;

分析 此语句使用SELECT语句检索单个列。LIMIT5指示MySQL返回不多于5行

为得出下一个5行,可指定要检索的开始行和行数:

输入 SELECT price FROM book_info LIMIT 5,5;

分析 LIMIT5,5指示MySQL返回从行5开始的5行。第一个数为开始位置,第二个数为要检索的行数。

索引从0开始~ 在行数不够时,有多少返回多少!

4.7 使用完全限定的表名

使用完全限定的名字来引用列(同时使用表名和列字)

输入 SELECT book_info.name FROM book_info;

表名也可以是完全限定的:

SELECT book_info.name FROM book.book_info;

第5章 排序检索数据

5.1 排序数据

为了明确地排序用SELECT语句检索出的数据,可使用0RDER BY子句。0RDER BY子句取一个或多个列的名字,据此对输出进行排序

输入 select book_info.name FROM book_info ORDER BY name;

输出

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

| name |

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

| 1111 |

| aj |

| JAVAWeb |

| 名称一 |

| 名称一 |

| 山月不知心底事 |

| 平凡的世界 |

| 我是作者 |

| 或者 |

| 致我们终将逝去的青春 |

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

ORDER BY使用非检索的列排序数据是完全合法的。

5.2 按多个列排序

输入 SELECT name ,price,author FROM book_info ORDER BY price,author;

输出

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

| name | price | author |

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

| JAVAWeb | 20.6 | b |

| 1111 | 30 | c |

| 或者 | 30 | 余华 |

| 名称一 | 30.5 | 安安 |

| 山月不知心底事 | 35 | 辛夷坞 |

| 稳稳当当 | 40 | A |

| 平凡的世界 | 40 | 路遥 |

| 致我们终将逝去的青春 | 40 | 辛夷坞 |

| 测试 | 40.5 | 中 |

| aj | 58 | back back |

| 我是作者 | 58 | 中文测试 |

| 名称一 | 80 | 我的作者 |

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

上诉例子表示,仅在多个具有相同的price值时才对书本按autor进行排序,如果price列中所有的值都是唯一的,则不会按author排序。

5.3 指定方向排序

数据有升序和降序,为了进行降序排序,必须指定DESC关键字。

输入 SELECT name ,price,author FROM book_info ORDER BY author DESC;

输出

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

| name | price | author |

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

| 致我们终将逝去的青春 | 40 | 辛夷坞 |

| 山月不知心底事 | 35 | 辛夷坞 |

| 平凡的世界 | 40 | 路遥 |

| 名称一 | 80 | 我的作者 |

| 名称一 | 30.5 | 安安 |

| 或者 | 30 | 余华 |

| 我是作者 | 58 | 中文测试 |

| 测试 | 40.5 | 中 |

| 1111 | 30 | c |

| aj | 58 | back back |

| JAVAWeb | 20.6 | b |

| 稳稳当当 | 40 | A |

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

在多列上降序排序 如果想在多个列上进行降序排序,必须对每个列指定DESC关键字。

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

输入 SELECT price FROM book_info ORDER BY price DESC LIMIT 1;

输出

+-------+

| price |

+-------+

| 80 |

+-------+

分析price DESC保证行是按照由最昂贵到最便宜检索的,而LIMIT1告诉MySQL仅返回一行。

0RDER BY子句的位置“在给出O0RDER BY二句时,应该保证它位于FROM十句之后.如果使用tIMIT,它处须位于0RDER BY之后。使用子句的次序不对将产生错误消息。

第6章 过滤数据

6.1 使用WHERE语句

输入 SELECT name,price,author FROM book_info WHERE price=30;

输出

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

| name | price | author |

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

| 1111 | 30 | c |

| 或者 | 30 | 余华 |

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

分析

这条语句从book_info 表中检索三个列,但不返回所有行,只返回price值为30的行。

WHERE子句的位置在同时使用ORDER BY和WHERE子句时,应该让0RDERBY位于WHERE之后,否则将会产生错误。

6.2 WHERE 语句子句操作符

操作符

说明

=

等于

<>

!=

<

<=

>

>=

BETAEEN

6.2.1 检查单个值

输入

SELECT name,price,author FROM book_info WHERE price <=30;

6.2.2 不匹配检查

输入

SELECT name,price,author FROM book_info WHERE price <> 40;

输出

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

| name | price | author |

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

| JAVAWeb | 20.6 | b |

| 1111 | 30 | c |

| 名称一 | 80 | 我的作者 |

| 或者 | 30 | 余华 |

| 名称一 | 30.5 | 安安 |

| 山月不知心底事 | 35 | 辛夷坞 |

| aj | 58 | back back |

| 我是作者 | 58 | 中文测试 |

| 测试 | 40.5 | 中 |

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

6.2.3 范围值检查

检查范围值,可使用 BETWEEN关键字

输入

SELECT name,price,author FROM book_info WHERE price BETWEEN 20 AND 40;

输出

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

| name | price | author |

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

| JAVAWeb | 20.6 | b |

| 1111 | 30 | c |

| 或者 | 30 | 余华 |

| 名称一 | 30.5 | 安安 |

| 山月不知心底事 | 35 | 辛夷坞 |

| 致我们终将逝去的青春 | 40 | 辛夷坞 |

| 平凡的世界 | 40 | 路遥 |

| 稳稳当当 | 40 | A |

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

6.2.4 空值检查

输入

SELECT name,price,author FROM book_info WHERE name IS NULL;

第7章 数据过滤

7.1

7.1.1 AND操作符

输入

SELECT name,price,author,bookCount FROM book_info WHERE bookCount < 40 AND price <50;

输出

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

| name | price | author | bookCount |

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

| JAVAWeb | 20.6 | b | 10 |

| 名称一 | 30.5 | 安安 | 20 |

| DD | 35 | 辛夷坞 | 10 |

| 致我们终将逝去的青春 | 40 | 辛夷坞 | 0 |

| 平凡的世界 | 40 | 路遥 | 0 |

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

7.2 IN操作符

IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。

输入

SELECT name,author FROM book_info WHERE price in (30,40,58) ORDER BY name;

输出

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

| name | author |

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

| 1111 | c |

| aj | back back |

| 平凡的世界 | 路遥 |

| 我是作者 | 中文测试 |

| 或者 | 余华 |

| 稳稳当当 | A |

| 致我们终将逝去的青春 | 辛夷坞 |

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

分析

此SELECT语句价格为30、40、58的所有书本信息。IN操作符后跟由逗号分隔的合法值清单,整个清单必须括在圆括号中。(IN并不是数学中的区间概念,如30、40、58仅仅是30,40,58)

IN和OR功能相同,如下

输入

SELECT name,author FROM book_info WHERE price=30 OR price=40 OR price=58 ORDER BY name;

IN操作符的优点:

在使用长的合法选项清单时,IN操作符的语法更清楚且更直观。

在使用IN时,计算的次序更容易管理(因为使用的操作符更少)。

IN操作符一般比0R操作符清单执行更快。

IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。

7.3 NOT操作符

WHERE子句中的NOT操作符有且只有一个功能,那就是否定它之后所

跟的任何条件。

输入

SELECT name,author FROM book_info WHERE price NOT IN (30,40,58) ORDER BY name;

输出

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

| name | author |

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

| DD | 辛夷坞 |

| JAVAWeb | b |

| 名称一 | 我的作者 |

| 名称一 | 安安 |

| 测试 | 中 |

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

第8章 用通配符进行过滤

8.1 LIKE操作符

8.1.1 百分号(%)通配符

最常使用的通配符是百分号(%)。在搜索中,%表示任何字符出现任意次数。例如,为了找出所有以词名起头的产品,可使用以下SELECT语句:

输入

SELECT * FROM book_info WHERE name LIKE '名%';

输出

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

| id | name | price | bookCount | author |

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

| 3 | 名称二 | 80 | 77 | 我的作者 |

| 5 | 名称一 | 30.5 | 20 | 安安 |

| 9 | 名称三 | 58 | 60 | back back |

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

通配符可在搜索模式中任意位置使用,并且可以使用多个通配符。下面的例子使用两个通配符,它们位于模式的两端:

输入

SELECT * FROM book_info WHERE name LIKE '%的%';

输出

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

| id | name | price | bookCount | author |

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

| 7 | 致我们终将逝去的青春 | 40 | 0 | 辛夷坞 |

| 8 | 平凡的世界 | 40 | 0 | 路遥 |

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

8.1.2 下划线(_)通配符

另一个有用的通配符是下划线(_)。下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符。

8.2 使用通配符的技巧

不要过度使用通配符。如果其他操作符能达到相同的目的,应该

使用其他操作符。

在确实需要使用通配符时,除非绝对有必要,否则不要把它们用

在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起

来是最慢的。

仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。

第9章 用正则表达式进行搜索

9.1 正则表达式介绍

9.2 使用MySql正则表达式

9.2.1 基本字符匹配

9.2.2 进行OR匹配

输入

SELECT * FROM book_info WHERE bookCount REGEXP '20|60|50' ORDER BY name;

输出

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

| id | name | price | bookCount | author |

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

| 2 | 1111 | 30 | 50 | c |

| 5 | 名称一 | 30.5 | 20 | 安安 |

| 9 | 名称三 | 58 | 60 | back back |

| 14 | 我是作者 | 58 | 60 | 中文测试 |

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

9.2.3 匹配几个字符之一

9.2.4 匹配范围

输入

SELECT * FROM book_info WHERE name REGEXP '[1-6]书名' ORDER BY name;

输出

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

| id | name | price | bookCount | author |

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

| 18 | 2书名字 | 50 | 200 | 作者B |

| 19 | 3书名 | 20 | 63 | 作者C |

| 21 | 5书名 | 20 | 60 | 作者4 |

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

9.2.5 匹配特色字符

例如想找出包含.字符的值,该怎样搜索

输入

SELECT * FROM book_info WHERE name REGEXP '\\.' ORDER BY name;

注意:使用.匹配需要使用两个\进行转义;

9.2.6 匹配字符类

说明

[alnum:]

任意孛母和数子(同[a-ZA-Z0-9])

[:alpha:]

任意字符(同[a-zA-Z])

[:blank:]

空格和制表(同[V\t]

[:cntrl:]

ASCII控制字符(ASCII0到31和127)

[:digit:]

任意数字(同[0-9])

[:graph:1]

与[:print:]相同,但不包括空格

[:Lower:]

任意小写字母(同[a-z])

[:print:]

任意可打印字符

[:punct:]

既不在[:alnum:]又不在[:cntr1l:]中的任意字符

9.2.7 匹配多个实例

9.2.8 定位符

第10章 创建计算字段

10.1 计算字段

10.2 拼接字段

在MySQL的SELECT语句中,可使用Concat()函数来拼接两个列。

输入

SELECT Concat(name,'(',price,')') FROM book_info ;

输出

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

| Concat(name,'(',price,')') |

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

| JAVAWeb(20.6) |

| 1111(30) |

| 名称二(80) |

| 或者(30) |

| 名称一(30.5) |

| DD(35) |

| 致我们终将逝去的青春(40) |

| 平凡的世界(40) |

| 名称三(58) |

| 我是作者(58) |

| 稳稳当当(40) |

| 测试(40.5) |

| 1 书名(30) |

| 2书名字(50) |

| 3书名(20) |

| 9书名(37) |

| 5书名(20) |

| 书.名(15) |

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

Rtrim()可以删除数据右侧多余的空格

输入

SELECT Concat(Rtrim(name),'(',Rtrim(price),')') FROM book_info ;

10.3 执行算术计算

total_price 包含单价和数量乘积。

输入

SELECT name,price ,bookCount ,price*bookCount AS total_price FROM book_info;

输出

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

| name | price | bookCount | total_price |

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

| JAVAWeb | 20.6 | 10 | 206 |

| 1111 | 30 | 50 | 1500 |

| 名称二 | 80 | 77 | 6160 |

| 或者 | 30 | 40 | 1200 |

| 名称一 | 30.5 | 20 | 610 |

| DD | 35 | 10 | 350 |

| 致我们终将逝去的青春 | 40 | 0 | 0 |

| 平凡的世界 | 40 | 0 | 0 |

| 名称三 | 58 | 60 | 3480 |

| 我是作者 | 58 | 60 | 3480 |

| 稳稳当当 | 40 | 100 | 4000 |

| 测试 | 40.5 | 100 | 4050 |

| 1 书名 | 30 | 60 | 1800 |

| 2书名字 | 50 | 200 | 10000 |

| 3书名 | 20 | 63 | 1260 |

| 9书名 | 37 | 50 | 1850 |

| 5书名 | 20 | 60 | 1200 |

| 书.名 | 15 | 66 | 990 |

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

相关文章:

  • Mysql什么版本支持组提交_MYSQL组提交
  • mysql纵列改成恒列_php-如何将mysql表行显示为列
  • mysql ssl 2026_解决连接到 Amazon RDS for MySQL 或 Aurora 实例时的 ERROR 2026 SSL 连接错误...
  • opensuse rpm安装mysql_rpm安装MySQL
  • 顺序表的基本操作_顺序表基本操作上机实验
  • lede软路由Mysql未运行_Proxmox VE(PVE)安装LEDE/OpenWrt 软路由系统|虚拟机环境
  • mysql的awr生成语句_如何生成指定SQL语句的AWR报表
  • mysql对建表语句长度的限制_MySQL 建表字段长度的限制
  • 编译安装mysql加入services_编译安装MySQL数据库
  • win7下ado连接mysql_提示连接无法用于执行此操作_提示错误“连接无法用于执行此操作。再此上下文中可能已被关闭或者无效”...
  • java sha_原生Java实现SHA256算法
  • java spring 事务控制器_spring之事务总结
  • java adt怎么使用_Java ADT中如何使用ImageView控件
  • java setforeground_java 中的JProgressBar设置前景色foreground无效果
  • python数字加密货币_GitHub - cugbliwei/cryptocurrency: 数字加密货币项目
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • docker-consul
  • go append函数以及写入
  • in typeof instanceof ===这些运算符有什么作用
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • java正则表式的使用
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Leetcode 27 Remove Element
  • python 装饰器(一)
  • ReactNative开发常用的三方模块
  • 大整数乘法-表格法
  • 关于使用markdown的方法(引自CSDN教程)
  • 面试遇到的一些题
  • 三分钟教你同步 Visual Studio Code 设置
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # 透过事物看本质的能力怎么培养?
  • #define、const、typedef的差别
  • (8)STL算法之替换
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • ./和../以及/和~之间的区别
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .htaccess配置常用技巧
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Core 版本不支持的问题
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET委托:一个关于C#的睡前故事
  • /bin/bash^M: bad interpreter: No such file or directory
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @SuppressWarnings(unchecked)代码的作用
  • @软考考生,这份软考高分攻略你须知道
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [BZOJ4016][FJOI2014]最短路径树问题
  • [C/C++随笔] char与unsigned char区别