- #使用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 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 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 [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 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';
-
| 比较运算符 | >、<、<=、>=、=、<>、!= | 大于、小于、小于等于、大于等于、等于、不等于、不等于 |
| 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;
- 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;