MySQL-数据库CRUD语句

insert(添加数据)

#使用INSERT语句向表中添加数据
INSERT INTO table_name [(column [,column...])];
VALUES (value [,value..]);

 代码测试

DESC `employee`;    --查询表结构
INSERT INTO `employee` (`id`, `user_name`,`sex`,`birthday`,
		`entry_date`,`job`,`salary`,`resume`,`image`)
		VALUES ('1101001','张华','男性','1997-01-26','2022-01-10',
		'后端开发工程师','120000.6254','负责项目后端开发','图像');
SELECT * FROM `employee`;

INSERT INTO  `employee` (`id`, `user_name`,`sex`,`birthday`,`entry_date`,
		`job`,`salary`,`resume`,`image`)
		VALUES('1101002','李明','女性','1995-07-23','2022-01-12',
		'运维工程师','80000.6254','负责项目运维工作','图像');
SELECT * FROM `employee`;

细节说明

1)插入的数据应与字段的数据类型相同(例如:把'abc'添加到int类型会错误);

2)数据的长度应在列的规定范围内(例如:不能将一个长度为80的字符串加入到长度为40的列中);

3)在values中列出的数据位置必须与被加入的列的排列位置相对应;

4)字符和日期型数据应该包含在单引号中;

5)列可以插入null值【前提是该字段允许为null】(例如:inset into table value(null);

6)insert into tab_name (列名...) values (),(),() 形式添加多条记录;

7)如果是给表中的所有字段添加数据,可以不写字段名称(列名...);

8)默认值的使用,当不给某个字段值时,如果有默认值就会添加,否则报错;

测试代码

# insert 语句的细节
-- 插入的数据应与字段的数据类型相同,否则报错;
-- insert into goods (id,goods_name,price)
-- 		values ('abc',100,'cba');

-- 数据的长度应在列的规定范围内,否则报错;
-- insert into goods (id,goods_name,price)
-- 		values(123456789,'abcdefghijklmnopqrstuvwxyz',12.3456);

-- 在values中列出的数据位置必须与被加入的列的排列位置相对应;
-- insert into goods (id,goods_name,price)
-- 		values ('旺仔牛奶',123,6546548);

-- 字符和日期型数据应该包含在单引号中;
-- insert into goods (id,goods_name,price)
-- 		values(122,菠菜,2113546)

-- 列可以插入null值【前提是该字段允许为null,如果列不允许为空则需要not null在后面修饰】
INSERT INTO goods (id , goods_name,price)
		VALUES (123,'面筋',NULL);

-- insert into tab_name (列名...) values (),(),() 形式添加多条记录;
INSERT INTO goods (id,goods_name,price)
		VALUES (10,'变形金刚',123.321),
		(11,'葫芦娃',321.123),
		(12,'孙悟空',456.654);
SELECT * FROM goods;

-- 如果是给表中的所有字段添加数据,可以不写字段名称(列名...);
INSERT INTO goods
		VALUES (13,'哪吒',1987.789),
		 (14,'玉皇',147.741);
SELECT * FROM goods;

-- 默认值的使用,当不给某个字段值时,如果有默认值就会添加,否则报错;
-- 如果某列没有指定not null 那么添加数据时,没有给定值,就会默认给null
INSERT INTO goods(id,goods_name)
		VALUES(15,'太上老君');
SELECT * FROM goods;

CREATE TABLE goods2(
		id INT,
		goods_name VARCHAR(32),
		price DOUBLE NOT NULL DEFAULT 105);
SELECT * FROM goods2;
INSERT INTO goods2 (id ,goods_name)
		VALUES (1,'罗汉');
SELECT * FROM goods2;

update(修改数据)

#使用update语句修改表中的数据
UPDATE table_name
        SET col_name = expr1 [,col_name2= expr2...]
        [WHERE where_definition] -- 如果WHERE不写则是对表中的所有数据进行修改

测试代码

DESC employee;
SELECT * FROM employee;
-- 将所有员工的薪水修改为5000元,如果没有带Where语句则会对表中该列中的数据进行修改
UPDATE employee
		SET salary = 5000
	
-- 将表中张华的薪水修改为8000元
UPDATE employee
		SET salary = 8000
		WHERE user_name = '张华';
SELECT * FROM employee;

-- 将表中李明的薪水增加1200元
UPDATE employee
		SET salary = salary + 1200
		WHERE user_name = '李明';
SELECT * FROM employee;

-- 修改多个列
UPDATE employee
		SET salary = salary+1200, job = '大数据开发'
		WHERE user_name = '张华';
SELECT * FROM employee;

使用细节

1)UPDATE语法可以用新值更新原有表行中的各列;

2)SET子句指示要修改那些列和要给予的值;

3)WHERE子句指定应该更新的那一行。如果没有WHERE子句,则更新对应列中所有的行;

4)如需修改多个字段,可以通过set 字段1=值1,字段2=值2...

delete语句(删除数据)

delete form table_name
        [where where_definition]    --如果不添加这句,就会删除表中的所有数据

测试代码

# delete 语句演示
-- 删除表中名称为'李明'的记录
DELETE FROM employee
		WHERE user_name = '李明';
-- 删除表中的所有记录
DELETE FROM employee;
-- delete 语句不能删除某一列的值,(可以使用update设置为null或者' ')
UPDATE employee 
	SET job = ' ' 
	WHERE user_name = 'tom';
-- 使用delete语句仅删除记录,不删除表本身。
-- 如要删除表,使用drop table语句(drop table 表名)
DROP TABLE employee;
SELECT * FROM employee;

使用细节

1)如果不使用where子句,将删除表中的所有数据;

2)delete 语句不能删除某一列的值,(可以使用update设置为null或者' ');

3)使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句(drop table 表名)。

select(查询数据)

SELECT [DISTINCT] * | {column1,column2,column3...}
        FROM table_name;

注意事项:

1)selete指定查询列的数据;

2)column指定列名;

3)*号代表查询所有列;

4)from指定查询的表;

5)distinct指定显示查询结果时是否去掉重复数据。

测试代码

#创建学生表,导入学生信息
-- id,为int类型,不允许为null,默认值为1
-- name,为varvhar类型,不允许为null,默认值为' '
-- 语文成绩,为float类型,不允许为null,默认值为0.0
-- 英语成绩,为float类型,不允许为null,默认值为0.0
-- 数学成绩,为float类型,不允许为null,默认值为0.0

CREATE TABLE `student`(
		`id` INT NOT NULL DEFAULT 1,
		`name` VARCHAR(32) NOT NULL DEFAULT ' ',
		chinese FLOAT NOT NULL DEFAULT 0.0,
		english FLOAT NOT NULL DEFAULT 0.0,
		math FLOAT NOT NULL DEFAULT 0.0);
		
DELETE FROM student;
		
INSERT INTO student (id,`name`,chinese,english,math) 
		VALUES (1,'tom',98,96,99);
INSERT INTO student (id,`name`,chinese,english,math) 
		VALUES (2,'jake',88,86,89);
INSERT INTO student (id,`name`,chinese,english,math) 
		VALUES (3,'lucy',99,99,86);
INSERT INTO student (id,`name`,chinese,english,math) 
		VALUES (4,'saly',85,79,96);
INSERT INTO student (id,`name`,chinese,english,math) 
		VALUES (5,'neo',91,79,96);
INSERT INTO student (id,`name`,chinese,english,math) 
		VALUES (6,'pero',89,69,100);
INSERT INTO student (id,`name`,chinese,english,math) 
		VALUES (7,'nano',83,71,88);
-- 查询表中所有学生的信息
SELECT * FROM student;
-- 查询表中的所有学生的姓名和英语成绩
SELECT `name` ,english FROM student;
-- 过滤表中的重复信息distinct
SELECT DISTINCT english FROM student;
-- 要查询的记录,每个字段都相同,才会去重
SELECT DISTINCT `name`,english FROM student;  -- 只有两种条件都满足重复才会去重

使用表达式对查询的列进行运算

SELECT * | {column1|expression, column2|expression,...}
        FROM table_name;

在select语句中可以使用as语句

SELECT column_name as 别名 from 表名;

测试代码 

ALTER TABLE `student`
		ADD `总分` FLOAT NOT NULL
		AFTER `math`;
UPDATE student
		SET `总分` = chinese + english + math
		WHERE `id`=7;
SELECT * FROM student;

#1.统计每个学生的总分
SELECT `name`,(chinese+english+math) 
		FROM student;
#2.在所有学生总分加10分的情况
SELECT `name`,(chinese+english+math+10) 
		FROM student;
#3.使用别名表示学生分数
SELECT `name` ,(chinese+english+math) 
		AS total_score FROM student;
		
SELECT `name` AS `名字`,
		(chinese+english+math) AS `总分` 
		FROM student;
		
UPDATE student
		SET `总分` = chinese + english + math
		WHERE `name`='tom';
		

在where子句中经常使用的运算符

比较运算符>、<、<=、>=、=、<>、!=大于、小于、小于等于、大于等于、等于、不等于、不等于
BETWEEN ... ADN ...显示在某一区间的值
IN(set)显示在in列表中的值,例如:int(100,200)

LIKE '张%'

NOT LIKE ' '

模糊查询(查询姓张的人)

模糊查询

IS NULL判断是否为空
逻辑运算符and多个条件同时成立
or多个条件任意一个成立
not不成立,例如:where not(salary > 100)

测试代码 

#使用where子句,进行过滤查询
SELECT * FROM student;
-- 查询姓名为tom的同学成绩
SELECT * FROM  student
		WHERE `name`='tom';
-- 查询英语成绩大于90分的同学
SELECT `name`,`english` FROM student
		WHERE english > 90;
-- 总分大于200分的同学
SELECT `name`, `总分` FROM student
		WHERE `总分` > 200;
SELECT * FROM student
		WHERE (chinese + english + math) >200;
		
-- 查询math大于 90 并且 english小于90的学生成绩
SELECT * FROM student
		WHERE math>90 AND english <90;
-- 查询英语成绩大于语文成绩的同学
SELECT * FROM student
		WHERE english < chinese;
-- 查询总分大于200分,并且数学成绩小于语文成绩首字母带n的学生
SELECT * FROM student
		WHERE `总分`>200 AND math > chinese AND `name`LIKE 'n%';
		
-- 查询英语成绩在80~90之间的同学
SELECT `name`,english FROM student
		WHERE english BETWEEN 80 AND 90;
-- 查询数学成绩为88,98,100的同学
SELECT * FROM student
		WHERE math IN(88,98,100);
-- 查询所有名字中带o的同学
SELECT * FROM student
		WHERE `name` LIKE '%o%';
-- 查询数学分大于80,语文分大于80的同学
SELECT * FROM student
		WHERE math>80 AND chinese>80;
-- 查询语文分数在80-90之间的学生
SELECT * FROM student
		WHERE chinese BETWEEN 80 AND 90;
-- 查询总分为263,258,293的同学
SELECT `name`,`总分` FROM student
		WHERE `总分` IN(263,258,293);
-- 查询所有姓名里带n或者带a的同学
SELECT `name` FROM student
		WHERE `name` LIKE '%n%' OR `name` LIKE '%a%';
-- 查询数学比语文多3分以上的同学
SELECT `name`,`chinese`,`math` FROM student
		WHERE (math - chinese) >3;

 使用order by子句排序查询结果

SELECT column1,column2,column3...
        FROM table_name
        order by column asc|desc,...;

注意细节:

1)Order by 指定排序的列,排序的列既可以是表中的列名,也可以是select语句后指定的列名;

2)Asc升序【默认】、Desc 降序;

3)ORDER BY子句应位于SELECT语句的结尾。

测试代码

#order by子句使用
-- 对数学成绩排序后(升序)输出
SELECT `name`,math FROM student
		ORDER BY math ASC;
-- 对总分按从高到低(降序)的顺序输出
SELECT `name`,(chinese+english+math) AS `total_score` FROM student
		ORDER BY total_score DESC;	-- 可以用别名作为排序
-- 对名字最后个字母是n的同学成绩排序后(升序)输出
SELECT * FROM student
		WHERE `name` LIKE '%o'
		ORDER BY (chinese+english+math) ASC;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值