目录
增
对于数据库(DateBase)
对于表(Table)
对于行&列
删
对于数据库(database)
对于表(table)
对于数据
改
查
对于数据库(databases)
对于表(tables)
对于数据
别名
去重
排序
条件
分页
组合使用
对于数据库的增删查改,我们需要有一个总体的认识,有下面这张图的认识即可。
create database 数据库名字;
--database不要写成datebase
--datebase是单数
1.先选中要操作的数据库
use 数据库名;
2.添加表
create table 表名 (
列名1 列类型1,
列名2 列类型2,
...);
--注意table是单数
--名字在前,类型在后
增加一行完整数据
insert into 表名 values
(数据1, 数据2, 数据3);
--此时的操作的前提是已经到了一个目标数据库
--数据库中有很多表,需要指定目标表
--value是数据的意思,因为可能添加不止一条数据
--所以这里的values是复数
--添加的数据要和表的类型一一对应
增加一行不完整数据
insert into 表名 values
(数据1, 数据2, null);
--放空值null前提是该表没有限制不能放空值
增加多行数据
insert into 表名 values
(对应好的一行数据),
(对应好的一行数据)
......;
指定列插入
insert into 表名(列名1, 列名2...) values
(对应的列数据);
依然可以多行插入,语法同上。
通过查询新增
-- 创建学生信息表
create table students (
id int,
name varchar(20),
age int,
sex varchar(2)
);
-- 插入学生信息
insert into students values
(1, '张三', 20, '男'),
(2, '李四', 19, '男'),
(3, '小红', 18, '女'),
(4, '小蓝', 19, '女');
-- 创建用户表
create table users (
name varchar(20),
age int
);
-- 通过查询新增
-- 必要要类型一致才可以
insert into users(name, age) select name, age from students;
增加一般指增加数据库中的数据,但是我把数据库,表,数据都放到增加这里,这样对于一个完整的增加流程有了更清楚的认识。同时对与下面的操作我也还是从大到小的方式进行。
drop database 表名;
--与新建数据库一样,关键字变成了drop
--删库要谨慎!!!
drop table 表名;
--删表要谨慎!!!
删除行数据
delete from 表名 where 条件1, 条件2,...;
--先找到具体的表,在根据想要删除的哪一行具体删除
--想要删除多行在where子句中添加对应条件即可
--where稍后具体详细介绍
这是我们之前创建的students表,现在我们按照id来删除,也可以按照name或者age。
删除整个表的数据
delete from 表名;
--删除表中所有数据与删除一张表不一样。
--前者还有表,只是数据为空;后者都没了。
先准备一个表fordelete
删除
删除后查看数据
对于基本的增删查改,我们只需要知道数据的 改 即可。
update 表名 set 成员名 = 新的值 条件;
--条件是为了锁定到表中具体的目标修改值
--只要是符合条件的都会被修改
现在我们按照name来修改李四的age为18
show databases;
--这里database是复数,因为不止有一个数据库
查表的数量
show tables;
--前提已经到了目标数据库
查表的性质
desc 表名;
--description的缩写
--前提已经到了目标数据库
select */具体的列名1, 列名2... from 表名;
-- * 是统配符,可以是任何类型,如果查询用 * 将会把所有列的数据查出来
-- 指定具体的列名则会只查询那一列的数据
全列
具体的某一列
多列查询不再演示。
以上为最简单的增删查改,现在将删改查与一些子句结合使用。
SQL 别名用于为 表 或 表中的列 提供临时名称。
SQL 别名通常用于使 表名 或 列名 更具可读性。
SQL 一个别名只存在于查询期间。
select 列名1 as 别名, 列名2...from 表名;
--只演示列名的别名
--别名只是存在于临时表中,没有修改原表
在查询时可以去掉某一列重复的数据。
select distinct 列名 from 表名
--去重的结果同样是在临时表中,不会对原表进行修改
select distinct 列名1, 列名2...from表名;
--除非这几列在相同的行与行之间有一样的值才会被去重
select 列名1, 列名2... from 表名 order by 列名 asc/desc;
--aes Ascending order 升序 如果要排可以省略asc,因为默认排升序
--desc Descending order 降序 要排降序不可省略desc
--排序同样是在临时表中
--如果按照排列的列名有多个,中间用逗号隔开,从左往右的顺序排
--比如按照第一个列名排完有相同的数据,就按照第二个的规则排,依次类推
--如果都是相同的数据,那排出来的就是随机的
一个列名规则
两个列名规则
where条件子句中一定要用到运算符
比较运算符
运算符 | 说明 |
> >= < <= | 大于 大于等于 小于 小于等于 |
= | 在where子句中表示相等的意思 对于null:如果null = null 返回null,而不是true |
<=> | 表示相等 对于null:如果null = null 返回true |
!= <> | 两个都表示不等于 |
between a and b | 表示[a,b],相当于 value >= a && value <= b |
in(操作数1, 操作数2...) | 有任一操作数则返回true |
is null | 是null |
is not null | 不是null |
like | 模糊匹配 %表示任意个字符 _表示一个字符 |
逻辑运算符
运算符
|
说明 |
and | 多个条件必须都为 true,结果才是 true 相当于 && |
or | 任意一个条件为 true, 结果为 true 相当于 || |
not | 条件为 true,结果为 false 相当于 ! |
where中不能使用别名,可以使用表达式
and优先级大于or
limit n;
--从0开始查n条数据
limit s, n;
--从s开始,查n条数据
limit n offset s
--同第二种
--建议使用第二种
组合使用可以按照需求任意组合使用,但要有前后顺序
删
delete from 表名 where 条件1, 条件2..., order by 列名1, 列名2..., limit n/s, n;
改
update 表名 set 列名1 = 值, 列名2 = 值..., where 条件, order by 列名1, 列名2... asc/desc, limit n/s, n;
查
select */列名1, 列名2... distinct from 表名, where 条件1, 条件2..., order by.. ,limit...;
有什么错误评论区指出,希望可以帮到你。