Insert语句(添加数据)
- 使用 INSERT 语句先表中插入数据。
入门案例:
- 创建一张商品表(id int ,goods_name varchar(10),price double);
- 添加2条记录。
CREATE TABLE goods (
id INT,
goods_name VARCHAR(10),
price DOUBLE);
-- 添加数据
INSERT INTO goods(id,goods_name,price) VALUES(10,'华为手机',2000);
INSERT INTO goods(id,goods_name,price) VALUES(20,'苹果手机',3000);
SELECT * FROM goods;
Insert语句使用细节
INSERT INTO goods(id,goods_name,price) VALUES('abc','华为手机',2000);
- 数据的长度应在列的规定范围内,例如不能将一个长度为80的字符串加入到长度为40的列中。
INSERT INTO goods(id,goods_name,price) VALUES(40,'华为手机华为手机华为手机华为手机',2000);
- 在values 中列出的数据位置必须与被加入的列的排列位置相对应。
INSERT INTO goods(id,goods_name,price) VALUES('vivo手机',40,2000);
- 字符和日期数据应包含在单引号中。
INSERT INTO goods(id,goods_name,price) VALUES(40,vivo手机,2000);
- 列可以插入空值[前提是该字段允许为空],insert into table value(null)。
INSERT INTO goods(id,goods_name,price) VALUES(40,'vivo手机',NULL);
- insert into table_name(列名…) values (),(),() 形式添加多条记录。
INSERT INTO goods(id,goods_name,price) VALUES(50,'三星手机',2500),(60,'菠萝手机',2600);
INSERT INTO goods VALUES(50,'三星手机',2500);
- 默认值的使用,当不给某个字段值时,如果有默认值就会添加默认值,否则报错。如果某个列没有指定not null,那么当添加数据时,没有给定值,则会默认给null。如果我们希望指定某个列的默认值,可以创建表时指定。
INSERT INTO goods(id,goods_name) VALUES(50,'三星手机');
update语句(修改数据)
- 使用update语句修改表中数据。
- 练习:
要求:在上面创建的employee 表中修改表中的记录。
- 将所有员工薪水修改为5000元。
UPDATE employee SET salary = 5000;
- 将姓名为小妖怪的员工薪水修改为3000元。
UPDATE employee SET salary = 3000 WHERE user_name = '小妖怪';
- 将老妖怪的薪水在原有基础上增加1000元。
UPDATE employee SET salary = salary +1000 WHERE user_name = '老妖怪';
update语句使用细节
- update语法可以用新值更新原有表行中的各列。
- set子句指示要修改哪些列和要给予哪些值。
- where子句指定应更新哪些行,如没有where子句,则更新所有的行(记录)。
- 如果需要修改多个字段,可以通过set 字段1 = 值1,字段2 = 值2…
UPDATE employee SET salary = salary +1000,job = '加油的' WHERE user_name = '老妖怪';
delete语句(删除数据)
- 使用delete语句删除表中数据。
- 练习:
DELETE FROM employee WHERE user_name = '老妖怪';
- 删除表中所有记录。
DELETE FROM employee;
delete语句使用细节
UPDATE employee SET job='' WHERE user_name = '老妖怪';
select语句(查询数据)
- 基本语法
- 注意事项(创建测试表学生表):
CREATE TABLE student(
id INT NOT NULL DEFAULT 1,
`name` VARCHAR(20) NOT NULL DEFAULT '',
chinese FLOAT NOT NULL DEFAULT 0.0,
english FLOAT NOT NULL DEFAULT 0.0,
math FLOAT NOT NULL DEFAULT 0.0);
INSERT INTO student(id,`name`,chinese,english,math) VALUES(1,'张三',80,90,95);
INSERT INTO student(id,`name`,chinese,english,math) VALUES(2,'李四',67,56,60);
INSERT INTO student(id,`name`,chinese,english,math) VALUES(3,'王五',83,98,77);
INSERT INTO student(id,`name`,chinese,english,math) VALUES(4,'宋江',75,66,76);
INSERT INTO student(id,`name`,chinese,english,math) VALUES(5,'关羽',82,84,67);
INSERT INTO student(id,`name`,chinese,english,math) VALUES(6,'黄蓉',55,85,45);
INSERT INTO student(id,`name`,chinese,english,math) VALUES(7,'赵云',75,65,30);
- 练习:
- 查询表中所有学生的信息。
SELECT * FROM student;
- 查询表中所有学生的姓名和对应的英语成绩。
SELECT `name`,english FROM student;
- 过滤表中的重复数据 distinct。
SELECT disTINCT english FROM student;
- 要查询的记录,每个字段都相同,才会去重。
SELECT disTINCT `name`,english FROM student;
-
使用表达式对查询的列进行运算。
-
在select语句中可使用as语句。
-
案例1:
- 统计每个学生的总分。
SELECT `name`,(chinese+english+math) FROM student;
- 在所有学生总分加10分的情况。
SELECT `name`,(chinese+english+math+10) FROM student;
- 使用别名表示学生分数。
SELECT `name` AS 姓名,(chinese+english+math+10) AS 总分 FROM student;
-
在where子句中经常使用的运算符。
-
案例2:
SELECT * FROM student WHERE `name` = '赵云';
- 查询英语成绩大于90分的同学。
SELECT * FROM student WHERE english > 90;
- 查询总分大于200分的所有同学。
SELECT * FROM student WHERE (chinese+english+math) > 200;
SELECT * FROM student WHERE math >60 AND id>4;
- 查询英语成绩大于语文成绩的同学。
SELECT * FROM student WHERE english > chinese;
- 查询总分大于200分 并且 数学成绩小于语文成绩,的姓王的学生。
SELECT * FROM student WHERE (chinese+english+math) > 200 AND math<chinese AND `name` LIKE '王%';
-
使用order by子句排序查询结果。
- order by指定排序的列,排序的列既可以是表中的列名,也可以是select语句后指定的列名。
- Asc升序[默认]、Desc 降序。
- order by 子句应位于select语句的结尾。
-
案例3:
- 对数学成绩排序后输出[升序]。
SELECT * FROM student ORDER BY math;
- 对总分按从高到低的顺序输出。
SELECT `name` AS 姓名,(chinese+english+math) AS 总分 FROM student ORDER BY 总分 DESC;
SELECT * FROM student WHERE `name` LIKE '王%' ORDER BY (chinese+english+math);
原文地址:https://www.jb51.cc/wenti/3280313.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。