今天任务

完成对MYSQL数据库中的数据库,表及数据的CRUD的操作

教学目标

掌握MYSQL的基本数据库,表及表中的记录的做操作

上次课的简单回顾:

BootStrap:

  1. 轻量级开发响应式页面的前端框架

    1. 全局CSS组件,JS插件
    2. 栅格系统:将页面的宽度分为12等分(原理基于CSS@media媒体查询)
    3. col-xs-*:手机屏幕上
    4. col-sm-*:平板
    5. col-md-*:PC电脑
    6. col-lg-*:超大屏幕

完成分类表的CRUO的操作

需求分析:

使用CMD命令来创建一个数据库,并对数据库中的一张分类表进行增删改查的操作:

数据库概述:

  • 什么是数据库

    • 数据库就是一个文件系统,只不过我们需要命令来操作这个文件系统
    • 数据库(Database)是按照数据解耦股来组织、存储和管理数据的奖励在计算机存储设备上的仓库
    • 数据库是长期存储在计算机内、有组织的、可共享的数据集合。数据库中的数据指的是以一定的数据模型组织、描述和存储在一起、具有尽可能小的冗余库、较高的数据独立性和易扩展性的特定并可在一定范围内为多个用户共享。
  • 数据库的作用
    • 存储数据,数据的仓库,带有访问权限限制不同的人可以有不同的操作
  • 为什么要学习数据库
    • 大家为什么学习JavaEE:生活所迫,为了理想,为了迎娶白富美,因为学不会C++
    • 操作的都是后台数据,取到后台数据进行封装,然后交给前端去展示

常见数据库:

mysql: 开源免费的使用中小型企业的免费数据库, sun公司收购了mysql,sun公司被oracle受够了,oracle收购之后,开始收费了mariadb: 有mysql创始人搞出来的,直接是mysql开源版本的分支,基本上所有的命令都是一样oracle:甲骨文公司,高新园地铁站B出口,商业软件,收费软件,适用于大型电商网站,收购了sun公司,java  (google违反开源规定,修改了JVM,所以被oracle告了)db2: IBM公司,thinkpad,解决方案,软件和硬件,服务器架构,银行系统大多采用db2sqlserver: windows里面,政府网站,使用 asp.net 并且大学教学通常都是采用SQLserver。图形化工具做的不错sybase: 被淘汰的

上面都是关系型数据库

NOSQL非关系型数据库: key:value

mongodb:redis: (做缓存)

关系型数据库:

主要是用来描述实体与实体之间关系,
实实在在的事物:男生和女生 学生和班级 员工和部门
E-R关系图:要求必须得会画    E-R实体关系图实体:方框属性:椭圆关系:菱形

MYSQL数据库服务器

MYSQL数据库: 数据库管理软件服务器:就是一台电脑,这台安装相关的服务器软件,这些软件会监听不同的端口号,根据用户访问的端口号,提供不同的服务

MYSQL的安装和卸载

  • 卸载:

    • 找到控制面板,卸载软件
    • 删除mysql安装目录的所有文件C:\Program Files\MySQL
    • 删除mysql数据存放文件:c:\ProgramData\MySQL
  • 安装:
    • 运行安装程序:在启动配置教程之前,一路下一步,没有下一步的话就finish
    • 第一次finish之后启动服务器配置教程
    • 第一个 incluce mysql bin directory to windows path
    • 第二个:端口不要去修改,字符集要选utf8,密码不要忘记了

MYSQL的SQL语句

SQL:Structure Query Language  结构化查询语言DDL:数据定义语言:定义数据库,数据表它们的结构: create(创建) drop(删除) alter(修改)DML:数据操纵语言:主要是用来操作数据 insert(插入) update(修改) delete(删除)DCL:数据控制语言:定义访问权限,取消访问权限,安全设置 grant(oracle比较多)DQL:数据查询语言: select(查询) from子句 where子句

数据库的CRUD的操作

  • 首先要登录数据服务器:mysql -uroot -proot

    • -u -p和后面的账号密码不要有空格,如果有空格,会进一步要求你输入密码才能进去数据库

创建数据库

三种创建方式:
-- 使用默认方式创建数据库
create database 数据名字;
create database day06;-- 创建数据库的时候,指定字符集
create database 数据库名字 character set 字符集; utf8mb4才是真正的utf8
create database day06_1 character set utf8;-- 创建数据库的时候, 定义校对规则
create database 数据库名字 character set 字符集 collate 校对规则;   有默认校对规则,可查看《MySQL 5.1 参考手册》
create database day06_2 character set utf8 collate 校对规则;
create database day06_2 character set utf8 collate utf8_bin;xiao
x = 23423
i = 98879
a = 32412
o = 23432xiao = 23423988793241223432

查看数据库

-- 查询数据库定义的语句
show create database 数据库名字;
show create database day06;
show create database day06_2;-- 查看所有数据库
show databases;至少会有下面三个数据库
必须记住:下面三个库不要去动它!下面三个库不要去动它!下面三个库不要去动它!
information_schema
performance_schema
mysql

修改数据库的操作

-- 修改数据库字符集
alter database 数据库的名字 character set 字符集;
alter database day06_1 character set gbk;

删除数据库

drop database 数据库名字;
drop database day06_2;drop database test;

其他数据库命令

-- 切换数据(选中数据库)
use 数据库名字;
use day06;-- 查看以下当前正在使用的数据库
select database();//使用了切换数据库命令(即进入相关数据库后)本命令才有效!适合在你进入某个数据库后忘记当前正在使用的数据库,就可以使用本命令去查看!

–创建数据库: dba 数据库管理员

–表的创建

表的CRUD操作

创建表

-- 必须以使用某个数据库的前提下,才能创建表,所以
-- 1. 创建数据库
-- 2. 使用这个库
-- 3. 创建表
create database 数据库名字;
use 数据库名字;
create table 表名(列名1 列的类型(长度) 约束, 列名2 列的类型(长度) 约束, 列名3 列的类型(长度) 约束
);列的类型:
java                sql
int                 int
char/string         char/varcharchar:固定长度varchar:可变长度char(3):  一       一空格空格varchar(3): 一     一长度代表的是字符的个数
double              double
float               float
boolean             boolean
date                date        :YYYY-MM-DDtime      :hh:mm:ssdatetime    : YYYY-MM-DD hh:mm:ss 默认值是nulltimestamp : YYYY-MM-DD hh:mm:ss 默认使用当前(系统)时间text  :主要是用来存放文本blob  :存放的是二进制列的约束:主键约束:primary key唯一约束:unique非空约束:not null创建表:1. 分析实体:学生2. 学生ID3. 姓名4. 性别5. 年龄
create table student(sid int primary key,sname varchar(31),sex int,age int
);

查看表

-- 查看所有表show tables;
-- 查看表的定义show create table 表的名字;show create table student;-- 查看表结构desc 表的名字;desc student;

修改表

添加列(add), 修改列(modify), 修改列名(change), 删除列(drop) 修改表名(rename),修改表的字符集

添加列(add)
alter table 表名 add 列名 列的类型 列的约束;
alter table student add chengji int not null;修改列(modify)
alter table 表名 modify 列名 列的类型 列的约束;
alter table student modify sex varchar(2);修改列名(change)
alter table 表名 change 旧列名 新列名 新列名类型 新列名约束;
alter table student change sex gender varchar(2);删除列(drop)
alter table 表名 drop 列名;
alter table student drop chengji;修改表名(rename)//尽量不要这样做
rename table 旧表名 to 新表名;
rename table student to baima;修改表的字符集
alter table 表名 character set 字符集;
alter table baima character set gbk;

删除表

drop table 表名;
drop table baima;

Sql完成对表中数据的CRUD的操作

插入数据

-- 通用格式  列名和值按顺序一一对应
insert into 表名(列名1,列名2,列名3) values(值1,值2,值3);insert into student(sid,sname,sex,age)values(1,'zhangsan',1,23);
-- 简单写法 值要写全,并且和表中列名顺序一一对应,不能漏(自增长那种列数值??)
insert into 表名(值1,值2,值3,值4);
insert into student(3,'zhangsan',1,23);-- 注意:如果是插入部分列的话,列名不能省略
insert into student(sid,sname) values(3,'lisi');
insert into student values(3,'lisi'); //这种写法错误(省略列名的写法,值要写全)-- 批量插入
insert into student values
(4,'zhangsan',1,23),
(5,'zhangsan',1,23),
(6,'zhangsan',1,23),
(7,'zhangsan',1,23);-- 单条插入和批量插入的效率
批量插入效率高,但如果某条数据插入出错,难以定位-- 查看表中数据
select * from student;

命令行插入中文问题:

insert into student values(11,'李四',1,23);
  • 临时解决方案: set names gbk; 相当于告诉mysql服务器软件,我们当前在命令行输入的内容是GBK编码,但当命令窗口关闭之后,它在输入中文就会存在问题
  • 永久解决办法:修改my.ini配置(在mysql软件安装路径里)
    • 暂停mysql服务
    • 在mysql安装路劲找到my.ini配置文件(按自己安装目录路径去找,新版mysql没有这个文件,则自己创建,自己写配置信息)
    • 将default-character-set后面的编码改成gbk
    • 保存文件,退出
    • 重新启动MySQL服务

删除操作

delete from 表名 [where 条件];delete from student where sid=10;
delete from student;//如果没有指明条件,会将表中数据一条一条全部删除掉(危险操作,谨慎使用)-- 面试问题:请说一下 delete 删除数据 和  truncate 删除数据有什么差别
delete: DML 一条一条删除表中的数据
truncate: DDL 先删除表再重建表
关于哪条执行效率高:具体要看表中的数据量如果数据比较少,delete 比较高效如果数据比较多,truncate 比较高效**

更新表记录

update 表名 set 列名1=列的值1,列名2=列的值2,列名3=列的值3 [where 条件];
-- 将sid为5的名字改成李四
-- 如果参数是字符串,日期要加上单引号
update student set sname='李四' where sid=5;
update student set sname='李四'; //把student表所有sname列的值都改为 李四
update student set sname='李四',sex='1';//把student表所有sname列的值都改为 李四,sex列的值都改为1。

查询记录

select [distinct] [*] [列名1,列名2] from 表名 [where 条件];
distinct:去除重复的数据select:选择显示哪些列的内容-- 商品分类: 手机数码,鞋靴箱包
1. 分类的ID
2. 分类名称
3. 分类描述
1,2
create table category(cid int primary key auto_increment,cname varchar(10),cdesc varchar(31)
);insert into category values(null, '手机数码', '电子产品,黑马生产');
insert into category values(null, '鞋靴箱包', '江南皮革厂倾情打造');
insert into category values(null, '香烟酒水', '黄鹤楼,茅台,二锅头');
insert into category values(null, '酸奶饼干', '娃哈哈,蒙牛酸酸乳');
insert into category values(null, '馋嘴零食', '瓜子花生,八宝粥,辣条');select * from category;
select cname,cdesc from category;-- 所有商品
1.商品ID
2.商品名称
3.商品的价格
4.生产日期
5.商品分类ID商品和商品分类:所属关系
create table product(pid int primary key auto_increment,pname varchar(10),price double,pdate timestamp not null,cno int
);insert into product values(null,'小米mix4',998,null,1);
insert into product values(null,'锤子',2888,null,1);
insert into product values(null,'阿迪王',99,null,2);
insert into product values(null,'老村长',88,null,3);
insert into product values(null,'劲酒',35,null,3);
insert into product values(null,'小熊饼干',1,null,4);
insert into product values(null,'卫龙辣条',1,null,5);
insert into product values(null,'旺旺大饼',1,null,5);-- 简单查询:
-- 查询所有的商品:select * from 表名;select * from product;
-- 查询商品名称和商品价格:select pname,price from product;-- 别名查询. as 的关键字, as 关键字可以省略-- 表别名: select p.pname , p.price from product p;(主要是用在多表查询);select p.pname,p.price from product as p; //p是product的别名-- 列别名: select pname as 商品名称 , price as 商品价格 from product;select pname as 商品名称, price as 商品价格 from product;省略as关键字select pname 商品名称, price 商品价格 from product;-- 去掉重复的值-- 查询商品所有的价格select price from product;select distinct price from product;-- select运算查询:仅仅在查询结果上做了运算 + - * / ,数据库中的数据并没有改变select *,price*1.5 from product;// *是所有列,逗号隔开后面的运算select *,price*1.5 as 折后价 from product;select *,price*0.9 from product;-- 条件查询 [where关键字]指定条件,确定要操作的记录-- 查询商品价格>60的所有商品信息select * from product where price > 60;-- where 后的条件写法-- 关系运算符: > >= < <= = != <><>  : 不等于    :标准SQL语法!=  : 不等于    :非标准SQL语法-- 查询商品价格不等于88的所有商品select * from product where price <> 88;select * from product where price != 88;-- 查询商品价格在10 到 100之间select * from product where price >10 and price <100;between...and...select * from product where price between 10 and 100;-- 逻辑运算: and , or , not-- 查询出商品价格 小于100 或商品价格 大于900select * from product where price < 100 or price > 900;-- like : 模糊查询_ : 代表的是一个字符% : 代表的是多个字符-- 查询出名字中带有“饼”的所有商品 '%饼%'select * from product where pname like '%饼%';-- 查询第二个名字是“熊”的所有商品 '_熊%'select * from product where pname like '_熊%';-- in 在某个范围内获得值-- 查询价格等于 10 20 999 这三个中的所有商品select * from product where price in (10,20,999);-- 查询出商品分类ID在 1,4,5里面的所有商品select * from product where cno in(1,4,5);-- 排序查询: order by 关键字asc: ascend 升序(默认的排序方式)desc: descend 降序-- 0. 查询所有商品,按照价格进行排序select * from product order by price;-- 1. 查询所有的商品,按价格进行降序排序(asc升序 desc 降序);select * from product order by price desc;-- 2. 查询名称有“小”的商品,按价格升序1. 查询名称有“小”的商品select * from product where pname like '%小%';2.进行排序得出结果select * from product where pname like '%小%' order by price asc;-- 聚合函数:sum() :求和avg() :求平均值count():统计数量max():最大值min():最小值-- 1.获得商品所有价格的总和:select sum(price) from product;-- 2.获得所有商品的平均价格:select avg(price) from product;-- 3.获得所有商品的个数;select count(*) from product;-- 注意: where 条件后面不能接聚合函数-- 查出商品价格大于平均价格的所有商品 (这句话需要拆分成更小的步骤)select * from product where price > avg(price);//无效查出所有商品select * from product;大于平均价格select avg(price) from product;-- 子查询select * from product where price > (select avg(price) from product);MySQL第二天视频20视频14:30
-- 分组: group by-- 1.根据cno字段分组,分组后统计商品的个数select cno,count(*) from product group by cno;-- 2.根据cno分组,分组统计魅族商品的平均价格,并且商品平均价格 > 60//select 如果没有 cno 只有 select avg(price)...,结果集中只看到price,而不知道这个price是哪些商品的,所以加上 cno,写成下面的形式!select cno,avg(price) from product group by cno having avg(price) > 60;-- having 关键字 可以接聚合函数的,出现在分组之后-- where 关键字 它不可以接聚合函数,出现在分组之前-- 总结:(个人)
-- 编写顺序
-- S..F..W..G..H..Oselect .. from .. where .. group by .. having .. order by-- 执行顺序F..W..G..H..S..Ofrom .. where .. group by .. having .. select .. order by

黑马49期 day06-mysql入门(对照视频整理的一份笔记--有改动)相关推荐

  1. 黑马49期全套视频(2018年)

    黑马49期全套视频下载链接:https://pan.baidu.com/s/1kp2heB_bjgJo2ghnKbAwqw 提取码:z7v9

  2. 「随笔」MySQL入门技能树测评 # CSDN 技能树评测征文

    文章目录 前言 一.答题过程 二.优点鉴赏 三.待提升空间 前言 本文主要是介绍C站关于MySQL入门技能树测评. 一.答题过程 首先,打开技能树,可以按部就班从易到难,渐进式深入学习,以java技能 ...

  3. mysql入门很简单系列视频-学习笔记

    mysql入门很简单系列视频-学习笔记 视频链接:mysql入门很简单系列视频 https://www.bilibili.com/video/av14920200/ 以前主要就了解DDL.DML.DC ...

  4. 黑马52期+28期+32期+46期最新android视频免费下载

    黑马52期+28期+32期+46期最新android视频免费下载,本人花费高价在黑马学员手上购买的,视频全部完整,加QQ2805816571获取下载地址.

  5. 黑马76期培训视频分享

    黑马76期培训视频: 链接:http://pan.baidu.com/s/1pKMN2rh   密码:irh3

  6. 黑马android29期,黑马57期

    黑马57期 |____27 |____软件测试相搭配的测试工具 |____软件测试教程讲义 |____9.QC管理学习(类禅道)学习 |____8.性能测试LoadRunner |____7.接口视频 ...

  7. 《HelloGitHub》第 49 期

    兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程.对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编 ...

  8. Java入门面试视频资源汇总

    Java入门面试视频资源汇总 本篇文章是用来汇总Java后端相关资源,找到一个满意的资源会在学习的过程中少走很多弯路.优质新资源不停更新噢,有需要其他资源也可以留言. 入门视频: 黑马JavaEE第5 ...

  9. 黑马android74期全套不加密,黑马74期不加密1 05_day41-day43 JNI day01 资料 Android-JNI

    <黑马74期不加密1 05_day41-day43 JNI day01 资料 Android-JNI>由会员分享,可在线阅读,更多相关<黑马74期不加密1 05_day41-day4 ...

  10. mysql基础入门 day2 动力节点[老杜]课堂笔记

    day_2 本文原作者为动力节点教学总监杜老师老杜在其课老杜带你学_mysql 入门基础(mysql 基础视频+数据库实战)所写讲课笔记 该文档和其涉及资料见文档末链接 本人将其讲课笔记 txt 下载 ...

最新文章

  1. Gut:卡姆果提取物改变肠道菌群预防小鼠肥胖
  2. ROS探索总结(十)(十一)(十二)——语音控制 机器视觉 坐标系统
  3. 第三次学JAVA再学不好就吃翔(part34)--多态的成员访问
  4. java 11_JAVA 11初体验
  5. 『ACM-算法-离散化』信息竞赛进阶指南--离散化
  6. asp.net core 系列之Performance的 Response compression(响应压缩)
  7. lambda 表达式定制操作
  8. 开发人员如何成为架构师
  9. [ ArcGIS for Server 10.1 系列 ] - 重新创建Site
  10. 我扒了 6730 个微信用户数据,得出了这些结论......
  11. 怎么做淘宝客赚钱,淘客经验分享。
  12. mate30pro鸿蒙系统刷机包下载,华为 Mate 30 Pro 的鸿蒙 2.0 Beta 版刷机包流出(附下载地址)...
  13. FMEA-MSR步骤三:功能分析
  14. ssm运动器材共享平台毕业设计源码201816
  15. HDU6411 带劲的and和(2018百度之星复赛,并查集,位运算,思路)
  16. 元宇宙”成时下热点 中国古人是如何认识“宇宙”的?
  17. 【web前端】JavaScript总结
  18. 浮点数的整数小数部分分别输出
  19. 20201215记一次502错误
  20. 21考研 为啥看了那么多经验贴,还是搞不定考研?

热门文章

  1. Y460安装桌面导航
  2. 手持式频谱分析仪TFN RMT720A 频谱分析 基站分析 路测覆盖
  3. flashfxp3.41中文版注册码:(适合最新版本)
  4. Thingsboard 本地编译 com.google.protobuf:protoc:exe:osx-x86_64:3.11.4 无法下载
  5. 作为程序员,常用的工具软件之搜索引擎
  6. fir低通滤波器c语言,大神教你:FIR与IIR低通滤波器的最简最快实现
  7. 浏览器的id_亚马逊账号关联因素之浏览器是重中之重-亚马逊运营必知
  8. ESP32 之 ESP-IDF 实战(一)—— 物联网风力摆控制系统(①姿态解算部分)
  9. 屏通触控大师(PM Designer)快速入门
  10. mysql数据库的流水号生成,数据库流水号生成解决方案