本博客是【韩顺平讲MySQL】零基础一周学会MySQL -sql mysql教程 mysql视频 mysql入门视频的学习笔记

文章目录

  • 修改表
    • 应用实例
  • 数据库CRUD
    • insert基本使用
      • 案例1
      • 案例2
    • insert语句的细节
    • update语句
    • update语句的细节
    • delete语句
    • delete语句的细节
    • select语句——单表

修改表

#添加列
ALTER TABLE tablename
ADD         (column datatype [DEFAULT expr] [,column datatype]...);
#修改列
ALTER TABLE tablename
MODIFY      (column datatype [DEFAULT expr] [,column datatype]...);
#删除列
ALTER TABLE tablename
DROP        (column);
#查看表所有的列
desc 表名;
#修改表名
Rename table 表名 to 新表名
#修改表字符集
ALTER TABLE 表名 CHARACTER SET 字符集;
#修改列名
ALTER TABLE 表名 CHANGE oldname newname 数据类型
应用实例

在员工表emp上增加一个image列,varchar类型(要求在resume后面)。

修改job列,使其长度为60

删除sex列

表名改为employee

修改表的字符集为utf-8

列名name修改为user_name

-- 在员工表emp上增加一个image列,varchar类型(要求在resume后面)。
ALTER TABLE emp ADD image VARCHAR(32) NOT NULL DEFAULT ''AFTER RESUME
-- 修改job列,使其长度为60
ALTER TABLE empMODIFY job VARCHAR(60) NOT NULL DEFAULT ''
-- 删除sex列
ALTER TABLE empDROP sex
-- 表名改为employee
RENAME TABLE emp TO employee
-- 修改表的字符集为utf-8
ALTER TABLE employee CHARACTER SET utf8
-- 列名name修改为user_name
ALTER TABLE employee CHANGE `name` user_name VARCHAR(32)
DESC employee

数据库CRUD

Create:增加
Retrieve:检索
Update:更新
Delete:删除

insert基本使用

使用insert语句向表中插入数据

INSERT INTO table_name [(column [,column...])]
VALUES (value [,value...]);

value和column一一对应,第一个值添加到第一个列里,第二个值添加到第二个列里,以此类推。

案例1

创建一张商品表good(id int ,goods_name varchar(10),price double);

添加两条记录

CREATE TABLE `goods`(id INT,goods_name VARCHAR(10),price DOUBLE);
INSERT INTO goods (id,goods_name,price)VALUES (10,'华为手机',5000);
INSERT INTO goods (id,goods_name,price)VALUES (20,'小米手机',5000);
SELECT * FROM goods;


案例2

使用insert语句向表employee中插入2个员工的信息

INSERT INTO `employee`(user_name,birthday,entry_date,job,salary,RESUME,image)VALUES('郝哥','1970-7-7','2001-09-09','开水果摊的',500,'你是故意找茬是吧,你要不要吧!','萨日朗!');
INSERT INTO `employee`(user_name,birthday,entry_date,job,salary,RESUME,image)VALUES('刘华强','1970-7-8','2002-09-09','拼一拼的',600,'听说你最近一直在找我,你是真想和我拼一下子了','你也算是识抬举的人了')
SELECT * FROM employee;

insert语句的细节
  1. 插入的数据应与字段的数据类型相同,比如把’abc’添加到INT类型会错误
  2. 数据的长度应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中
  3. 在values中列出的数据位置必须与被加入的列的排列位置相对应
  4. 字符和日期型数据应包含在单引号中
  5. 列可以插入空值(前提是字段允许为空)
INSERT INTO TABLE VALUE(NULL)
  1. INSERT INTO tab_name (列名) VALUES (),(),() 形式添加多条记录
  2. 如果是给表中的所有字段添加数据,可以不写前面的字段名称
  3. 默认值的使用:当不给某个字段值时,如果有默认值就会添加否则报错

INSERT INTO `goods` (id,goods_name,price)VALUES('abc','小米手机',2000);
INSERT INTO `goods` (id,goods_name,price)VALUES('30','小米手机',2000);


用’30’给int时,在MySQL的底层会尝试把字符串转成int。'30’可以转换成功,'abc’会转换失败。

添加多条记录

INSERT INTO `goods`(id,goods_name,price)VALUES(50,'三星手机',5000),(60,'vivo手机',5000);
SELECT * FROM goods;


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

INSERT INTO `goods`VALUES(70,'红米手机',3000);
SELECT * FROM goods;


当不给某个字段值时,如果有默认值就会添加默认值,否则报错。

如果某个列没有指定NOT NULL,那么当添加数据时如果没有指定值,默认会给NULL

如果我们希望指定默认值,可以在创建表时指定NOT NULL DEFAULT 默认值

INSERT INTO `goods`(id,goods_name)VALUES(80,'黑鲨手机');
SELECT * FROM goods;

update语句

使用update语句修改表中的数据

UPDATE tb1_nameSET col_name1=expr1 [,col_name2=expr2...][WHERE where_definition]

如果没有写WHERE条件,相当于对表的所有记录都进行修改

因此一定要慎重!

要求:在上面创建的employee表中修改表中的记录

  1. 将所有员工薪水修改为5000元
  2. 将姓名 宋振涛 的员工薪水修改为3000元
  3. 将 郝哥 的薪水在原有基础上增加1000元
UPDATE employee SET salary=5000
UPDATE employee SET salary=3000WHERE user_name='宋振涛'
UPDATE employee SET salary=salary+1000WHERE user_name='郝哥'
SELECT * FROM employee;

update语句的细节
  1. update语句可以用新值更新原有表中的各列
  2. set子句指示要修改哪些列和要给予哪些值
  3. where子句指定应该更新哪些行。如果没有where子句,则更新所有的行
  4. 如果需要修改多个字段,可以通过set 字段1=值1,字段2=值2…
UPDATE employee SET salary=salary+1000,job='住医院的',RESUME='瓜瓜瓜'WHERE user_name='郝哥'
SELECT * FROM employee;

delete语句

使用delete语句删除表中数据

delete from tb1_name [WHERE where_definition]

如果后面没有带WHERE条件 ,会将表的所有记录全部删除

一定要小心!一不小心可能就面向监狱编程了

删除表中名为 郝哥 的记录
删除表中所有记录

DELETE FROM employee WHERE user_name='郝哥';
DELETE FROM employee;
SELECT * FROM employee

delete语句的细节
  1. 如果不使用where子句,将删除表中所有数据
  2. delete语句不能删除某一列的值(可以使用update设为null或’’)
  3. 使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。drop table 表名;
select语句——单表

基本语法

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

注意事项

  1. select指定查询哪些列的数据
  2. column指定列名
  3. *号代表查询所有列(|是或者的意思)
  4. from指定查询哪张表
  5. 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,'韩顺平',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);
SELECT * FROM student;
#查询表中所有学生的信息
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 tablename;

在select语句中使用as语句

SELECT columnname as 别名 FROM 表名;

练习

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

练习

  1. 在赵云的总分上增加60%
  2. 统计关羽的总分
  3. 使用别名表示学生的数学分数
SELECT `name`,((chinese+english+math)*1.6) FROM student WHERE `name`='赵云' ;
SELECT `name`,(chinese+english+math) FROM student WHERE `name`='关羽';
SELECT math AS '数学成绩' FROM student;


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

图片来自【韩顺平讲MySQL】零基础一周学会MySQL -sql mysql教程 mysql视频 mysql入门

练习

  1. 查询姓名为赵云的学生成绩
  2. 查询英语成绩大于90分的同学
  3. 查询总分大于200分的所有同学
SELECT * FROM student;
SELECT * FROM student WHERE `name`='赵云';
SELECT * FROM student WHERE english>90;
SELECT * FROM student WHERE (chinese+english+math)>200;

练习
使用where子句,完成练习

  1. 查询math大于60并且(and)id大于4的学生成绩
  2. 查询英语成绩大于语文成绩的同学
  3. 查询总分大于200分并且数学成绩小于语文成绩的姓韩的学生
SELECT * FROM student;
SELECT * FROM student WHERE math>60 AND id>4;
SELECT * FROM student WHERE english>chinese;
SELECT * FROM student WHERE (chinese+english+math)>200 AND math<chinese AND `name` LIKE '韩%';
#韩%表示名字以韩开头的就可以

练习

  1. 查询英语分数在80-90之间的同学
  2. 查询数学分数为89,90,91的同学
  3. 查询所有姓李的学生成绩
  4. 查询数学分数>80,语文分>80的同学
#between and 是闭区间 下面两句sql语句是等价的
SELECT * FROM student WHERE english BETWEEN 80 AND 90;
SELECT * FROM student WHERE english>=80 AND english<=90;
#下面两个sql语句是等价的
SELECT * FROM student WHERE math=89 OR math=90 OR math=91;
SELECT * FROM student WHERE math IN (89,90,91);SELECT * FROM student WHERE `name` LIKE '李%';SELECT * FROM student WHERE math>80 AND chinese>80;

练习

  1. 查询语文分数在70-80之间的同学
  2. 查询总分为189,190,191的同学
  3. 查询所有姓李或者姓宋的同学
  4. 查询数学比语文多30分的同学
SELECT * FROM student WHERE chinese BETWEEN 70 AND 80;
SELECT * FROM student WHERE (chinese+english+math) IN (189,190,191);
SELECT * FROM student WHERE `name` LIKE '李%' OR `name` LIKE '宋%';
SELECT * FROM student WHERE (math-chinese)>30;

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

SELECT column1,column2,column3...FROM table;order by column asc|desc,...
  • order by指定排序的列,排序的列既可以是表中的列名,也可以是select语句后指定的列名
  • asc升序[默认] desc降序
  • order by子句应该位于select语句的结尾

练习

  • 对数学成绩排序后输出[升序]
  • 对总分按从高到低的顺序输出
  • 对姓李的学生成绩排序输出(升序)
SELECT * FROM student ORDER BY math;
#select math from student order by math;
SELECT `name`,(chinese+english+math) AS total_score FROM student ORDER BY total_score DESC;
SELECT `name`,(chinese+english+math) AS total_score FROM student WHERE `name` LIKE '李%' ORDER BY total_score;

今天一下午没动mysql,晚上再用时它突然自己犯病了。我把电脑休眠前用net stop mysql停止服务,并且关闭了Sqlyog,但是它还是不知道为什么就犯病了。

百度一搜,找了个方法:在安装mysql的bin目录下输入mysqld --install
然后再输入net start mysql,它就又好了。
参考博客是cmd中输入net start mysql 提示:服务名无效或者MySQL正在启动 MySQL无法启动
希望它明天别再犯病了orz

[MySQL] 零基础学MySQL 04相关推荐

  1. [MySQL] 零基础学MySQL 08

    本博客是[韩顺平讲MySQL]零基础一周学会MySQL -sql mysql教程 mysql视频 mysql入门视频的学习笔记 文章目录 自增长 MySQL索引 索引机制 创建索引 删除索引.查询索引 ...

  2. 零基础学Web 04(style标签)

    零基础学Web 04 style元素 定义 <style>标签用于为HTML文档定义样式信息. 属性 实例 <!DOCTYPE html> <html> <h ...

  3. [MySQL] 零基础学MySQL10

    本博客是[韩顺平讲MySQL]零基础一周学会MySQL -sql mysql教程 mysql视频 mysql入门视频的学习笔记 文章目录 MySQL表类型和存储引擎 三种存储引擎表使用案例 如何选择表 ...

  4. 零基础学 MySQL

    1 一个问题 2 解决之道 2.1 解决之道-文件.数据库 2.2 MySQL 数据库的安装和配置 ==> 视频链接 2.3 使用命令行窗口连接 MYSQL 数据库 2.4 操作示意图 3 Na ...

  5. php公用一个尾部,19.2 共用显示部分 - 19.2.2 共用尾部页面 - 《零基础学PHP+MySQL (零基础学编程)》 - D云...

    19.2.2 共用尾部页面 在上面介绍了PHP论坛的共用头部,接下来介绍PHP论坛的共用尾部页面的建立.共用尾部页面是用来显示网站的版权所有,程序的代码如代码19.2所示. 代码19.2 共用尾部页面 ...

  6. java零基础Ⅲ-- 4.Mysql基础

    java零基础Ⅲ-- 4.Mysql基础 MySQL安装配置 MySQL数据库的安装和配置 软件下载 特别说明 安装步骤 使用命令行窗口连接MYSQL数据库 Navicat 安装和使用 介绍:图形化M ...

  7. MySQL零基础从入门到精通(函数篇)

    MySQL零基础从入门到精通(函数篇) 在MySQL中,为了提高代码重用性和隐藏实现细节,MySQL提供了很多函数.函数可以理解为别人封装好的模板代码. 分类 聚合函数 数学函数 字符串函数 日期函数 ...

  8. proteus仿真micropython_【雕爷学编程】MicroPython动手做(04)——零基础学MaixPy之尝试运行...

    1.hello micropython #MicroPython动手做(04)--零基础学MaixPy之基本示例 #程序之一:hellomicropython #MicroPython动手做(04)- ...

  9. 零基础学习MySQL

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 导语 经过一段时间的筹备和整理,万里数据库<零基础学习MySQL>课程正式在腾讯课堂上线了. 课程地址:htt ...

最新文章

  1. 现代化医学信息管理c语言,山西医科大学_院校信息库_阳光高考
  2. 千兆网卡为什么慢_千兆宽带普及率不到1% 消费者为何不愿意用千兆宽带?
  3. Git Submodule
  4. Vue.js-Day03-PM【组件通信(安装Vetur插件、父子组件通信、子父组件通信)、项目发送与启动(项目发给别人、启动别人的项目)】
  5. 为什么大部分程序员看不起PHP这门语言?
  6. 51nod---无法表示的数
  7. c 自定义实现string类 clear_CC++语言15|类的继承和派生实现代码重用、扩充
  8. Java笔记05-Collection、泛型、迭代器
  9. 网络安全防护部署,升级支持IPv6
  10. 作者:曹建峰,男,腾讯研究院版权研究中心研究员,主要从事网络安全、数据保护、网络版权与内容产业等互联网法律政策研究工作。...
  11. 廖雪峰JS教程--条件判断
  12. 京东探索研究院 34 篇论文入选 CVPR 2022
  13. Java从入门到精通——数据库篇Mongo DB 导出,导入,备份
  14. 部署Django工程
  15. 2016、11、17
  16. 2022中国边缘计算企业20强
  17. 如何解读springboot 中约定大于配置、JPA是什么、咋用
  18. Python入门学习(五)
  19. 拼团返利模式玩法VS最新拼团的商业模式
  20. 万象优鲜生鲜配送系统源码 团队开发

热门文章

  1. LVTTL转LVDS GM8285C,28位LVDS发送器,替代GM8283
  2. windows服务器署站点,Windows Server配置学习心得-web服务器的搭建和部署,配置一个BLOG站点...
  3. 从0开始学Unity做SLG系列(GameFramework框架)
  4. Typora+MarkDown
  5. 基于Scrapy的链家二手房爬虫
  6. 利用第三方平台验证码进行识别
  7. 投稿时Cover Letter的重要性
  8. html bs架构调用客户端打印机用客户端及客户端局域网打印机打印,使用ScriptX.cab控件...
  9. Linux虚拟机不显示IP地址解决方法(亲测有效)
  10. 用python写一个有AI的斗地主游戏(二)——简述后端代码和思路