(四)MySQL语句的基本操作

v(*゜ー゜*)小白发文,若有不足,欢迎大佬来斧正 v(๐॔˃̶ᗜ˂̶๐॓)*

一、创建表

#格式如下:
	CREATE TABLE 表名(
	    #如果是数字类型可选择AUTO… 说明该字段是自动递增的
	字段名 字段类型[NOT NULL] [AUTO_INCREMENT],		
	[字段名 字段类型],
	……
	[字段名 字段类型],
	[PRIMARY KEY(字段名)]
	);
	
	
#举例:
	CREATE TABLE student(
	id INT AUTO_INCREMENT,
	name VARCHAR(10),
	class VARCHAR(8),
	PRIMARY KEY(id)
	);

二、修改表

1.给表添加一个字段

#格式:
	ALTER TABLE 表名 ADD COLUMN 字段名 字段类型;

#举例:
	ALTER TABLE student ADD COLUMN sex VARCHAR;

2.添加多个字段

#格式:
	ALTER TABLE 表名 ADD 字段1名 字段1类型,……,ADD 字段名n名 字段n类型;

#举例:
	ALTER TABLE student ADD age, ADD grade;

3.修改字段数据类型

#格式:
	ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型;

#举例:
	ALTER TABLE student MODIFY COLUMN class INT;

4.修改字段名称

#格式:
	ALTER TABLE 表名 CHANGE COLUMN 原字段名 新字段名 字段类型;

#举例:
	ALTER TABLE student CHANGE COLUMN class classes VARCHAR;

5.删除表的一到多个字段

#格式:
	ALTER TABLE 表名 DROP COLUMN 字段名;
	ALTER TABLE 表名 DROP COLUMN 字段1,……,DROP COLUMN 字段n名;

#举例:
	ALTER TABLE student DROP COLUMN grade,DROP COLUMN sex;

6.删除表

#格式:
	DROP TABLE 表名;

#举例:
	DROP TABLE student;

7.查看表结构

#格式:
	DESCRIBE 表名;

三、简单查询表

1.查询所有列

#格式:
	SELECT * FROM 表名   # *就是所有字段的缩写

2.更换别名

#未来可能很多张表一起查询,可能字段有重名,那么就可使用别名标记重名字段
#格式:
	SELECT 字段1'字段1新名',……,字段n名 '字段n新名' FROM 表名;

#举例:
	SELECT class 'classes', name 'user' FROM student;

3.查询指定列

#格式:
	SELECT 字段1,……,字段n名 FROM 表名;

4.合并列查询

#列是可以进行数值运算的
#格式:
	SELECT CONCAT(字段1,'字符',字段2) '别名' FROM 表名;

#举例:
	SELECT CONCAT(name,'-',class) '班级-姓名' FROM student;

5.查询常量

#格式:
	SELECT 字段名,'常量' FROM 表名;

6.查询时去除重复数据

#格式:
	SELECT DISTINCT 字段名 FROM 表名;

四、插入数据

	/*
	 * 表的主键是不可以重复的
	 * 表的key字段是整数并且是字段增长的,如果不填,就是默认自动增长
	 */
#格式:
	INSERT INTO 表名 VALUES (字段1的值,……,字段n的值);
	INSERT INTO 表名 VALUES (字段1的名,……,字段n的名)
VALUES (字段1的值,……,字段n的值);
	#批量插入
	INSERT INTO 表名 VALUES
(字段1的值,……,字段n的值),
(字段1的值,……,字段n的值),
(字段1的值,……,字段n的值);

五、修改数据

1.修改所有行

#格式:
	UPDATE 表名 SET 字段1=, 字段n名 =;

2.有条件的修改

#格式:
	UPDATE 表名 SET 字段1=, 字段n名 =WHERE 条件;

#举例:
	UPDATE student SET class = '三班', grade = '二年级' WHERE age > 4;

3.删除数据

#格式:
	DELETE FROM 表名 WHERE 条件;

六、条件查询表

1. 比较条件

	#运算符:=   !=   >   <   >=   <=
	#文字:between and;    AND;    OR
#格式:
	SELECT * FROM 表名 WHERE 条件;
	SELECT * FROM 表名 WHERE 条件 AND 条件 OR 条件;

2.判空条件

#条件含义:
	=''					是空字符串
	IS NULLNULLIS NOT NULL			不是NULL<><>''				非空字符串,也不是NULL

3.模糊条件

顾名思义就是查询字段值是否包含某些子串

语句意思
LIKE包含
NOT LIKE不包含
#格式
	#查询字符串中间有'字符'
	SELECT * FROM 表名 WHERE 字段名 LIKE'%字符%';
	#查询的字段有三个字,中间字是'字符'
	SELECT * FROM 表名 WHERE 字段名 LIKE '_字符_';
	#查询'字符'开头的字段
	SELECT * FROM 表名 WHERE 字段名 LIKE '字符%';
	/*
	 * _ 是匹配0到1个字符
	 * % 是匹配0到多个字符
	 */

七、常用查询

1.聚合查询

运用的函数:sum、avg、max、min、count

#格式:
	SELECT SUM(字段名) FROM 表名 WHERE 条件;
	SELECT AVG(字段名) FROM 表名 WHERE 条件;		#求平均值
	SELECT COUNT(*) FROM 表名;					#计算表有多少行

2.排序查询

正序和倒序是可以一起使用的

#格式:
	ORDER BY 字段              #正序
	ORDER BY 字段 ASC          #正序,正序可以省略ASC
	ORDER BY 字段 DESC		   #倒序
	#以字段1正序排列,字段1相同的以字段2排序
	SELECT * FROM 表名 ORDER BY 字段1,字段2……;
	#正序和倒序一起使用
	SELECT * FROM 表名 ORDER BY 字段1,字段2 DESC;
	#在某条件下进行排序查询	
	SELECT * FROM 表名 WHERE 条件 ORDER BY 字段1;

3.分页查询

就是在普通的查询后面跟上limit,limit要放在where的条件\排序后面,偏移量 = (页数-1) * 步长

#格式:
	SELECT * FROM 表名 LIMIT 偏移量,步长;

#举例:
	SELECT * FROM student LIMIT 3,4;	#查询3-6行数据

4.分组查询

(1)按照指定的一个或多个字段分组查询(主要用于统计数据)分组查询多数时候与聚合查询一起使用
(2)可以分组之后,再分组 都是在完整的group by分组下计数的
(3)可以对分组查询的聚合查询结果做筛选,用having

#格式:
	SELECT 字段1,COUNT(字段1) FROM 表名 GROUP BY 字段1;
	SELECT 字段1,COUNT(字段1),字段2,COUNT(字段2) WHERE 条件
GROUP BY 字段1,字段2;
	SELECT 字段1,COUNT(字段1) FROM 表名 GROUP BY 字段1HAVING 条件

八、判断函数

1.case流程控制函数

#举例(1):
SELECT name,
(
	CASE sex
	WHEN 1 THEN '男'
	WHEN 2 THEN '女'
	……
	ELSE '未知'
	END
) as sex
	FROM student;

#举例(2):
SELECT name,
(
	CASE
	WHEN sex = 1 THEN '男'
	WHEN class = 1 THEN '一班'
	……
	ELSE '未知'
	END
)
	FROM student;

2.IF函数

#格式:
	IF(expr1,expr2,expr3);
	/*
	 * 第一个参数:条件
	 * 第二个参数:如果为真,则
	 * 第三个参数:如果为假,则
	 */

	IFNULL(expr1,expr2);
	/* 若expr1不为空,则返回expr1 否则返回expr2 */

#举例:
	SELECT name,IF(sex <= 1,'正常性别','异常性别') FROM student;
	SELECT id,name,IFNULL(class,'班级是NULL') FROM student;

3.字符串的集合操作ELT

可以用来判断连续的数字,有点像C++的enum枚举

#格式:
	ELT(N,str1,str2,str3,……);
	/*
	 * 如果N=1,返回str1;N=2,返回str2……如果N不是参数的数量,则返回NULL
	 * 返回的str也可以是字段
	 */

#举例:
	SELECT ELT(class,'一班','二班','三班') '班级' FROM student;



路漫漫其修远兮,吾将上下而求索

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ac君

在你们的鼓励下我会多多分享代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值