首页 > 数据库 >【零基础学Mysql】创建表以及数据库crud语句详细讲解

【零基础学Mysql】创建表以及数据库crud语句详细讲解

时间:2024-12-20 12:57:14浏览次数:5  
标签:语句 INSERT name -- INTO crud VALUES student Mysql

前面文章我们学习了对数据库的操作,本章内容学习一下对表的操作,包括如何创建表,修改表的结构,以及对表中数据的操作。希望对你有所帮助。

文章目录

一. 创建数据表

1.下面我们直接演示数据表的创建语句:

  • field:指定列名
  • datatype:指定列名的数据类型
  • character set:若不指定字符集,就与所在数据库的字符集保持一致
  • collate:校队规则,若不指定,就与所在数据库的字符集保持一致
-- 演示表的创建
CREATE TABLE lrx_t1(
	field1 datatype,
	field2 datatype,
	field3 datatype
)CHARACTER SET 字符集 
 COLLATE 校队规则 
 ENGINE 存储引擎;

2.删除数据表

drop table lrx_t1;

3.下面我们做一个练习
在这里插入图片描述

#创建表的课堂练习
-- 字段属性
-- Id 整形
-- name 字符型
-- sex 字符型
-- brithday 日期型(date)
-- entry_date 日期型 (date)
-- job 字符型
-- Salary 小数型
-- resume 文本型
-- 自己一定要练习一把
CREATE TABLE `emp` (
	id INT, 
	`name` VARCHAR(32),
	 sex CHAR(1), brithday DATE,
	entry_date DATETIME, 
	job VARCHAR(32), 
	salary DOUBLE, `resume` TEXT) CHARSET utf8 COLLATE utf8_bin ENGINE INNODB;
 -- 添加一条
INSERT INTO `emp` VALUES(100, '小妖怪', '男', '2000-11-11',
'2010-11-10 11:11:11', '巡山的', 3000, '大王叫我来巡山');
-- 查询
SELECT * FROM `emp`;

二. 修改表结构

这是对表的结构进行修改,比如添加列,删除列,修改表的名字,字符集,引擎等

  • 添加列
alter table lrx_t1 add `name` varchar(32) not null default '';
  • 删除列
alter table lrx_t1 drop `name`;
  • 修改表的名字
rname table lrx_t1 to liu;
  • 修改列,比如修改名字的长度为60,注意,我们已经改了表名
altre table liu modify `name` varchar(60)
  • 列名·name`改为 my_name
alter table liu change `name` my_name varchar(32) not null default ' ';
  • 修改表的字符集为utf8
alter table liu character set utf8;
  • 显示表的结构
desc liu;

三. 数据库CRUD语句

3.1Insert语句(添加数据)

1.基本语句

insert into table_name values (vaulue...);

2.使用细节

    1. 插入的数据应与字段的数据类型相同。
      比如 把 ‘abc’ 添加到 int 类型会错误
      INSERT INTO goods (id, goods_name, price)
      VALUES(‘雷军’, ‘小米手机’, 2000);
    1. 数据的长度应在列的规定范围内,例如:不能将一个长度为 80 的字符串加入到长度为 40 的列中。
      INSERT INTO goods (id, goods_name, price)
      VALUES(40, ‘vovo 手机 vovo 手机 vovo 手机 vovo 手机 vovo 手机’, 3000);
    1. 在 values 中列出的数据位置必须与被加入的列的排列位置相对应。
      INSERT INTO goods (id, goods_name, price) – 不对
      VALUES(‘vovo 手机’,40, 2000); –
    1. 字符和日期型数据应包含在单引号中。
      INSERT INTO goods (id, goods_name, price)
      VALUES(40, vovo 手机, 3000); – 错误的 vovo 手机 应该 ‘vovo 手机’
    1. 列可以插入空值[前提是该字段允许为空],insert into table value(null)
      INSERT INTO goods (id, goods_name, price)
      VALUES(40, ‘vovo 手机’, NULL);
    1. insert into tab_name (列名…) values (),(),() 形式添加多条记录
      INSERT INTO goods (id, goods_name, price)
      VALUES(50, ‘三星手机’, 2300),(60, ‘海尔手机’, 1800);
    1. 如果是给表中的所有字段添加数据,可以不写前面的字段名称
      INSERT INTO goods VALUES(70, ‘IBM 手机’, 5000);
    1. 默认值的使用,当不给某个字段值时,如果有默认值就会添加默认值,否则报错,如果某个列 没有指定 not null ,那么当添加数据时,没有给定值,则会默认给 null , 如果我们希望指定某个列的默认值,可以在创建表时指定
      INSERT INTO goods (id, goods_name)
      VALUES(80, ‘格力手机’);
      SELECT * FROM goods;

      INSERT INTO goods2 (id, goods_name)
      VALUES(10, ‘小米手机’);
      SELECT * FROM goods2;

3.2Update语句(更新数据)

  1. 使用update语句来修改表中的数据
    在这里插入图片描述
  1. 基本使用,我们先看一个题目
    在这里插入图片描述
-- 演示 update 语句
-- 要求: 在上面创建的 employee 表中修改表中的纪录
-- 1. 将所有员工薪水修改为 5000 元。[如果没有带 where 条件,会修改所有的记录,因此要小心]
UPDATE employee SET salary = 5000
-- 2. 将姓名为 小妖怪 的员工薪水修改为 3000 元。
UPDATE employee
	SET salary = 3000
	WHERE user_name = '小妖怪'

-- 3. 将 老妖怪 的薪水在原有基础上增加 1000 元	
INSERT INTO employee
	VALUES(200, '老妖怪', '1990-11-11', '2000-11-11 10:10:10', '捶背的', 5000, '给大王捶背', 'd:\\a.jpg');
	
UPDATE employee
	SET salary = salary + 1000
	WHERE user_name = '老妖怪' -- 可以修改多个列的值
UPDATE employee
	SET salary = salary + 1000 , job = '出主意的'
    WHERE user_name = '老妖怪' 

3.updata使用的四个细节

  • 1.UPDATE语法可以用新值更新原有表行中的各列。
  • 2.SET子句指示要修改哪些列和要给予哪些值。
  • 3.WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行(记录),因此老师提醒一定小心。
  • 4.如果需要修改多个字段,可以通过set字段1=值1,字段2=值2…

3.3Delect语句(删除数据)

1.使用delect语句删除表中数据
在这里插入图片描述

2, 快速入门案例解答

-- 删除表中名称为’老妖怪’的记录。

DELETE FROM employee
	WHERE user_name = '老妖怪'; 
	
-- 删除表中所有记录, 老师提醒,一定要小心
DELETE FROM employee; 

-- Delete 语句不能删除某一列的值(可使用 update 设为 null 或者 '')
UPDATE employee
	 SET job = ''
	 WHERE user_name = '老妖怪';

-- 要删除这个表
DROP TABLE employee;
  1. delect使用细节
  • 1.如果不使用where子句,将删除表中所有数据。
  • 2.Delete语句不能删除某一列的值(可使用update设为null或者")
  • 3.使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table 表名;

3.4Select语句(查找数据)

查询语句我们这里分为单表查询和双表查询

3.4.1单表查询

1.基本语法
在这里插入图片描述

  • 1.Select指定查询哪些列的数据。
  • 2.column指定列名。
  • 3.*号代表查询所有列。
  • 4 From指定查询哪张表。
  • 5.DISTINCT可选,指显示结果时,是否去掉重复数据

2,下面我们演示一下案例,在演示之前,我们先创建一个表

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,'韩顺平',89,78,90);
INSERT INTO student(id,NAME,chinese,english,math) VALUES(2,'张飞',67,98,56);
INSERT INTO student(id,NAME,chinese,english,math) VALUES(3,'宋江',87,78,77);
INSERT INTO student(id,NAME,chinese,english,math) VALUES(4,'关羽',88,98,90);
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);
INSERT INTO student(id,NAME,chinese,english,math) VALUES(8,'韩信',45,65,99);
SELECT * FROM student;

表创建之后,我们看一下题目要求
在这里插入图片描述

-- 查询表中所有学生的信息。
SELECT * FROM student; 
-- 查询表中所有学生的姓名和对应的英语成绩。
SELECT `name`,english FROM student; 
-- 过滤表中重复数据 distinct 。
SELECT DISTINCT english FROM student;
 -- 要查询的记录,每个字段都相同,才会去重
SELECT DISTINCT `name`, english FROM student;
  1. 使用表达式对查询的列进行运算
    在这里插入图片描述>
  2. 在 select 语句中可使用 as 语句
    在这里插入图片描述

5.在 where 子句中经常使用的运算符
在这里插入图片描述

下面我们继续根据上面创建的表来练习题目
在这里插入图片描述

-- select 语句
-- 查询姓名为赵云的学生成绩
SELECT * FROM student
	WHERE `name` = '赵云' 
-- 查询英语成绩大于 90 分的同学
SELECT * FROM student
	WHERE english > 90
-- 查询总分大于 200 分的所有同学
SELECT * FROM student
	WHERE (chinese + english + math) > 200
  1. 使用 order by 子句排序查询结果
    在这里插入图片描述
-- 演示 order by 使用
-- 对数学成绩排序后输出【升序】。
SELECT * FROM student
	ORDER BY math; 
-- 对总分按从高到低的顺序输出 [降序] -- 使用别名排序
SELECT `name` , (chinese + english + math) AS total_score
 	FROM student
	ORDER BY total_score DESC;
 -- 对姓韩的学生成绩[总分]排序输出(升序) where + order by
SELECT `name`, (chinese + english + math) AS total_score 
	FROM student
	WHERE `name` LIKE '韩%' ORDER BY total_score;

标签:语句,INSERT,name,--,INTO,crud,VALUES,student,Mysql
From: https://blog.csdn.net/qq_74232707/article/details/144604860

相关文章

  • 聊一聊坑人的 C# MySql.Data SDK
    一:背景1.讲故事为什么说这东西比较坑人呢?是因为最近一个月接到了两个dump,都反应程序卡死无响应,最后分析下来是因为线程饥饿导致,那什么原因导致的线程饥饿呢?进一步分析发现罪魁祸首是MySql.Data,这就让人无语了,并且反馈都是升级了MySql.Data驱动引发,接下来我们简单聊一下。二:M......
  • MySQL 数据库深度解析:历史、技术(b树和b+树)
    一.MySQL的历史与作用        MySQL诞生于90年代,它具有免费开源的特性,这使得其在互联网开发领域广受欢迎,逐渐成为了互联网开发的主流标准。数据库最为核心的任务就是存储数据,并且能够实现快速查询,而在这当中,索引起着极为关键的作用,它是加快查询速度的重要手段,能......
  • Window安装Mysql8
    文章目录下载zip安装包:安装前配置解压zip包到安装目录配置环境变量配置初始化的my.ini文件安装mysql初始化数据库安装服务更改密码授权远程数据库远程连接mysql时遇到下列问题:数据库报only\_full\_group\_by错误,解决方案下载zip安装包:MySQL8.0ForWindowszip包下......
  • MySQL 环境配置与 Navicat 安装教程
    引言对于很多初学者来说,学习和使用MySQL数据库是开发过程中不可或缺的一环。然而,如何正确安装和配置MySQL数据库,并结合图形化管理工具如Navicat来管理数据库,却常常成为入门的难点。本篇博客将从零开始,详细讲解MySQL的安装和基础配置,以及如何安装和使用Navicat来更高......
  • 从0开始教你,如何进行前后端的数据库(MySQL)连接
    引言很多小伙伴会好奇,如何从零开始实现一个完整的前后端项目,并将数据存储在MySQL数据库中,然后我们可以进行实时的更新,查询,修改,增加删除。比如一个简单的留言板系统,用户可以通过前端提交留言,后端将数据存储到MySQL中,再通过API(如axios)将数据展示在前端页面上。又或者一个......
  • MySQL锁-行级锁、表级锁、全局锁
    MySQL锁机制MySQL中锁主要分为以下几种:全局锁表级锁表锁元数据锁意向锁行级锁行锁间隙锁临建锁–首先需要了解共享锁和排他锁共享锁和排他锁在MySQL中锁可以分为两大类,分别是shared(S)locks和exclusive(X)locks。S锁,称为共享锁(也被称为读锁),事务在读......
  • 【零基础学Mysql】一文了解数据库及其常用数据类型
    大家好,我是whisperrr.文章目录一.了解数据库1.1数据库三层结构-破除MySQL神秘1.2创建数据库1.3查看、删除数据库1.4备份恢复数据库二.Mysql常用数据类型(列类型)2.1数值型(整数)的基本使用2.1.1如何定义一个有符号的整数2.1.2如何定义一个无符号的整数2.2bit(位)类......
  • mysql期末大题满分指南(ER图关系模型+mysql代码题)
    好久没有写博客最近开始期末周,完成期末项目、答辩、准备笔试考试。所以也是信息收集学了将就1/2 昨天晚上刚刚结束了mysql期末考试就此来写一个博客。题型:一、选择、填空、判断、简答题推荐这位老哥的题库非常全考试做选择题和填空题都非常顺利。预计选择、填空、判......
  • 225Python大学生社团管理系统(Pycharm Flask Django Vue mysql)
    文章目录项目介绍和开发技术介绍具体实现截图开发技术开发与测试:设计思路系统测试可行性分析核心代码部分展示文章目录/写作提纲参考源码/演示视频获取方式项目介绍和开发技术介绍对于网站的前台设计,要保证主界面的整洁有序,能够抓住人的眼球,不会产生视觉疲劳,更重要......
  • 12、MySQL插入10万条数据
    createdatabaselogin;uselogin;createtableusers(idintprimarykeyauto_increment,namevarchar(20)notnull,passwordvarchar(50)notnull);createtablelogin_times(namevarchar(20)primarykey,count_timesint);createtriggertrigger_countafterins......