LAGOU任务一 MySql基础&&SQL入门

本文深入浅出地介绍了数据库的基本概念,包括数据库的定义、使用原因、常见软件排名,以及MySQL的目录结构和配置。此外,还详细讲解了数据库管理系统(DBMS)的作用,数据库表的组织方式,以及SQL语言的概念、分类和通用语法。通过实例演示了如何使用SQL进行数据库和数据表的创建、修改、删除操作,以及数据的插入、更新和删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 数据库的基本概念
1.1 什么是数据库
(1)数据库(DataBase)就是存储和管理数据的仓库
(2)其本质是一个文件系统,还是以文件的方式,将数据保存在电脑上
1.2 为什么使用数据库
数据存储方式的比较

存储方式优点缺点
内存速度快不能够永久保存,数据是临时状态
文件数据是可以永久保存的使用IO流操作文件,不方便
数据库1.数据可以永久保存 2.方便存储和管理 3.使用统一的方式数据库(SQL)占用资源,有些数据库需要付费

通过上面的比较,我们可以看出,使用数据库存储数据,用户可以非常方便对数据库中的数据进行增加、删除、修改以及查询操作。
1.3 常见的数据库软件排行榜
在这里插入图片描述
在这里插入图片描述
2.7 MySql的目录结构
(1)MySql安装目录
MySql的默认安装目录在C:\Program Files\MySQL\MySQL Server 5.7

目录目录内容
bin放置一些可执行文件
docs文档
include包含(头)文件
lib依赖库
share用于存放字符集、语言等信息

(2)MySql配置文件与数据库及数据表所在目录
在这里插入图片描述
2.8 数据库管理系统
(1)什么是数据库管理系统
数据库管理系统(DataBase Management System,DBMS):指一种操作和管理维护数据库的大型软件,MySql就是一个数据库管理系统软件,安装了MySql的电脑,我们叫它数据库服务器。
(2)数据库管理系统的作用
用于建立、使用和维护数据库,对数据库进行统一的管理。
(3)数据库管理系统、数据库和表之间的关系
MySql中管理着很多数据库,在实际开发环境中一个数据库一般对应了一个的应用,数据库当中保存着多张表,每一张表对应着不同的业务,表中保存着对应业务的数据。
在这里插入图片描述
2.9 数据库表
数据库中以表为组织单位存储数据
表类似我们Java中的类,每个字段都有对应的数据类型
那么我们使用熟悉的Java程序来与关系型数据对比,就会发现以下关系:

类--------------->表
类中属性--------------->表中字段
对象--------------->数据记录

在这里插入图片描述
3 SQL(重点)
3.1 SQL的概念
(1)什么是SQL?
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
(2)SQL的作用
是所有关系型数据库的统一查询规范,不同的关系型数据库都支持SQL
所有的关系型数据库都可以使用SQL
不同数据库之间的SQL有一些区别(方言)
3.2 SQL通用语法
(1)SQL语句可以单行或者多行书写,以分号结尾; (Sqlyog中可以不用写分号)
(2)可以使用空格和缩进来增加语句的可读性
(3)MySql中使用SQL不区分大小写,一般关键字大写,数据库名 表名列名 小写
(4)注释方式

注释语法说明
– 空格单行注释
/* */多行注释
#MySql特有的单行注释

3.3 SQL的分类

分类说明
数据定义语言简称DDL(Data Definition Language),用来定义数据库对象:数据库、表、列等
数据操作语言简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新
数据查询语言简称DQL(Data Query Language),用来查询数据库中表的记录
数据控制语言简称DCL(Daat Control Language),用来定义数据库的访问权限和安全级别,及创建客户(了解)

注:我们重点学习DML和DQL
在这里插入图片描述
3.4 DDL操作数据库
3.4.1 创建数据库

命令说明
create database 数据库名;创建指定名称的数据库
create database 数据库名 character set 字符集;创建指定名称的数据库,并且指定了字符集(一般都指定utf-8)

代码示例:

/*
	对数据库操作的分类包含:
		CRUD
		C create 创建
		R retrieve 查询
		U update 修改
		D delete 删除
		使用数据库

*/
/*
	创建数据库 方式1:指定名称的数据库
	latin1 编码
*/

CREATE DATABASE db1;

/*
	指定字符集的方式创建数据库
	utf8
*/
CREATE DATABASE db1_1 CHARACTER SET utf8;

/*
	查看数据库
*/
# 切换数据库
USE db1_1;

# 查询当前正在使用的数据库
SELECT DATABASE();

# 查询MySql中有哪些数据库
SHOW DATABASES;

MySql自带数据库的介绍:

数据库介绍
mysqlMySql核心数据库,保存的是用户和权限
performance_schema保存性能相关数据 监控MySql的性能
sys记录了DBA所需要的一些信息,更方便的让DBA快速了解数据库的运行情况,DBA数据库管理员

DDL操作数据库_修改&删除

-- 修改数据库的字符集
-- 语法格式 alter database 数据库名 character set utf8;

ALTER DATABASE db1 CHARACTER SET utf8;

-- 查询当前数据库的基本信息
SHOW CREATE DATABASE db1;

-- 删除数据库
-- 语法格式 drop database 数据库名称 将数据库从MySql中永久删除
DROP DATABASE db1_1;  -- 慎用

3.5 DDL操作数据表
3.5.1 MySql常见的数据类型
(1)常见的数据类型:

类型描述
int整型
double浮点型
varchar字符串型
date日期类型,格式为yyyy-MM-dd,只有年月日,没有时分秒

(2)详细的数据类型(了解即可)
在这里插入图片描述
注意:MySql中的char类型与varchar类型,都对应了java中的字符串类型,区别在于:
=》char类型是固定长度的 指定了多少的长度 创建时就使用多少。
=》varchar类型是可变长度的 存储字符串时 只使用字符串长度所需的空间。

创建表的语法格式
		create table 表名(
			字段名称 字段类型(长度),
			字段名称2 字段类型,
			字段名称3 字段类型 最后一个字段不要加逗号
		);
	MySQL中常见的数据类型
		int 整型
		double 浮点型
		varchar 字符串型
		date 日期类型 只显示年月日 没有时分秒 yyyy-MM-dd
		datetime 年月日时分秒 yyyy-MM-dd HH:mm:ss
		char 在MySql中char类型也代表字符串

创建&查看

-- 创建商品分类表
/*
	表名 category
	   cid int 分类id
	   cname varchar 分类的名称
*/

-- 选择要使用的数据库
USE db1;

-- 创建分类表
CREATE TABLE category(
	cid INT,
	cname VARCHAR(20)
);

-- 创建测试表
/*
	表名 test1
	   tid int
	   tdate date
*/
CREATE TABLE test1(
	tid INT,
	tdate DATE
);

-- 快速创建一个表结构相同的表(复制表结构)
-- 语法结构 create table 新表名称 like 旧表名称

-- 创建一个与test1表结构相同的test2表
CREATE TABLE test2 LIKE test1;

-- 查看表结构
DESC test2;

-- 查看表
-- 查看当前数据库中所有的数据表名
SHOW TABLES;

-- 查看创建表的sql
SHOW CREATE TABLE category;

-- 查看表结构
DESC category;

删除:

/*
	表的删除
	    语法格式
	        drop table 表名;从数据库中永久的删除一张表
	        drop table if exists 表名;判断表是否存在,如果存在就删除 不存在就不执行删除
*/

-- 删除test1表
DROP TABLE test1;

-- 使用先判断后删除方式
DROP TABLE IF EXISTS test2;

数据表的修改:

/*
	修改表的名称
	修改表的字符集
	修改表中的某一列(数据类型 名称 长度)
	向表中添加一列
	删除表中的某一列
*/

-- 修改表名称 语法格式:rename table 旧表名 to 新表名
RENAME TABLE category TO category1;

-- 修改表的字符集为 gbk
-- 语法格式:alter table 表名 character set 字符集
ALTER TABLE category1 CHARACTER SET gbk;

-- 向表中添加一个字段 关键字:add
-- 语法格式:alter table 表名 add 字段名称 字段类型(长度)
-- 添加分类描述字段
ALTER TABLE category1 ADD cdesc VARCHAR(20);

-- 修改表中列的类型或者长度 关键字 modify
-- 语法格式:alter table 表名 modify 字段名称 字段类型
-- 修改cdese字段的长度为50
ALTER TABLE category1 MODIFY cdesc VARCHAR(50); -- 修改字段长度
ALTER TABLE category1 MODIFY cdesc CHAR(20); -- 修改字段类型

-- 修改列的名称 关键字:change
-- 语法格式:alter table 表名 change 旧列名
-- 修改cdesc字段 名称改为 description varchar(30)
ALTER TABLE category1 CHANGE cdesc decription VARCHAR(30);

-- 删除列 关键字 drop
-- 语法格式:alter table 表名 drop 列名
ALTER TABLE category1 DROP description;

插入数据:

/*
	DML 对表中的数据进行 增删改
	增加
	    语法格式:insert into 表名(字段名1,字段名2....) values(字段值1,字段值2...)
*/

-- 创建学生表
CREATE TABLE student(
	sid INT,
	sname VARCHAR(20),
	age INT,
	sex CHAR(1),
	address VARCHAR(40)
);

-- 向学生表中插入数据

-- 方式1 插入全部字段 将所有字段名都写出来
INSERT INTO student (sid,sname,age,sex,address) VALUES(1,'孙悟空',18,'男','花果山');

-- 方式2 插入全部字段 不写字段名
INSERT INTO student VALUES(2,'孙悟饭',5,'男','地球');

-- 方式3 插入指定字段
INSERT INTO student (sid ,sname) VALUES(3,'蜘蛛精');

-- 注意事项
	-- 1.值与字段必须对应 个数&数据类型&长度 都必须一致
INSERT INTO student (sid,sname,age,sex,address) VALUES(4,'孙悟空',18,'男');

	-- 2.在插入 varchar char date 类型的时候,必须要使用 单引号 或者双引号进行包裹
INSERT INTO student (sid,sname,age,sex,address) VALUES(4,孙悟空,18,'男');

	-- 3.如果插入空值 可以忽略不写 或者写null
INSERT INTO student (sid,sname,age,sex,address) VALUES(5,'唐僧');	
INSERT INTO student (sid,sname,age,sex,address) VALUES(6,'八戒',NULL,NULL,NULL);

修改数据:

/*
	修改操作
		语法格式1:update 表名 set 列名 = 值
		语法格式2:update 表名 set 列名 = 值 [where 条件表达式:字段名 = 值]
*/

-- 修改表中所有的学生性别为女
UPDATE student SET sex = '女'; -- (慎用!)

-- 带条件的修改 将sid为1的数据,性别改为男
UPDATE student SET sex = '男' WHERE sid=1;

-- 一次性修改多个列
-- 修改sid 为5 的这条数据,年龄改为20岁,地址改为大唐
UPDATE student SET age=20,address ='大唐' WHERE sid=5;

删除数据:

/*
	删除
	    语法格式1:delete from 表名;
	    语法格式2:delete from 表名 [where 条件];
*/

-- 删除sid为6的数据
DELETE FROM student FROM WHERE sid=6;

-- 删除所有数据
DELETE FROM student;

-- 删除所有数据的方式 两种
	-- 1.delete from 表; 不推荐,对表中的数据逐条删除,效率低
	-- 2.truncate table 表; 推荐。删除整张表,然后再创建一个一模一样的新表

INSERT INTO student VALUES(1,'孙悟空',20,'男','花果山');
TRUNCATE TABLE student;

简单查询:

/*
	DQL
		简单查询
			select 列名 from 表名;
*/

-- 查询emp表中的所有数据
SELECT * FROM emp; -- * 表示所有的列

-- 查询所有数据 只显示 id和name
SELECT eid,ename FROM emp;

-- 查询所有数据,然后给列名改为中文
SELECT * FROM emp;

-- 别名查询 使用关键字 as
SELECT
    eid AS '编号',
    ename AS '姓名',
    sex AS '性别',
    salary AS '入职时间',
    hire_date AS '入职时间',
    dept_name AS '部门名称',  -- as 可以省略
FROM emp;

-- 查询一共有几个部门
SELECT dept_name FROM emp;

-- 去重操作 关键字 distinct
SELECT DISTINCT dept_name FROM emp;

-- 将我们的员工薪资数据+1000进行展示
SELECT ename,salary+1000 AS salaly FROM emp;

-- 注意:查询操作 不会对数据表中的数据进行修改,只是一种显示的方式

条件查询:
(1)比较运算符

运算符说明
< > <= >= = <> !=大于、小于、大于(小于)等于、不等于
BETWEEN…AND…显示在某一区间的值 例如:2000-10000之间:Between 2000 and 10000
IN(集合)集合表示多个值,使用逗号分隔,例如name in(悟空,八戒) in中每个数据都会作为一次条件,只要满足条件就会显示
LIKE ‘%张%’模糊查询
IS NULL查询某一列为NULL的值,注:不能写=NULL

(2)逻辑运算符

运算符说明
And &&多个条件同时成立
Or ||多个条件任一成立
Not不成立,取反
# 查询员工姓名为黄蓉的员工信息
-- 1.查哪张表 2.查哪些字段 3.查询条件
SELECT * FROM emp WHERE ename='黄蓉';

# 查询薪水价格为5000的员工信息
SELECT * FROM emp WHERE salary='5000';

# 查询薪水价格不为5000的员工信息
SELECT * FROM emp WHERE salary !='5000';
SELECT * FROM emp WHERE salary <>'5000';

# 查询薪水价格大于6000元的所有员工信息
SELECT * FROM emp WHERE salary >6000;

# 查询薪水价格在5000到10000之间所有员工信息
SELECT * FROM emp WHERE salary BETWEEN 5000 AND 10000;
SELECT * FROM emp WHERE salary >=5000 AND salary <=10000;

# 查询薪水价格是3600或7200或者20000的所有员工信息
SELECT * FROM emp WHERE salary = 3600 OR salary = 7200 OR salary = 20000;
SELECT * FROM emp WHERE salary IN (3600,7200,20000);

/*
	like '精'
		% 通配符,表示匹配任意多个字符串
		_ 通配符,表示匹配一个字符
*/
# 查询含有'精'字所有员工信息
SELECT * FROM emp WHERE ename LIKE '%精%';

# 查询含有'孙'开头的所有员工信息
SELECT * FROM emp WHERE ename LIKE '孙%';

# 查询第二个字为'兔'的所有员工信息
SELECT * FROM emp WHERE ename LIKE '_兔%';

# 查询没有部门的员工信息
-- select * from emp where dept_name=null; 错误方式
SELECT * FROM emp WHERE dept_name IS NULL;

# 查询有部门的员工信息
SELECT * FROM emp WHERE dept_name IS NOT NULL;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值