首页 > 数据库 >数据库的CRUD语句

数据库的CRUD语句

时间:2023-04-03 20:55:45浏览次数:38  
标签:语句 name chinese -- 数据库 CRUD math student SELECT

Insert语句


values里面的值依次对应各个列

# 创建表goods
CREATE TABLE goods(
	id INT ,
	good_name VARCHAR(10),
	price DOUBLE);
	
# 插入数据
INSERT INTO goods (id ,good_name) -- 该处写上需要添加的字段,不一样都要添加

VALUES (12,'华为');
	

insert的注意事项

# 说明insert语句的细节

-- 已知:
CREATE TABLE goods(
	id INT ,
	good_name VARCHAR(10),
	price DOUBLE);


-- 1.插入的数据应与字段的数据类型相同

INSERT INTO goods(id,good_name,price)
VALUES('abc','小米手机',1000.0);-- 字母字符串不能存进int
# 但是在mysql底层会尝试将数字字符串转为Int

-- 2.数据的长度应该在列规定的范围内

INSERT INTO goods (id,good_name,price)
VALUES(34,'honorhonorhonorhonor',1234.4);-- 超出了列所规定的10个字符

-- 3.在values中列出的数据位置必须和被加入的列的排序位置相对应

INSERT INTO goods (id,good_name,price)-- 这个顺序不一样和列在表中的顺序一致和values中的顺序一致即可
VALUES(21,123.3,'小米');-- 数据和类型不对应

-- 4.字符和日期型数据应包含在单引号中

-- 5.列可以插入空值[前提是该字段允许为空]insert into table value(null)

INSERT INTO goods (id,good_name,price)
VALUES(12,'红米',NULL);-- 没有允许为空则不允许添加

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


INSERT INTO goods (id,good_name,price)
VALUES(5,'海尔',123.45),(6,'三星',17865.9); -- 添加成功

-- 7.如果给表中的所有字段添加数据,可以不写前面的字段名称

INSERT INTO goods 
VALUES (78,'小天才',235.2);-- 给所有的字段添加数据,省略字段名

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

-- 如果某个列没有指定not null,那么当添加数据的时候,没有给定值,则会默认给null


INSERT INTO goods(id,good_name)

VALUES(67,'小霸王');-- 此时没有给值的price将会默认给null



SELECT * FROM goods;





update语句(修改表中的数据)

如果where条件不写相当于对表中所有记录进行修改

# 演示update语句(修改下面创建的表的记录)

-- 已知
CREATE TABLE employee(
	id INT,
	`name` VARCHAR(10),-- 名字不确定
	sex CHAR(1),-- 性别只用一个字符即可
	birthday DATE,
	entry_date DATETIME,-- 要求自动更新
	job VARCHAR(20),
	salary DOUBLE,
	`resume` TEXT);-- resume简历 介绍
INSERT INTO t14 VALUES(12,"石文涛","男","2001/4/26","2023/2/1 23:1:23",
"高级程序员","50000.0","是一个很优秀的程序员")	

-- 1.将所有员工的薪水修改为5000 
# [如果没有带有where条件,会修改所有的记录,如果没有该项要求 慎用]

  UPDATE  employee
  SET salary = 5000.0;
-- 2.将石文涛的薪水修改为3000
UPDATE employee 
SET salary = 3000 WHERE  user_name = '石文涛';
  
  -- 3.将石文涛的薪水在原有的基础上增加1000
UPDATE employee 
SET salary = salary +1000
WHERE user_name = '石文涛';  
  

update的使用细节

delete语句(删除表中的数据)

当delete from tab_name[where] 当我们的删除语句没有带wheare时,将会把我们表中的所有记录都删除

# 演示update语句(修改下面创建的表的记录)

-- 已知
CREATE TABLE employee(
	id INT,
	`name` VARCHAR(10),-- 名字不确定
	sex CHAR(1),-- 性别只用一个字符即可
	birthday DATE,
	entry_date DATETIME,-- 要求自动更新
	job VARCHAR(20),
	salary DOUBLE,
	`resume` TEXT);-- resume简历 介绍
INSERT INTO t14 VALUES(12,"石文涛","男","2001/4/26","2023/2/1 23:1:23",
"高级程序员","50000.0","是一个很优秀的程序员")	

-- delete语句测试
INSERT INTO employee VALUES(13,'小妖怪','2021-2-23','2021-2-1 21:12:23','演员',234.9,'优秀的演员',"天才")

# 1.删除表中名字为小妖怪的记录
DELETE  FROM employee

WHERE(user_name = '小妖怪');

# 2.删除表中所有的记录

DELETE FROM employee;-- 将会删除表中所有的记录(一定小心)
**delete的使用细节**





delete的使用细节

不能单独删除某个记录的单个列值,但可以将该个列值设置为null**

感悟:delete是对单个记录使用的,而不能删除单个记录的某个列,仔细想想也不符合实际

select语句1(重要,面试会考)

distinct:取消重复行

-- 创建新的表

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,'韩顺平',23,56,23),
 (2,'天才',56,89,23),(3,'笨蛋',34,12,32),(4,'王者',89,98,97);
 SELECT * FROM student;
 
 -- select语句
 
 -- 1.查询表中所有学生的信息
 SELECT * FROM student;
 -- 2.查询表中所有学生的姓名和对应的英语成绩
 SELECT `name`,english FROM student;-- 只会显示该中所有的name和english信息
 
-- 3.过滤表中重复的数据
-- 注意:查出来的记录,每个字段都相同,才会去重
SELECT DISTINCT math FROM student;-- 本来有2个23,并去重成只保留一条

select2


  • 使用表达式对查询的列进行运算
# select语句的使用

-- 1.统计每个学生的总分

SELECT * FROM student;

-- select `name`,math from student;

SELECT `name`,(chinese+math+english) FROM student;-- 理解成chinese+math+english(并以该表达式作为列名)
-- 形成一个新的列并将计算作为列值
SELECT * FROM student;
-- 2.在所有学生总分加10的情况
SELECT `name`,(chinese+math+english+10) FROM student;

-- 3.使用别名表示学生的分数
SELECT `name`,(chinese+math+english) AS '总分' FROM student;

select3

  • 该题使用的表的数据

IN(set)set表示一个范围的集合


-- Select语句
-- 1.查询姓名为王者的学生成绩

SELECT * FROM student
WHERE `name` = '王者';
-- 2.查询英语成绩大于90分的同学

SELECT * FROM student 
WHERE english >90;

-- 3.查询总分大于200分的所有同学

SELECT * FROM student
WHERE (english +math +chinese)>200;

课堂练习

-- 1.查询math>20并且id>=3的学生成绩
SELECT * FROM student 
WHERE math>20 AND id >=3;

-- 2.查询英语成绩大于语文成绩的同学
SELECT * FROM student
WHERE english>chinese;
-- 3.查询总分>200并且数学成绩大于语文成绩的姓王的学生
# 王%表示名字以王开头的就可以

SELECT * FROM student
WHERE (english+math+chinese)>200 AND math>chinese AND `name` LIKE '王%';

SELECT * FROM student;


另外2个课堂练习


-- 1.查询英语分数在80-90之间的同学
# between...and...是闭区间
SELECT * FROM student
WHERE english BETWEEN 80 AND 90;
-- 2.查询数学分数为23 32的同学
SELECT * FROM student
WHERE math IN(23,32);
-- 3.查询所有姓王同学的成绩
SELECT * FROM student
WHERE `name` LIKE '王%';
-- 4.查询数学分大于80,语文分>80的同学
SELECT * FROM student
WHERE math>80 AND chinese>80;

-- 1.查询语文成绩在70-80的同学
SELECT * FROM student
WHERE chinese>70 AND chinese <80;
-- 2.查询总分为189,191,190的同学
SELECT * FROM student 
WHERE (chinese+math+english)=189 OR (chinese+math+english)=102;
-- 3.查询所有姓王或姓韩的同学的成绩
SELECT * FROM student
WHERE `name` LIKE '王%' OR `name` LIKE '韩%';

-- 4.查询数学比语文多一样多的同学的成绩
SELECT * FROM student
WHERE math=chinese;


select4

  • 该题使用的表的数据

默认就是asc升序
order子句放在select的最后

-- 演示order by 的使用
-- 1.对数学成绩排序后输出[升序]
SELECT * FROM student 
ORDER BY math ASC;-- 其实默认就是升序,不写也会升序
-- 2.对总分按照从高到底的顺序输出
SELECT `name`,(chinese+english+math) AS total_score  FROM student
ORDER  BY total_score DESC;

-- 3.对姓韩的总分排序输出(升序)
-- 总分没有需要自动合成一个列
SELECT* FROM student;
INSERT INTO student 
VALUES(5,'韩信',56,45,23);
SELECT `name`,(chinese+math+english)AS total_score FROM student 
WHERE `name` LIKE '韩%' ORDER BY total_score ASC;


标签:语句,name,chinese,--,数据库,CRUD,math,student,SELECT
From: https://www.cnblogs.com/swtaa/p/17281011.html

相关文章

  • mysql数据库优化大全
    数据库优化sql语句优化索引优化加缓存读写分离分区分布式数据库(垂直切分)水平切分MyISAM和InnoDB的区别:1.InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;2......
  • 阿里云RDS与ECS自建mysql数据库主从同步(GTID方式)
      1、GTID的概念全局事务标识:globaltransactionidentifiers;GTID是一个事务一一对应,并且全局唯一ID;一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致;GTID用来代替传统复制方法,不再使用MASTER_LOG_FILE+MASTER_LOG_POS开启复制。而是使用MASTER_AUT......
  • NBU上Oracle数据库恢复演练手册
    目录2. 1|01.1 Oracle数据库恢复 43.1 1|11.1.1 安装新的客户端 63.2 1|21.1.2 新建异机恢复文件 63.3 1|31.1.3 新建数据库实例 63.4 1|41.1.4 建立spfile文件 63.5 1|51.1.5 建立数据文件夹 113.6 1|61.1.6 启动数据库到nomount状态 123.7 1|71.1.7 列出备份信......
  • DBCA库安装后sql语句优化
    SQLplus下运行:altersystemsetdeferred_segment_creation=falsescope=spfile;altersystemsetevent='10949tracenamecontextforever,level1'scope=spfile;altersystemsetremote_dependencies_mode='SIGNATURE';altersystemset"......
  • 数据库表导出字详细描述文档
    需求:数据库表导出类似这种  实现方法SQL查询,然后赋值到excel或者word 案例SqlSELECT字段名=a.name,字段说明=isnull(g.[value],''),类型=CASEWHENb.name='varchar'ORb.name='nvarchar'THENb.name+'('+CONVERT(VARCHAR(20),COLUMNPROPERTY(a.id......
  • C语言逆向——switch语句中的大表和小表,本质上是内在存储空间降低
    连续值中抹去多项CPP代码:#include"stdafx.h"voidFun(intx){ switch(x){ case100: printf("100"); break; case101: printf("101"); break; case102: printf("102"); break; case106: printf("......
  • @Transactional(propagation=Propagation.REQUIRED)数据库事务的7种传播行为特性
      ClassA{@Transactional(propagation=propagation.REQUIRED)publicvoidaMethod{Bb=newB();b.bMethod();}}//inB.javaClassB{@Transactional(propagation=propagation.REQUIRED)publicvoidbMethod......
  • DML语句
    DML添加数据:1.给指定字段添加数据:insertinto表名(字段名1,字段名2...)values(值1,值2...);2.给全部字段添加数据:insertinto表名values(值1,值2...);3.批量添加数据:insertinto表名(字段名1,字段名2...)values(值1,值2...),(值1,值2...),(值1,值2...)...;insertinto表名values(值1,值2.........
  • C# 后台服务监控SQL Server数据库表改动并同步到MySQL数据库表
    需求将A服务器的sqlserver数据库item_mst表的数据同步到MySQL数据库Part表监控Item_mst表中item,description,overview的更改并同步到MySQL数据库 针对需求一,基本就是执行一次,单独写了个winform用来做这事针对需求二,写了个Windowsserviceapp Nuget安装 Dapper就是个ormSeril......
  • 零基础Go语言从入门到精通(数据库编程:02-Gorm 操作 MySQL 数据库)
    gin-gorm-api-example/main.goatmaster·cgrant/gin-gorm-api-example·GitHubhttps://github.com/cgrant/gin-gorm-api-example/blob/master/main.goGorm介绍ThefantasticORMlibraryforGolangGo语言的超棒的ORM类库功能强大:全功能ORM(几乎)关联(包含一个,包含多个,属......