From 84782125226474fee0d8b8860b861f14a59408c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=9D=B0?= <3242096341@qq.com> Date: Mon, 27 Feb 2023 12:52:05 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=88=E6=9D=B0=E7=9A=84=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...6\345\272\223 \347\254\224\350\256\260.md" | 195 +++++++++++++ ...60\346\215\256\347\261\273\345\236\213.md" | 139 +++++++++ ...45\222\214MDL \347\254\224\350\256\260.md" | 269 ++++++++++++++++++ ...7\347\232\204\347\254\224\350\256\260 .md" | 0 ...45\347\232\204\347\254\224\350\256\260.md" | 0 ...45\350\257\242\347\254\224\350\256\260.md" | 98 +++++++ 6 files changed, 701 insertions(+) create mode 100644 "07 \351\231\210\346\235\260/20230213 MySQL\346\225\260\346\215\256\345\272\223 \347\254\224\350\256\260.md" create mode 100644 "07 \351\231\210\346\235\260/20230215 \346\225\260\346\215\256\347\261\273\345\236\213.md" create mode 100644 "07 \351\231\210\346\235\260/20230216 DDL\345\222\214MDL \347\254\224\350\256\260.md" rename "07 \351\231\210\346\235\260/20230220 \347\272\246\346\235\237\347\232\204\347\254\224\350\256\260\345\222\214\344\275\234\344\270\232 .md" => "07 \351\231\210\346\235\260/20230220 \347\272\246\346\235\237\347\232\204\347\254\224\350\256\260 .md" (100%) rename "07 \351\231\210\346\235\260/20230222 SELECT\350\257\255\345\217\245\347\232\204\347\254\224\350\256\260\345\222\214\344\275\234\344\270\232 .md" => "07 \351\231\210\346\235\260/20230222 SELECT\346\237\245\350\257\242\350\257\255\345\217\245\347\232\204\347\254\224\350\256\260.md" (100%) create mode 100644 "07 \351\231\210\346\235\260/20230223 \345\244\232\350\241\250\345\205\263\350\201\224\346\237\245\350\257\242\347\254\224\350\256\260.md" diff --git "a/07 \351\231\210\346\235\260/20230213 MySQL\346\225\260\346\215\256\345\272\223 \347\254\224\350\256\260.md" "b/07 \351\231\210\346\235\260/20230213 MySQL\346\225\260\346\215\256\345\272\223 \347\254\224\350\256\260.md" new file mode 100644 index 0000000..90294a6 --- /dev/null +++ "b/07 \351\231\210\346\235\260/20230213 MySQL\346\225\260\346\215\256\345\272\223 \347\254\224\350\256\260.md" @@ -0,0 +1,195 @@ +# MySQL数据库 + +#### 数据库(DB,database) + +``` +是存储数据的仓库 +``` + +``` +目前市场上数据库/数据库管理系统分类主要分: + +关系型数据库/数据库管理系统、非关系型数据库/数据库管理系统两大类 +``` + + + +#### 数据库管理系统(DBMS) + +``` +操纵和管理数据库的大型软件 +``` + +#### SQL + +``` +是结构化查询语言,专门用来操作/访问数据库的通用语言 +``` + +#### MySQL + +``` +一款软件;关系型数据库管理系统之一; +``` + +它们之间的关系: + +![image-20230212010043006](C:\Users\小杰\Desktop\专业课文件\第二学期\2.13\MySQL 第1到第3章.assets\image-20230212010043006.png) + + + +# 使用客户端登录MySQL服务器端 + +#### 一、MySQL自带客户端 + +#### 二、使用cmd命令连接 + +``` +mysql -h 主机名 -P 端口号 -u 用户名 -p密码 +``` + +注意: + +(1)-p与密码之间不能有空格,其他可有空格也可没有空格 + +```sql +mysql -hlocalhost -P3306 -uroot -proot +``` + +(2)密码建议在下一行输入 + +```sql +mysql -h localhost -P 3306 -u root -p +Enter password:**** +``` + +(3)如果是连本机:-hlocalhost就可以省略,如果端口号没有修改:-P3306也可以省略 + + 简写成: + +```sql +mysql -u root -p +Enter password:**** +``` + +#### 三: 使用第三方工具navicat连接 + +navicat:Mysql常用的三方工具之一; + +首先打开工具,在工具左侧选择新建连接,然后选择要连接的数据库为mysql,然后会弹出一个具体的连接配置的窗口。该窗口在正常连接状态下,只需要填入连接名称,主机的地址,连接端口号,用户名及密码即可。填写完毕点击测试,如果测试成功保存就可以打开我们的mysql数据库连接了。 + + + +# 客户端使用 + +## 数据库 + +1、查看所有的数据库 + +```mysql +show databases; +``` + +2、创建自己的数据库 + +```mysql +create database 数据库名 charset utf8; +#创建mxdx数据库 +create database mxdx; +``` + +3、删除数据库 + +```mysql +drop database 数据库名; +#删除mxdx数据库 +drop database mxdx; +``` + +4、使用自己的数据库 + +```mysql +use 数据库名; +#使用mxdx数据库 +use mxdx; +``` + +## 数据表 + +1、查看某个库的所有表格 + +```mysql +show tables; #要求前面有use语句 +show tables from 数据库名; +``` + +2、创建新的表格 + +```mysql +create table 表名称( + 字段名 数据类型, + 字段名 数据类型 +); +``` + +说明:如果是最后一个字段,后面就用加逗号,因为逗号的作用是分割每个字段。 + +```mysql +#创建学生表 +create table student( + id int, + name varchar(20) #说名字最长不超过20个字符 +); +``` + +3、查看定义好的表结构 + +```mysql +desc 表名称; +``` + +```mysql +desc student; +``` + +4、添加一条记录 + +```mysql +insert into 表名称 values(值列表); + +#添加两条记录到student表中 +insert into student values(1,'张三'); +insert into student values(2,'李四'); +``` + +5、查看一个表的数据 + +```mysql +select * from 表名称; +``` + +6、删除表 + +```mysql +drop table 表名称; +#删除学生表 +drop table student; +``` + +## 导入数据 + +在命令行客户端==登录mysql==,使用source指令导入 + +```mysql +mysql> source d:\练习脚本.sql +``` + +## 导出数据 + +在命令行客户端不登录mysql,使用mysqldump命令。 **注意末尾*不要*习惯性的加;号** + +```cmd +mysqldump -u用戶名 -p密码 数据库名 > 脚本名.sql +mysqldump -u用戶名 -p密码 数据库名 表名 > 脚本名.sql +``` + diff --git "a/07 \351\231\210\346\235\260/20230215 \346\225\260\346\215\256\347\261\273\345\236\213.md" "b/07 \351\231\210\346\235\260/20230215 \346\225\260\346\215\256\347\261\273\345\236\213.md" new file mode 100644 index 0000000..900597b --- /dev/null +++ "b/07 \351\231\210\346\235\260/20230215 \346\225\260\346\215\256\347\261\273\345\236\213.md" @@ -0,0 +1,139 @@ +# 数据类型 + +#### 整数 + +``` +默认显示宽度11 +int +``` + +#### 小数 + +``` +浮点型小数 +float double + +定点型小数 +decimal + +# 关于小数(M,N):M限制的总长度(整数部分+小数部分),N小数点后数字的长度 +# 对于N 超出限制时,会截断并四舍五入,不足时,会以0补齐 +``` + +#### 字符串 + +``` +固定长度的字符串 +char(M) #M表示最多能存储的字符数,取值范围是0~255个字符 + +可变长度字符串 +varchar(M) #最多不超过M个字符,M不能缺省 +``` + +#### 枚举与集合 + +``` +枚举 +enum #固定的几个字符串值,从中选择一个 + +集合 +set #固定的几个字符串值,从中选择任意几个 + +例: +create table temp( + gender enum('男','女'), + hobby set('睡觉','打游戏','泡妞','写代码') +); +``` + +#### 日期 + +``` +year表示 年份,格式为“YYYY”,例如“2022”。YEAR允许的值范围是1901~2155。 + +data表示 年月日,格式为“YYYY-MM-DD”,例如“2022-02-04”。 + +time表示 时分秒,格式为“HH:MM:SS”,例如“10:08:08”。 + +datatime表示 年月日时分秒的完整日期时间,格式为“YYYY-MM-DD HH:MM:SS”,例如“2022-02-04 10:08:08”。 + +#修改当前的时区 +set time_zone = '+9:00'; +``` + + + + + +# 作业 + +自我介绍 + +``` +#1、数据库class3 + +create database class3 CHARSET utf8; + +#2、表student + +use class3; + +字段:学号,姓名,性别,爱好,住址,联系方式,邮箱,QQ号 + +CREATE TABLE student( + + `id` int(11), + + `name` varchar(4) , + + `gender` enum('男','女'), + + `hobby` set('原神','王者','蛋仔') , + + `address` varchar(30), + + `tel` char(11), + + `email` varchar(320), + + `qq` varchar(10) + +); + +#3、并新增一条自己的记录。 + +INSERT INTO student VALUES (19,'陈杰','男','原神','福州市','01234567891','324209641@qq.com','1477198292');\#1、数据库class3 + +create database class3 CHARSET=utf8; + +#2、表student + +use class3; + +字段:学号,姓名,性别,爱好,住址,联系方式,邮箱,QQ号 + +CREATE TABLE student( + + `id` int(11), + + `name` varchar(4) , + + `gender` enum('男','女'), + + `hobby` set('原神','王者','蛋仔') , + + `address` varchar(30), + + `tel` char(11), + + `email` varchar(320), + + `qq` varchar(10) + +); + +#3、并新增一条自己的记录。 + +INSERT INTO student VALUES (19,'陈杰','男','原神','福州市','01234567891','324209641@qq.com','1477198292'); +``` + diff --git "a/07 \351\231\210\346\235\260/20230216 DDL\345\222\214MDL \347\254\224\350\256\260.md" "b/07 \351\231\210\346\235\260/20230216 DDL\345\222\214MDL \347\254\224\350\256\260.md" new file mode 100644 index 0000000..61d4d92 --- /dev/null +++ "b/07 \351\231\210\346\235\260/20230216 DDL\345\222\214MDL \347\254\224\350\256\260.md" @@ -0,0 +1,269 @@ +# DDL语句 + + + +## 数据库的查看 + +``` +show databases; +``` + +#### 创建自己的数据库 + +``` +create database [if not exists] 数据库名; +``` + +#### 删除数据库 + +``` +drop database [if exists] 数据库名称; +``` + +#### 查看某个数据库的详细定义 + +``` +show create database 数据库名称; +``` + +#### 修改数据库的编码 + +``` +ALTER DATABASE 数据库名 CHARACTER SET 新的字符集名称 COLLATE 校对规则; +例:alter database one charset utf8; +``` + +查看当前数据库下面,当前用户可以查看的表有哪些 + +``` +show tables; +``` + +在当前数据库下面,查看另一个数据库下面,当前用户可以查看的表有哪些 + +``` +show tables from mxdx; +``` + +#### 创建表格 + +``` +CREATE TABLE [IF NOT EXISTS] 表名称 ( + 字段名1 数据类型, + 字段名2 数据类型, + 字段名3 数据类型 +); +``` + +例: +表格:student +学号,姓名,生日,成绩,性别,体重,手机号码 + +create table student( + id int, + name VARCHAR(10), + birthday date, + score float(5,2), + gender enum('男','女','保密'), + weight double(5,2), + tel char(11) -- 最后一个字段,不写,号 +); + +#### 查看表结构 + +``` +DESC 表名称; +``` + +#### 查看表的详细定义 + +``` +show create table 表名称; +``` + +#### 查询数据 + +``` +select * from 表名称; +``` + +#### 删除表格 + +``` +drop table [IF EXISTS] 表名称; +``` + +## 表的修改 + + + +#### 修改表的字符集和校对规则 + +ALTER TABLE 表名称 CHARSET=新字符集 COLLATE=新校对规则; + +例如: + +``` +alter table student charset=gbk; +``` + +修改字符集编码,只能之后的操作有效。之前的影响不到 + +增加一个字段 + +``` +ALTER TABLE 表名称 ADD [COLUMN] 字段名 数据类型; +例如: +alter table student add height float; +``` + +#### 删除一个字段 + +``` +ALTER TABLE 表名称 DROP COLUMN 字段名; +例如: +alter table student drop sss; +``` + +#### 修改一个字段名称 + +``` +ALTER TABLE 表名称 CHANGE 旧字段名称 新的字段名称 数据类型; +#例如: +alter table student change tel telphone char(11); +``` + +#### 修改一个字段的数据类型 + +``` +ALTER TABLE 表名称 MODIFY 字段名称 新数据类型; +#例如: +alter table student modify height double(5,2); +desc student; +``` + +#### 修改字段的位置,顺序 + +``` +ALTER TABLE 表名称 MODIFY 字段名称 数据类型 AFTER 另一个字段; +ALTER TABLE 表名称 MODIFY 字段名称 数据类型 FIRST; +#例如: +# 放在id后面 +alter table xueshen modify birthday date after id; + +# 放在第一个 +alter table xueshen modify birthday date first; + +#放最后一个 +alter table xueshen modify birthday date after height; +``` + +#### 重命名表 + +``` +RENAME TABLE <原名> TO <新名字>; +ALTER TABLE 表名称 RENAME TO 新名称; +#例如: +alter table student rename to xueshen; +SHOW tables; +``` + + + +# DML语句 + +增删改 + +#### 给表重命名 + +``` +alter table 旧表名 rename to 新表名; +将xueshen重命名为stu +alter table xueshen rename to stu; +``` + +#### 添加语句 + +``` +INSERT INTO 表名称 VALUES(值列表); + +#要求值列表的数量、顺序要与表结构一一对应 +#例如: +desc stu; +insert into stu VALUES(1,'张三',85.5,'女',85.9,'110',165.5,'2003-05-05'); +``` + +``` +#添加语句,可以指定部分字段赋值 +INSERT INTO 表名称(字段列表) VALUES(值列表);#值列表只需要和前面的字段列表数量、顺序一一对应就可以 +#例如: +insert into stu (id,name) VALUES (2,'李四'); +``` + +``` +#一条insert语句同时添加多行记录 +INSERT INTO 表名称 VALUES(值列表),(值列表),(值列表)...; +INSERT INTO 表名称(字段列表) VALUES(值列表),(值列表),(值列表)...; + +#例如: +insert into stu (id,name) values (3,'王五'),(4,'赵六'),(5,'头七'); +insert into stu values(6,'合金坤',85.5,'女',85.9,'110',165.5,'2003-05-05'),(7,'金多多',85.5,'女',85.9,'110',165.5,'2003-05-05'); +``` + +### 修改 + +``` +UPDATE 表名称 SET 字段名 = 值,字段名 = 值,字段名 = 值 [WHERE 条件]; + +#例如: +66 合金坤 85.50 女 85.90 110 165.50 2003-05-05 +update stu set id=66,`name`='土坤'; # 无条件 + +#例如:修改李四和王五的体重为86 +update stu set weight = 86 WHERE name ='李四' or name = '王五'; +update stu set weight = 186 WHERE name in ('李四' , '王五'); +``` + + + +### 删除 + + + +#### 删除整个表的数据 + +``` +DELETE FROM 表名称; +#例如: +DELETE from stu; # 无条件 +``` + +#### 删除部分行 + +``` +DELETE FROM 表名称 WHERE 条件; +#例如: +delete from stu where id=6; +``` + +``` +#删除weight列的数据 +UPDATE stu SET name=NULL; +``` + +``` +#删除weight列的定义 +ALTER TABLE stu DROP name; +``` + +# SQL语句 + +## 分类 + +| 名称 | 解释 | 命令 | +| :-------------------: | :-------------------------------------------: | :----------------------------------------------------------: | +| DDL (数据定义语言) | 定义和管理数据对象结构,如数据库,数据表等 | 创建(create),修改(alter),删除(drop) show(展示)结构 | +| DML (数据操作语言) | 用于操作数据库对象中所包含的数据 | 增(insert),删(delete),改(update) 数据 | +| DQL (数据查询语言) | 用于查询数据库数据 | 查(select) | +| DCL (数据控制语 言) | 用于管理数据库的语言,包括管理权限及数 据更改 | grant(授权),commit(确认),rollback(回滚) | + diff --git "a/07 \351\231\210\346\235\260/20230220 \347\272\246\346\235\237\347\232\204\347\254\224\350\256\260\345\222\214\344\275\234\344\270\232 .md" "b/07 \351\231\210\346\235\260/20230220 \347\272\246\346\235\237\347\232\204\347\254\224\350\256\260 .md" similarity index 100% rename from "07 \351\231\210\346\235\260/20230220 \347\272\246\346\235\237\347\232\204\347\254\224\350\256\260\345\222\214\344\275\234\344\270\232 .md" rename to "07 \351\231\210\346\235\260/20230220 \347\272\246\346\235\237\347\232\204\347\254\224\350\256\260 .md" diff --git "a/07 \351\231\210\346\235\260/20230222 SELECT\350\257\255\345\217\245\347\232\204\347\254\224\350\256\260\345\222\214\344\275\234\344\270\232 .md" "b/07 \351\231\210\346\235\260/20230222 SELECT\346\237\245\350\257\242\350\257\255\345\217\245\347\232\204\347\254\224\350\256\260.md" similarity index 100% rename from "07 \351\231\210\346\235\260/20230222 SELECT\350\257\255\345\217\245\347\232\204\347\254\224\350\256\260\345\222\214\344\275\234\344\270\232 .md" rename to "07 \351\231\210\346\235\260/20230222 SELECT\346\237\245\350\257\242\350\257\255\345\217\245\347\232\204\347\254\224\350\256\260.md" diff --git "a/07 \351\231\210\346\235\260/20230223 \345\244\232\350\241\250\345\205\263\350\201\224\346\237\245\350\257\242\347\254\224\350\256\260.md" "b/07 \351\231\210\346\235\260/20230223 \345\244\232\350\241\250\345\205\263\350\201\224\346\237\245\350\257\242\347\254\224\350\256\260.md" new file mode 100644 index 0000000..41b96b8 --- /dev/null +++ "b/07 \351\231\210\346\235\260/20230223 \345\244\232\350\241\250\345\205\263\350\201\224\346\237\245\350\257\242\347\254\224\350\256\260.md" @@ -0,0 +1,98 @@ +# 多表关联查询 + + + +## 6.1关联数据的操作 + +(1)操作的表需要两张或两张以上才能连接。 + +(2)连接操作是关系数据操作中专门用于数据库操作的关系运算。 + +### 6.1.1.并(UNION) + +“并”是一种关联数据操作,也称为并操作。“并”具有将两份拥有相同字段数目和字段类型的表合并到一起。 + +### 6.1.2.笛卡儿积(基本不用) + +指的是两个集合的乘积(例如A={1,2},B={1,3},A*B)。 + +(1)两个集合相乘,不满足交换率。(A*B != B*A) + +(2)指的是两个集合中的元素个数相乘。 + +### 6.1.3连接(JOIN) + +指的是在笛卡儿积的数据记录中,按照相应字段的比较条件进行选择生成一个新的关系。同时连接分为三种:内连接(INNER JOIN)、外连接(OUTER JOIN)、交叉连接(CROSS JOIN)。 + + + +## 6.2交叉连接(CROSS JOIN) + +1.一般用来返回连接表的笛卡儿积。 + +```sql +语法1:select <字段名> from <表名1> cross join <表名2> [where]; +语法2:select <字段名> from <表名1>,<表名2> [where]; +``` + + + +## 6.3内连接(INNER JOIN) + +1.利用条件表达式来消除交叉连接的某些数据行。 + +```sql +语法:select <字段名> from <表名1> [inner] join <表名2> [on]; +-- 如果on后面没有加上连接条件,交叉连接和内连接在语法上是等同的,二者可以互换。 +on:用来设置内连接的连接条件。 +``` + + + +## 6.4外连接(OUTER JOIN) + +1.将连接的表分为基表和参考表,再以基表为依据返回满足和不满足条件的记录。 + +2.外连接可分为左连接和右连接。 + +### 6.4.1 左连接 + +```sql +语法:select <字段名> from <表名1> left [outer] join <表名2> on; +若表1的某行在表2中没有相匹配的行,那么表2返回的字段值均为null。 +``` + +### 6.4.2右连接 + +```sql +语法:select <字段名> from <表名1> right [outer] join <表名2> on; +若表2的某行在表1中没有相匹配的行,那么表1返回的字段值均为null。 +``` + + + +## 6.5子查询 + +它可以实现多表查询。它指的是将一个查询语句嵌套在另一个查询语句中。可以在select、update、delete中使用。经常在where子句中。 + +```sql +在where中 +语法:where <表达式> <操作符> (子查询) +操作符可以是比较运算符和in、 not in、exists、not exists等关键字 +``` + +注意事项: + +1.可以嵌套在SQL语句中任何表达式出现的位置; + +2.只出现在子查询中而没有出现在父查询中的表不能包括在输出列中,例:select * from (select * from result) as temp; + + + +## 6.6正则表达式 + +主要用来查询和替换符合某个模式(规则)的文本内容。 + +``` +语法:属性名(属性名也是字段名) regexp `匹配方式` +``` \ No newline at end of file -- Gitee