解决方案

MySQL数据库(三)-表行的语句使用

seo靠我 2023-09-25 06:09:11

初学数据库的基本概念

MySQL数据库的使用(一)-数据库的增删改查

MySQL数据库的使用(二)-表的增删改查

前言

在昨天的内容上继续SQL的使用,内容主要是如何添加内容到表中,删除,更改,查看等内容,还SEO靠我有一些常用的类型说明。

语句、字句、关键字是可以大写,也可以小写的,这个没关系,规范写的话,可以使用大写,而表名、数据库名、列这些信息只能用小写来写。

一. 数据类型

数据类型是定义列中可以存储什么数据以及SEO靠我该数据实际怎样存储的基本规则;

数据类型用于以下的目的:

数据类型允许限制可存储在列中的数据;

数据类型允许在内部更有效地存储数据;

数据类型允许变换排序顺序。

因此在使用数据类型时,往往要注意选择正确合适的数SEO靠我据类型,避免浪费了系统的性能以及无法写入内容的可能性。

数据类型一共分为四类,一类是数值类型,一类是字符串类型,一类是日期类型,还有一个是二进制数据类型。

1.1 数值类型

数值类型

我猜不会真有人去记上面的SEO靠我数字,虽然说类型是比较重要的一项内容,其实只需要了解什么情况用到什么类型的数值就行了,需要用到的时候再回头来看看。

带有数值类型的列在添加内容的时候,是不需要加单引号的,这点可以了解一下。

1.2 字符串SEO靠我类型

字符串类型:(直接上图了)

字符串类型有两点是比较重要的,第一个是插入的内容需要带有单引号,否则数据库会报错,第二是设定字段的类型时,需要填写内容的长度信息,否则也会出现报错的情况。

example:SEO靠我

1.3 日期和时间类型

日期和时间类型:

这个类型是专门用来存储日期和时间的值。

1.4 二进制类型

二进制数据类型可存储任何数据(包括二进制的信息),如图像、多媒体、字处理文档等信息。

下面继续来讲数据库添加SEO靠我数据的使用。

二. 添加内容

2.1 添加行的内容

在表中添加行的内容,需要使用到insert开头的语句

insert into 表名 values(内容1,内容2);

example:

mysql> creatSEO靠我e table students(id int,name varchar(30)); Query OK, 0 rows affected (0.19 sec)mysql> insertSEO靠我 into students values(1,zhangsan); Query OK, 1 row affected (0.06 sec)mysql> select * from sSEO靠我tudents; +------+----------+ | id | name | +------+----------+ | 1 |SEO靠我 zhangsan | +------+----------+ 1 row in set (0.00 sec)

已经成功插入了一条数据库记录在表中;如果还需要继续往下添加SEO靠我内容,还是一样使用这条语句。

mysql> insert into students values(2,lisi); Query OK, 1 row affected (0.00 secSEO靠我)mysql> select * from students; +------+----------+ | id | name | +------+--SEO靠我--------+ | 1 | zhangsan | | 2 | lisi | +------+----------+ 2 rows iSEO靠我n set (0.00 sec)

一次性插入多行该如何操作呢;

mysql> insert into students values(3,wangwu),(4,chenliu),(5,wangqi); SEO靠我 Query OK, 3 rows affected (0.04 sec) Records: 3 Duplicates: 0 Warnings: 0mysql> inserSEO靠我t into students values(6,tangba),-> (7,lijiu); Query OK, 2 rows affected (0.00 sec) SEO靠我Records: 2 Duplicates: 0 Warnings: 0

可以并排一次性写完,也可以切换到下一行来写,一般情况下,如果内容较多,可以换行来写,只要每写完一行后加上一个逗号即可。

2.2 字SEO靠我段默认值

单独给某一列添加内容

mysql> insert into students(name) values(葫芦娃1号); Query OK, 1 row affected (0.0SEO靠我1 sec)mysql> select * from students; +------+---------------+ | id | name | SEO靠我+------+---------------+ | 1 | zhangsan | | 2 | lisi | | 3 | wangwu | SEO靠我 | 4 | chenliu | | 5 | wangqi | | 6 | tangba | | 7 | lijiu | | NULLSEO靠我 | 葫芦娃1号 | +------+---------------+ 8 rows in set (0.00 sec)

为什么会出现NULL的字样呢,内容不是为空呢,因SEO靠我为再次之前只在name的字段中添加了内容,其实这个是因为Default这个默认值为NULL。

那么是否可以修改这个内容值呢,结果肯定是可以的,我们接下来对id的默认值进行修改,在不添加id这列时,显示2SEO靠我0。mysql> alter table students modify id int(11) default 20; Query OK, 0 rows affected, 1 warSEO靠我ning (0.07 sec) Records: 0 Duplicates: 0 Warnings: 1mysql> desc students; +-------+-SEO靠我------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra |SEO靠我 +-------+-------------+------+-----+---------+-------+ | id | int | YES | | 20 | | SEO靠我 | name | varchar(30) | YES | | NULL | | +-------+-------------+------+-----+--------SEO靠我-+-------+ 2 rows in set (0.00 sec)

好,已经设置了id字段的默认值,接下来继续;

mysql> insert into students(name) vSEO靠我alues(葫芦娃二号); Query OK, 1 row affected (0.02 sec)mysql> select * from students; +---SEO靠我---+-----------------+ | id | name | +------+-----------------+ | 1 | zhangsSEO靠我an | | 2 | lisi | | 3 | wangwu | | 4 | chenliu | | 5 | wangqi | SEO靠我 | 6 | tangba | | 7 | lijiu | | NULL | 葫芦娃1号 | | 20 | 葫芦娃二号 | +--SEO靠我----+-----------------+ 9 rows in set (0.00 sec)

不填写id时,默认值已经变成了20。

2.3 NULL空值

还有一种方式,可以让字段是必填项SEO靠我,也就是不能显示是null(空值);可以使用not null ,我们这次来修改name的字段,让他成为一个必填项。

mysql> alter table students modify name varSEO靠我char(30) not null; Query OK, 0 rows affected (0.35 sec) Records: 0 Duplicates: 0 WarSEO靠我nings: 0mysql> desc students; +-------+-------------+------+-----+---------+-------+ SEO靠我 | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+-------SEO靠我--+-------+ | id | int | YES | | 20 | | | name | varchar(30) | NO | | NULL | | SEO靠我 +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec)

修改了null后,再SEO靠我次查看字段信息name这一行null的yes修改成no,继续来进行测试;

mysql> insert into students(name) values(); Query OK, 1 SEO靠我row affected (0.00 sec)mysql> insert into students(name) values(葫芦娃三号); Query OK, 1 row affeSEO靠我cted (0.00 sec)mysql> insert into students(id) values(10); ERROR 1364 (HY000): Field name doSEO靠我esnt have a default valuemysql> select * from students; +------+-----------------+ |SEO靠我 id | name | +------+-----------------+ | 1 | zhangsan | | 2 | lisi | SEO靠我 | 3 | wangwu | | 4 | chenliu | | 5 | wangqi | | 6 | tangba | | 7 |SEO靠我 lijiu | | NULL | 葫芦娃1号 | | 20 | 葫芦娃二号 | | 20 | | | 20 | 葫芦娃三号 | SEO靠我 +------+-----------------+ 11 rows in set (0.00 sec)

看到这里就很奇怪,不是说修改了null(空值)后,内容不会为空吗,可是SEO靠我有一行出现了为空的内容。

数据库中的空值实际上指的是null,形式上为空的内容,它实际上还是有内容的,只是显示不了。

2.4 字段约束

实际上,我们可以设置一个主键,让其的值唯一,玩过王者荣耀或者一些游戏的SEO靠我时候,都知道写名称的时候,有时候与其他人的名称相同会提示已经有这个名称了,需要更换名称,其实这个相当于设置了主键,让结果唯一,那么我们来看下这个怎么使用。

我们重新创建一个新表;mysql> creatSEO靠我e table store(id int not null auto_increment primary key,shop varchar(30) not null); Query OSEO靠我K, 0 rows affected (0.07 sec)mysql> desc store; +-------+-------------+------+-----+--------SEO靠我-+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------SEO靠我------+------+-----+---------+----------------+ | id | int | NO | PRI | NULL | auto_incremenSEO靠我t | | shop | varchar(30) | NO | | NULL | | +-------+-------------+------+-----+-----SEO靠我----+----------------+ 2 rows in set (0.00 sec)

往里面写入内容;

mysql> desc store; +-------+-SEO靠我------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default SEO靠我| Extra | +-------+-------------+------+-----+---------+----------------+ | id | intSEO靠我 | NO | PRI | NULL | auto_increment | | shop | varchar(30) | NO | | NULL | | +------SEO靠我-+-------------+------+-----+---------+----------------+ 2 rows in set (0.00 sec)mysql> inseSEO靠我rt into store(shop) values(apple); Query OK, 1 row affected (0.02 sec)mysql> select * from sSEO靠我tore; +----+-------+ | id | shop | +----+-------+ | 1 | apple | SEO靠我 +----+-------+ 1 row in set (0.00 sec)

可以看到ID值默认生成了1,那么继续这样写入

mysql> insert into store(shoSEO靠我p) values(pear); Query OK, 1 row affected (0.01 sec)mysql> insert into store(shop) values(baSEO靠我nana); Query OK, 1 row affected (0.02 sec)mysql> select * from store; +----+--------SEO靠我+ | id | shop | +----+--------+ | 1 | apple | | 2 | pear | |SEO靠我 3 | banana | +----+--------+ 3 rows in set (0.00 sec)

看到结果一直是以当前n+1的方式,总会是上一个的数字加一,我SEO靠我们第四个内容给他定义一个id,看是按它的方式走,还是按我们的方式走。

mysql> insert into store(id,shop) values(10,orange); QuerySEO靠我 OK, 1 row affected (0.00 sec)mysql> select * from store; +----+--------+ | id | shoSEO靠我p | +----+--------+ | 1 | apple | | 2 | pear | | 3 | banana | SEO靠我 | 10 | orange | +----+--------+ 4 rows in set (0.00 sec)

由此可见,还是手动定义的优先级高于系统定义的。

此时若SEO靠我继续写入内容,是在id为3的基础上写入呢,还是继续从10开始往下n+1呢mysql> insert into store(shop) values(Black brin); QuerySEO靠我 OK, 1 row affected (0.02 sec)mysql> select * from store; +----+------------+ | id |SEO靠我 shop | +----+------------+ | 1 | apple | | 2 | pear | | 3 | banana SEO靠我| | 10 | orange | | 11 | Black brin | +----+------------+ 5 rows in SEO靠我set (0.00 sec)

结果很明显,在10的基础上继续往下+1。

如果将表的记录清空,auto_increment的值还会继续往下n+1吗

来看看两种不同的清空方式

2.4.1 使用delete的方式

SEO靠我来看delete的方式

语句 delete from 表名;

example:

mysql> delete from store; Query OK, 5 rows affected (0.0SEO靠我0 sec)mysql> select * from store; Empty set (0.00 sec)mysql> insert into store(shop) values(SEO靠我Codlin); Query OK, 1 row affected (0.02 sec)mysql> select * from store; +----+------SEO靠我--+ | id | shop | +----+--------+ | 12 | Codlin | +----+--------+ SEO靠我 1 row in set (0.00 sec)

delete是没有办法清除auto_increment值的,这个值还在继续往下n+1的叠加。

2.4.2 使用truncate的方式

语句

trunSEO靠我cate table 表名;

example:

mysql> truncate table store; Query OK, 0 rows affected (0.11 sec)mysqlSEO靠我> desc store; +-------+-------------+------+-----+---------+----------------+ | FielSEO靠我d | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----SEO靠我------------+ | id | int | NO | PRI | NULL | auto_increment | | shop | varchar(30) |SEO靠我 NO | | NULL | | +-------+-------------+------+-----+---------+----------------+ 2 rSEO靠我ows in set (0.01 sec)mysql> select * from store; Empty set (0.01 sec)mysql> insert into storSEO靠我e(shop) values(Cumquat); Query OK, 1 row affected (0.00 sec)mysql> select * from store; SEO靠我 +----+---------+ | id | shop | +----+---------+ | 1 | Cumquat | SEO靠我+----+---------+ 1 row in set (0.00 sec)

重新写入一行信息,id的值结果为1,使用truncate语句是可以重置auto_increment值。

SEO靠我意:truncate会清除表的所有数据。如果只想清除auto_increment值 归零,不要使用该命令。

自始至终,写入内容的语法只有一条,而接下来将的查看内容语句、字句较多,还请耐心查看,我会尽量将SEO靠我目录分多一些,这样回头查看语句的时候亦可比较方便查询。

三. 检索行的内容

3.1 在表中检索内容

检索表的内容是用到的频率比较高,特别是在后期,我认为比新建还要更常用,所以我们讲的细一些,也由简到难这样的SEO靠我方式来写。

检索一列的内容;mysql> select id from store; +----+ | id | +----+ | 1 |SEO靠我 +----+ 1 row in set (0.00 sec)

检索多列内容;

mysql> select id,shop from store; +---SEO靠我-+---------+ | id | shop | +----+---------+ | 1 | Cumquat | +----+--SEO靠我-------+ 1 row in set (0.00 sec)

检索所有列的内容

mysql> select * from store; +----+---------+SEO靠我 | id | shop | +----+---------+ | 1 | Cumquat | +----+---------+ SEO靠我 1 row in set (0.00 sec)

使用通配符*表示显示所有的内容,Linux有些内容在mysql中同样适用。

3.2 检索不同的行(去重)

使用上面那条select语句,默认是显示所SEO靠我有的内容,如果内容中有出现重复的,或者有多行重复的,可以使用DISTINCT关键词来去重复。

语句 select distinct 字段 from 表名;

example:

mysql> select * fSEO靠我rom store; +------+--------+ | id | name | +------+--------+ | 2 | aSEO靠我pache | | 3 | pear | | 4 | orange | | 3 | apple | | 5 | banana | SEO靠我 | 4 | orange | +------+--------+ 6 rows in set (0.00 sec)mysql> select distinctSEO靠我 id from store ; +------+ | id | +------+ | 2 | | 3 | SEO靠我 | 4 | | 5 | +------+ 4 rows in set (0.00 sec)

以上有出现重复的内容,只显示了一行,如果是两列字段信息,什SEO靠我么情况才会不显示重复的呢。

mysql> select distinct * from store ; +------+--------+ | id | name | SEO靠我 +------+--------+ | 2 | apache | | 3 | pear | | 4 | orange | SEO靠我| 3 | apple | | 5 | banana | +------+--------+ 5 rows in set (0.03 sec)

有一行没有SEO靠我显示出来,与上面的信息对比,是id为4的内容,必须两行都出现相同重复的内容才会distinct去重。

3.3 限制显示的结果

select语句返回所有匹配的行,它们可能是指定表中的每一行,为了返回第一行或SEO靠我前几行,可使用LIMIT字句;

select 列 from 表名 LIMIT 显示多少行;

example:

mysql> SELECT * FROM books LIMIT 3; +---SEO靠我--+-----------------------------+---------+-----------------------------+-------+------------+------SEO靠我-----+------------+ | bId | bName | bTypeId | publishing | price | pubDate | author | ISBN |SEO靠我 +-----+-----------------------------+---------+-----------------------------+-------+------SEO靠我------+-----------+------------+ | 1 | 网站制作直通车 | 2 | 电脑爱好者杂志社 | 34 | 2004-10-01 | 苗壮 | 75053SEO靠我80796 | | 2 | 黑客与网络安全 | 6 | 航空工业出版社 | 41 | 2002-07-01 | 白立超 | 7121010925 | | 3 | 网络程SEO靠我序与设计-asp | 2 | 北方交通大学出版社 | 43 | 2005-02-01 | 王玥 | 75053815x | +-----+-----------------------SEO靠我------+---------+-----------------------------+-------+------------+-----------+------------+ SEO靠我 3 rows in set (0.00 sec)

这个语句使用select语句检索所有列,LIMIT 3指示MySQL返回不高于3行内容。

如果要从第三行开始显示五行内容,使用LIMIT字句一样可行;SEO靠我mysql> SELECT bid,bName,price FROM books LIMIT 2,5; +-----+---------------------------------SEO靠我+-------+ | bid | bName | price | +-----+---------------------------------+-------+ SEO靠我 | 3 | 网络程序与设计-asp | 43 | | 4 | pagemaker 7.0短期培训教程 | 43 | | 5 | 黑客攻击防范秘笈 | 4SEO靠我4 | | 6 | Dreamweaver 4入门与提高 | 44 | | 7 | 网页样式设计-CSS | 45 | +-----+---------SEO靠我------------------------+-------+ 5 rows in set (0.00 sec)

使用LIMIT后跟着的是2,5,才会显示从3开始往下5行内容,这个是SEO靠我因为检索第一行实际要写的数字是0,而检索第二行要写的数字是1。

3.4 使用完全限定的表名

完全限定的表名是使用表名和列的来检索内容,相当于是全路径的方式检索;一起来看下语句

SELECT 表名.列名 FRSEO靠我OM 数据库名.表名; mysql> SELECT books.bname FROM book.books LIMIT 3; +-------------------SEO靠我----------+ | bname | +-----------------------------+ | 网站制作直通车 | | SEO靠我黑客与网络安全 | | 网络程序与设计-asp | +-----------------------------+ 3 rows in set (0.0SEO靠我0 sec)

后面可能会有一些情况是需要用到完全限定名的,所以可以提前先了解一下它的用法。

3.3 排序数据

让数据表中的内容可以按照我们设定的方式进行排序,可以使用order by这个字句,根据需要排序的SEO靠我内容检索出相应的数据。

SELECT 列名 FROM 表名 ORDER BY 列名;

example:

mysql> SELECT bid,bname FROM books ORDER BY bid LIMSEO靠我IT 3; +-----+-----------------------------+ | bid | bname | +-----+---------SEO靠我--------------------+ | 1 | 网站制作直通车 | | 2 | 黑客与网络安全 | | 3 | 网络程序与设计-asp | SEO靠我 +-----+-----------------------------+ 3 rows in set (0.01 sec)

内容默认是以升序的方式进行排序,也就是从小到大的SEO靠我方式,当然也可再加上ASC,这个亦是表示升序的意思;

mysql> SELECT bid,bname FROM books ORDER BY bid asc LIMIT 3; +----SEO靠我-+-----------------------------+ | bid | bname | +-----+----------------------------SEO靠我-+ | 1 | 网站制作直通车 | | 2 | 黑客与网络安全 | | 3 | 网络程序与设计-asp | +-----+------SEO靠我-----------------------+ 3 rows in set (0.02 sec)

按降序的方式进行排序,需要使用到DESC这个关键字

mysql> SELECT bid,SEO靠我bname FROM books ORDER BY bid DESC LIMIT 3; +-----+-----------------------------------------SEO靠我-----------+ | bid | bname | +-----+------------------------------------------------SEO靠我----+ | 44 | XML 完全探索 | | 43 | ASP 3初级教程 | | 42 | SQL Server 7.0数据库系统管理与应用开发SEO靠我 | +-----+----------------------------------------------------+ 3 rows in set (0.00 SEO靠我sec)

如果想在多个列上进行降序排序,必须对每个列都指定DESC的关键词;

mysql> SELECT bid,bname,btypeid FROM books ORDER BY bid DESC,btSEO靠我ypeid DESC LIMIT 3; +-----+----------------------------------------------------+---------+ SEO靠我 | bid | bname | btypeid | +-----+----------------------------------------------------SEO靠我+---------+ | 44 | XML 完全探索 | 2 | | 43 | ASP 3初级教程 | 2 | | 42 | SQL Server 7SEO靠我.0数据库系统管理与应用开发 | 1 | +-----+----------------------------------------------------+---------+ SEO靠我 3 rows in set (0.00 sec)

3.4 过滤数据

3.4.1 使用where字句

过滤数据一样是使用select这个语句,再加上WHERE字句指定搜索条件。

SELECT 列SEO靠我名 FROM 表名 WHERE 列名 操作符 值;

这样看它的语句不是很明白,那么用一个案例来说明下;

example:mysql> SELECT bid,bname FROM books WHERE BSEO靠我ID=20; +-----+-------------------------+ | bid | bname | +-----+------------SEO靠我-------------+ | 20 | Auto CAD 3D模型大师 | +-----+-------------------------+ 1 SEO靠我row in set (0.00 sec)

显示出BID为20的内容了;

除了=的操作符,实际上还有很多用来过滤数据的操作符,以图表的显示:操作符说明=等于<>不等于!=不等于<小于<=小于等于>大于>=SEO靠我大于等于BETWEEN在指定的两个值之间

操作符有了,那就多举几个例子,方便理解where字句的使用;

mysql> SELECT bid,bname,btypeid FROM books WHERE bSEO靠我typeid > 3; +-----+----------------------------------------+---------+ | bid | bnameSEO靠我 | btypeid | +-----+----------------------------------------+---------+ | 2 | 黑客与网络安SEO靠我全 | 6 | | 4 | pagemaker 7.0短期培训教程 | 9 | | 5 | 黑客攻击防范秘笈 | 6 | | 8 | Internet操SEO靠我作技术 | 7 | | 11 | Auto CAD职业技能培训教程 | 10 | | 13 | 自己动手建立企业局域网 | 8 | | 16 | IllSEO靠我ustrator 10完全手册 | 9 | | 17 | FreeHand 10基础教程 | 9 | | 20 | Auto CAD 3D模型大师 | 10 | SEO靠我 | 21 | Linux傻瓜书 | 4 | | 24 | Auto CAD 2000 应用及实例基集锦 | 10 | | 27 | Delphi 5程序设计与SEO靠我控件参考 | 5 | | 28 | 活学活用Delphi5 | 5 | | 33 | Auto CAD R14 中文版实用教程 | 10 | | 39 SEO靠我| lllustrator 9宝典 | 9 | +-----+----------------------------------------+---------+ 1SEO靠我5 rows in set (0.00 sec)mysql> SELECT bid,bname,btypeid FROM books WHERE btypeid < 2; +-----SEO靠我+----------------------------------------------------+---------+ | bid | bname | btypeid | SEO靠我 +-----+----------------------------------------------------+---------+ | 25 | Access SEO靠我2000应用及实例基集锦 | 1 | | 41 | SQL Server 2000 从入门到精通 | 1 | | 42 | SQL Server 7.0数据库系统管理与SEO靠我应用开发 | 1 | +-----+----------------------------------------------------+---------+ 3 SEO靠我rows in set (0.00 sec)

显示除了Btypeid为2的内容

mysql> SELECT bid,bname,btypeid FROM books WHERE btypeid <> 2 SEO靠我LIMIT 3; +-----+---------------------------------+---------+ | bid | bname | btypeidSEO靠我 | +-----+---------------------------------+---------+ | 2 | 黑客与网络安全 | 6 | |SEO靠我 4 | pagemaker 7.0短期培训教程 | 9 | | 5 | 黑客攻击防范秘笈 | 6 | +-----+-------------------------SEO靠我--------+---------+ 3 rows in set (0.00 sec)

还可以用来显示一个范围的内容,显示Bid1到5的内容。

mysql> SELECT bid,bnaSEO靠我me,btypeid FROM books WHERE bid BETWEEN 1 AND 5; +-----+---------------------------------+--SEO靠我-------+ | bid | bname | btypeid | +-----+---------------------------------+--------SEO靠我-+ | 1 | 网站制作直通车 | 2 | | 2 | 黑客与网络安全 | 6 | | 3 | 网络程序与设计-asp | 2 | |SEO靠我 4 | pagemaker 7.0短期培训教程 | 9 | | 5 | 黑客攻击防范秘笈 | 6 | +-----+-------------------------SEO靠我--------+---------+ 5 rows in set (0.05 sec)

3.4.2 NOT操作符

显示除了这个范围以外的其他内容,可以在BETWEEN前面加上NOT,相当SEO靠我于显示的值取反。

mysql> SELECT bid,bname,btypeid FROM books WHERE bid NOT BETWEEN 1 AND 5 LIMIT 3; +-SEO靠我----+------------------------------+---------+ | bid | bname | btypeid | +-----+----SEO靠我--------------------------+---------+ | 6 | Dreamweaver 4入门与提高 | 2 | | 7 | 网页样式设计-CSSEO靠我S | 2 | | 8 | Internet操作技术 | 7 | +-----+------------------------------+---------+ SEO靠我 3 rows in set (0.00 sec)

3.4.3 AND操作符

相同用法,其实只用AND也可以实现这个效果,一起来看下这个语句;

mysql> SELECT bid,bname,btSEO靠我ypeid FROM books WHERE bid >= 1 AND bid <= 5; +-----+---------------------------------+-----SEO靠我----+ | bid | bname | btypeid | +-----+---------------------------------+---------+ SEO靠我 | 1 | 网站制作直通车 | 2 | | 2 | 黑客与网络安全 | 6 | | 3 | 网络程序与设计-asp | 2 | | 4 SEO靠我| pagemaker 7.0短期培训教程 | 9 | | 5 | 黑客攻击防范秘笈 | 6 | +-----+----------------------------SEO靠我-----+---------+ 5 rows in set (0.00 sec)

3.4.4 OR操作符

要显示固定几个值的内容也可以实现,可以使用or这个关键字;

显示bid为10,20SEO靠我,30的内容mysql> SELECT bid,bname,btypeid FROM books WHERE bid = 10 or bid = 20 or bid =30; +---SEO靠我--+-------------------------------+---------+ | bid | bname | btypeid | +-----+-----SEO靠我--------------------------+---------+ | 10 | 3D MAX 3.0 创作效果百例 | 3 | | 20 | Auto CADSEO靠我 3D模型大师 | 10 | | 30 | 3DS MAX 4横空出世 | 3 | +-----+-------------------------------+---SEO靠我------+ 3 rows in set (0.00 sec)

3.4.5 IN操作符

与上面or显示效果一样的,可以使用in关键句,这个使用起来比较容易,不需要重复写要等于的值。

mysSEO靠我ql> SELECT bid,bname,btypeid FROM books WHERE bid IN (10,20,30); +-----+--------------------SEO靠我-----------+---------+ | bid | bname | btypeid | +-----+----------------------------SEO靠我---+---------+ | 10 | 3D MAX 3.0 创作效果百例 | 3 | | 20 | Auto CAD 3D模型大师 | 10 | SEO靠我| 30 | 3DS MAX 4横空出世 | 3 | +-----+-------------------------------+---------+ 3 rows SEO靠我in set (0.00 sec)

3.5 使用LIKE操作符

前面介绍所有操作符都是针对已知项进行过滤的。但是如果碰到你不知道哪个值怎么写或者说只记得个大概前缀,那么就可以使用LIKE这个操作符来检索了SEO靠我

3.5.1 %通配符

与LIKE一起搭配使用的还有这个通配符(%),在搜索内容时,%可以用来标识任何字符出现的次数。

比如说我要找一本关于Linux的书,但是我不知道它的全名,就可以使用like来模糊检SEO靠我索相关的内容;

mysql> SELECT bid,bname,btypeid FROM books WHERE bname LIKE %linux%; +-----+---------SEO靠我-------+---------+ | bid | bname | btypeid | +-----+----------------+---------+ SEO靠我 | 21 | Linux傻瓜书 | 4 | +-----+----------------+---------+ 1 row in set (0.00 sec)SEO靠我

3.5.2 _ 通配符

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

mysql> SELECT bid,bname,btypeid FROM books WHERSEO靠我E bname LIKE ____防范秘笈; +-----+--------------------------+---------+ | bid | bname | SEO靠我btypeid | +-----+--------------------------+---------+ | 5 | 黑客攻击防范秘笈 | 6 | SEO靠我+-----+--------------------------+---------+ 1 row in set (0.00 sec)

以上使用了四个下划线,_只能匹配一个字符,不能多SEO靠我也不能少。

3.6 子查询

还有一种查询方式是子查询,可以通过查询另外一个表的内容得出的结果,显示给前面要查询的值,一起来看下如何使用。

mysql> select bid,bname from booksSEO靠我 where bid=(select btypeid from category where btypename=网络技术); +-----+---------------------SEO靠我-----+ | bid | bname | +-----+--------------------------+ | 7 | 网页样式设计-CSS |SEO靠我 +-----+--------------------------+ 1 row in set (0.00 sec)

四. 更新内容

4.1 使用UPDATE语句

表中的记SEO靠我录信息如果出现写错了,可以不用执行删除这个语句,可以直接通过更新,让它更换成其他的内容。一起来看下怎么使用的。

UPDATE 表名 SET 列=要修改的内容 where 第几行;

example:

ID为4SEO靠我的内容修改成Bryonymysql> UPDATE store SET name =Bryony where id=4; Query OK, 0 rows affected (0.01SEO靠我 sec) Rows matched: 2 Changed: 0 Warnings: 0mysql> desc store; +-------+------------SEO靠我-+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-SEO靠我------+-------------+------+-----+---------+-------+ | id | int | YES | | NULL | | |SEO靠我 name | varchar(30) | YES | | NULL | | +-------+-------------+------+-----+---------+-------SEO靠我+ 2 rows in set (0.00 sec)mysql> select * from store; +------+--------+ | idSEO靠我 | name | +------+--------+ | 2 | apache | | 3 | pear | | 4 | BryonySEO靠我 | | 3 | apple | | 5 | banana | | 4 | Bryony | +------+--------+ SEO靠我 6 rows in set (0.00 sec)

五. 删除行的内容

5.1 使用DELETE语句

删除行的内容是使用delete语句,一起来看下它的用法。

DELETE FROM 表名 WHERESEO靠我 删除的行;

example·:

删除name带有apache的行;mysql> DELETE FROM store WHERE name=apache; Query OK, 1 row SEO靠我affected (0.02 sec)mysql> select * from store; +------+--------+ | id | name | SEO靠我 +------+--------+ | 3 | pear | | 4 | Bryony | | 3 | apple | | 5 |SEO靠我 banana | | 4 | Bryony | +------+--------+ 5 rows in set (0.00 sec)

还可以用来删除一定SEO靠我范围的数值;删除4-5的值;

mysql> DELETE FROM store WHERE id BETWEEN 4 and 5; Query OK, 3 rows affected (SEO靠我0.03 sec)mysql> select * from store; +------+-------+ | id | name | +------+SEO靠我-------+ | 3 | pear | | 3 | apple | +------+-------+ 2 rows in set (SEO靠我0.00 sec)

总结

数据库表行的内容虽然说还有很多内容,一次肯定是写不完的,数据库还可以使用正则表达式,直接在数据库计算字段,游标,触发器等等内容,后面继续讲,如果觉得内容还行的,可以点赞支持一下!SEO靠我

“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2