Mysql的增删改查
一、数据库操作
1.查询所有数据库
show databases;
2.使用某个数据库
如果我已经通过show databases知道有a、b、c三个数据库,那我想用数据库a怎么办呢?
use 数据库名;
eg:use a;
3.查询当前使用的数据库
如果我不知道当前数据库,所以想知道这个数据库是哪一个,我该用什么语句呢?0
select database();
4.创建数据库
如果我没有这个数据库,我现在想创建这个database,可以使用:
create database[if not exists] 数据库名 [default charset 字符集][collate 排序规则];
最常见的应用就是,如果一个数据库a不存在,则创建这个数据库,且设置字符集为utf8:
create database a if not exists charset=utf8
5.删除数据库
等到一系列操作做完之后,我想删除这个数据库a,要用什么操作?
drop database [if exists] 数据库名 ;
eg:drop database if exists a;
二、表操作
2.1 表的增删改操作
假如我们通过
·create database if not exists a charset=utf8;#创建数据库a
·use a;#使用数据库a
·select database;#查看当前使用的数据库,确认是在使用数据库a
通过这些操作我们已经创建了一个数据库a,并且在当前数据库了。
但里面还没有表格什么的,没有表格算什么数据库?所以我肯定想创建表,查询表、修改表,删除表。
那接下来就一一看看这些操作吧!
1.创建表格
create table 表名(
字段 字段类型 COMMENT 字段注释,
字段 字段类型 COMMENT 字段注释,
字段 字段类型 COMMENT 字段注释
)[COMMENT 表注释];
eg:create table Person(
name char(20) comment '姓名',
sex char(2) comment '性别',
age int comment '年龄'
)
ps:最后一个字段不要逗号,且上述代码中用[]框起来的表示可以有也可以没有,但[]这个符号使用的时候不要加上去哦。
2.修改表格
1)添加字段
如果最开始没有加字段什么的,我现在想增加字段怎么办呢?
ALTER TABLE 表名 ADD 字段名 字段类型 【comment 字段注释】【约束】
eg:alter table a add nickname varchar(20) comment ‘昵称’;
2)修改字段类型(modify )
如果数据库 a中的表Person中的字段name我想修改一下字段类型,改为varchar(20),可以使用以下操作:
alter table 表名 modify 字段名 新字段类型(长度)
3)修改字段名和字段类型(change)
如果这个表中的某个字段名字和类型都不对,那么我们就直接change一下:
alter table 表名 change 旧字段名 新字段名 新字段类型 新字段类型 [comment 注释][约束];
eg:ALTER TABLE Person CHANGE name studentname VARCHAR(20) COMMENT ' 学生姓名';
PS:数据库不区分大小写,缺失有有点乱哈!
4)删除字段
如果这个字段我不想用呢?我如果想要删除该怎么做呢?
ALTER TABLE 表名 DROP 字段名;
eg:ALTER TABLE Person DROP name;
3.删除表格
最后表格不想要了,怎么删除表格呢?
DROP TABLE [IF EXISTS] 表名;
eg: DROP TABLE IF EXISTES Person;
三 数据操作(DML)
如果我有了数据库,数据库中有表格,那么怎么操作数据库中的数据呢?想要增加数据,修改数据吗,删除数据,以及最最最重要的查询数据(又tm给我去看视频,学习啊,去给我学习啊!)
3.1 添加数据(INSERT)
给某几个字段添加数据(没有添加的自然就是null了)
INSERT INTO 表名 (字段1,字段2,...)VALUES (value1,value2,...);
给所有字段添加数据
INSERT INTO 表名 VALUES(value1,value2,...);
批量添加数据
INSERT INTO 表名 (字段1,字段2,…)VALUES (value1,value2,…),
(value1,value2,…),
…
(value1,value2,…) ;
3.2 修改数据(UPDATE)
更新某些字段的信息
UPDATE 表名 SET 字段1=value1,字段2=value2,字段3=value3 where 条件;
这个其实已经涉及到查询了,where,where玩的花了我现在还真是把握不住啊!
3.3 删除数据(DELETE)
删除指定数据:
DELETE FROM 表名 WHERE 条件;
删除所有数据
DELETE FROM 表名;
还有一个删除所有数据的但是要慎用的:
TRUNCATE TABLE 表名;
我猜TRUNCATE 还可以TRUNCATE DATABASE 数据库名;
3.4 查询数据(SELECT)
大招来了大招了,查询数据,查询数据的时候条件是非常复杂的。
大概可以分解成
SELECT
字段列表
FROM
表名称
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后的条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
上面是最基础的,比较复杂的是设置一些别名
SELECT
字段1 [AS 别名1],字段2 [AS 别名2],...
FROM
表名
;
当然别名也可以直接写不用这个AS
SELECT
字段1 [别名1],字段2 [ 别名2],...
FROM
表名
;
还有不准人家重复的用DISTINCT
SELECT
DISTINCT 字段列表
FROM
表名
;
ps:这个DISTINCT后面还要继续学啊!他的用法可不像表面上那么简单。
从我认为比较难的开始入手吧!
一)条件列表
条件列表我觉得最难的就是很多,但是可以分类记忆,比如在数值和字符串是最长使用的,那我们就按照最长使用的来搞。
1)数值类
数值最常见的就是大于 小于 大于等于 小于等于 在什么范围内啊!
再复杂一点就是数值的函数值大于 小于 等于 大于等于 小于等于 在什么范围内啊!
先看最常见的大于 小于 等于 大于等于 小于等于(我好啰嗦啊哈哈哈)
大于小于等于就是常用的那些符号啊!不用记了,不一样的是不等于,在什么连续范围内,在离散范围内,为空,在模糊范围内
比较运算符 | 功能 | 备注 | 示例 |
---|---|---|---|
!=或<> | 不等于 | 得认识<>,用的时候可以常用!= | SELECT * FROM Person WHERE name<>‘张三’; |
BETWEEN AND | 在连续范围[A,B]内 | 包括边界 | SELECT * FROM Person WHERE age BETWEEN 20 AND 30; |
IN(…) | 在列举的这些值内 | 这个可以用数字,但应该是IN(另一个表的筛选结果)当然筛选结果只能有一个字段 | SELECT * FROM Person WHERE name IN (‘张三’,‘李四’,‘王五’); |
IS NULL | 为空 | 那不得学一下哪些字段可以设为NULL | SELECT* FROM Person WHERE sex IS NULL; |
like 占位符 | 模糊匹配 | (_匹配单个字符,%匹配任意个字符,[]是正则化花表达式) | 找出名字中第一个字是刘的:SELECT * FROM Person WHERE name like ‘刘%’;找出名字是x薇薇的:SELECT * FROM Person WHERE name like ‘_薇薇’; |
逻辑运算符 | 功能 | 备注 | 示例 |
---|---|---|---|
AND && | 与运算 | SELECT * FROM Person WHERE 条件1 AND 条件2; | |
OR | 或运算 | ||
NOT ! | 非运算 |
关于模糊查询中用到正则化表达式的可以先看看这个:https://blog.csdn.net/fanzhi16/article/details/88287745?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169398882416800211537103%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=169398882416800211537103&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-88287745-null-null.142v93control&utm_term=%E6%95%B0%E6%8D%AE%E5%BA%93%E6%A8%A1%E7%B3%8A%E5%8C%B9%E9%85%8D&spm=1018.2226.3001.4187
欸,怎么看下来好像不止用了数值的东西啊。
2)数值的函数类(聚合函数 and 普通函数)
函数 | 功能 | 备注 | 示例 |
---|---|---|---|
COUNT | 统计数量 | 查询年龄为20的人数:SELECT COUNT(id) FROM Person WHERE | |
MAX | 最大值 | ||
MIN | 最小值 | ||
AVG | 平均值 | ||
SUM | 求和 |
上面这个是聚合函数,聚合函数是针对每一列的,对一个字段进行聚合,但是如果我们想求几个字段的平均值我们可以直接用加号。
比如有一张学生表Student (学生姓名,语文成绩,数学成绩),查询平均成绩大于60分的所有学生。
SELECT *,(语文成绩+数学成绩)/2 AVRAGE_SCORE FROM Student;
二)分组查询(GROUP BY)
SELECT * FROM 表名 WHERE 条件字段 GROUP BY 分组字段 HAVING 分组后的条件字段;
分组字段我觉得用的时候可以拿一个例子来思考一下就出来的。
比如STUDENT表数据长这样:
张三 男 20
李四 女 15
张武 男 27
李六 女 18
那如果用
SELECT GENDER,(男表或女表的聚合函数) FROM STUDENT GROUP BY gender;
就可以分成男表和女表;
男表是:
张三 男 20
张武 男 27
女表是:
李四 女 15
李六 女 18
注意:GROUP BY 前面的SELECT一定要包含分组字段或者分组字段的聚合函数,没有办法把所有的字段(原表的所有字段)都显示出来。
三)排序查询(ORDER BY)
排序查询只需要记住ASC(默认)和DESC(降序非默认)
SELECT * FROM emp ORDER BY 字段1 排序方式1 ,字段2 排序方式2...;
只有当第一个字段的排序一致的时候才会按第二个字段的排序方式进行排序文章来源:https://www.toymoban.com/news/detail-697608.html
四) 分页查询 (LIMIT)
SELECT * FROM emp LIMIT 起始索引,结束索引;
ps:如果其实索引为0,也可以直接文章来源地址https://www.toymoban.com/news/detail-697608.html
SELECT * FROM emp LIMIT 查询条数; #就可以查询到前10条了。
到了这里,关于Mysql学习之——增删改查语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!