1. 通过 like 进行模糊查询:
like需要搭配通配符来使用, 如果对方的字符串满足like所描述的形式, 则可以被查询到, 反之则不能.
通畅和like进行搭配的通配符共有两个, 分别为% 和 _
%代表任意个任意字符, _ 代表任意一个字符.
举例: 查询所有姓孙的学生的信息:
%指这个位置可以是任意个任意字符, 甚至可以是 0个, 而 _ 处只能是任意一个字符.(虽然 _ 只能表示一个字符,但可以同时使用多次, 例如我们可以通过两个 _ 来表示两个字符)
注意:上述例子中的"sun%“的查询结果必须是"sun"以开头, 如果某个字符串中存在"sun”, 但前面有别的字符, 那么这样的字符串无法被查询到.
2. 和null值进行比较
向student表中添加一个所有成绩均为null的学生, 并通过两种方式查询语文成绩为null的学生.
可以看到,通过两种方式查询到的结果是不同的, 是因为 "wuyong"的chinese 成绩为null, 我们之前提到过, null=null 的结果仍为null, 因此不能通过 = 来比较null值, 要想比较null值, 需要用到 <=> , null <=> null的结果为真.
3. 分页查询
SQL中通过limit进行分页查询, 通过分页查询使客户端每次只显示一部分查询结果.
select 列名 from 表名 limit 数字; (这个数字表示每页显示的结果的个数)
举例:查询学生表并使每页只显示3个结果
使用offset来显示后面3个结果:
offset 3 即表示从 3下标开始显示结果, 显示的条数为limit 后的数字(需要注意的是, 表格的行数从 0 开始, offset 3 也就是从第4个结果开始显示)
因此, limit 3 也可以写作 limit 3 offset 0.
SQL中的修改操作
update 表名 set 列名 = 值, 列名 = 值 where 条件; (where后的条件主要针对符合条件的行, 如果省略where就是修改所有的行)
注意:与select不同, update 会直接修改服务器上的原始数据, 一旦修改完, 这种结果就会一直持续下去.
update语句在开发中非常常用, 一定要重点掌握!
删除操作
SQL中使用delete进行删除操作:
delete from 表名 where 条件; (如果省略where, 会直接将表中的所有数据删除)
注意:delete from 表名与 drop table 表名不同, drop table会直接删除数据表, 而delete只会删除表中的数据, 表的结果依然会保留.
MySQL的增删改查(进阶)
数据库的约束, 就是数据库在使用的时候, 对于里面能够存放的数据提出的要求和限制, 程序员可以借助约束来完成更好的校验.
1.约束类型
not null : 指示某列不能存储 NULL 值。
(如果尝试往not null修饰的列中插入空值, 会直接报错)
unique : 保证某列的每行必须有唯一的值。DEFAULT - 规定没有给列赋值时的默认值
(如果尝试插入重复值, 也会报错)
default : 规定没有给列赋值时的默认值
primary key : not null 和 unique 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
(主键默认, 相当于数据的唯一身份表示, 类似于身份证号码)
foreign key : 保证一个表中的数据匹配另一个表中的值的参照完整性。
(外键, 描述表与表之间的关系, 表一里的数据必须在表二中存在)
check : 保证列中的值符合指定的条件。对于MySQL数据库,对check子句进行分析,但是忽略check子句。
(指定一个条件, 通过条件来对值进行判定)
各种约束类型的举例:
not null:
创建一个表m, 将表的id 设置为not null, 通过查看表的属性可以看到 id 一栏的null值为 no.
可以同时为多个列设置not null.
unique:
创建一个表m, 将id 设置为unique, 此时表内每个成员的id必须唯一, 当表内出现重复id时, 会直接报错.
此时通过desc查看数据表的属性可以看到key一栏处, id 的属性为UNI, 即为unique:
default:
MySQL中, 默认的默认值为null.
创建一个表m, 将 id 的默认属性设置为’000000’:
primary key(开发中使用最频繁, 也是最重要的约束):
创建一个表m, 将id 设置为primary key:
注意: 与其他约束类型不同, 每个表中仅能有一个列为primary key, 并且这一列的属性不能为空, 也不能重复.
关于主键, 最常用的使用方式就是直接使用1, 2, 3, 4这样整数递增的方式来进行表示, MySQL中对于这种递增的主键是有内置支持的, 称为"自增主键". (auto_increment)
将id设置为自增主键:
当设定好自增主键之后, 在插入记录时, 我们可以不指定自增主键所在的这一列的值了(直接用null表示), 交给MySQL自动分配即可.
设置自增主键之后再插入元素,并将这一列的值设置为null:
可以看出, 当我们把自增主键这一列的元素设为null时, MySQL会自动为其分配主键.
注意:自增主键也可以手动指定, 例如, 我们将第一个id 指定为10, 那么下一个id就会从11开始.