From 43575b5b8f807f0812ec90f444f2d6b575a388ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=B0=91=E6=B5=B7?= <3087930763@qq.com> Date: Fri, 17 Feb 2023 12:18:36 +0800 Subject: [PATCH 1/2] =?UTF-8?q?MySqL=E7=9A=84=E8=AE=A4=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...QL\347\232\204\350\256\244\350\257\206.md" | 169 ++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 "MySQL/MySQL\347\232\204\350\256\244\350\257\206.md" diff --git "a/MySQL/MySQL\347\232\204\350\256\244\350\257\206.md" "b/MySQL/MySQL\347\232\204\350\256\244\350\257\206.md" new file mode 100644 index 0000000..e5e3c4c --- /dev/null +++ "b/MySQL/MySQL\347\232\204\350\256\244\350\257\206.md" @@ -0,0 +1,169 @@ +## 基本概念 + +- DB:数据库(Database)是存储数据的地方 +- DBMS:数据库管理系统(Database Management System)是操纵管理数据库的大型软件提供数据定义语言DDL:(Data Define Language)数据操作语言DML,数据查询语言DQL,数据控制语言DCL + +| 名称 | 解释 | 命令 | +| :-------------------: | :-------------------------------------------: | :----------------------------------------------------------: | +| DDL (数据定义语言) | 定义和管理数据对象结构,如数据库,数据表等 | 创建(create),修改(alter),删除(drop) show(展示)结构 | +| DML (数据操作语言) | 用于操作数据库对象中所包含的数据 | 增(insert),删(delete),改(update) 数据 | +| DQL (数据查询语言) | 用于查询数据库数据 | 查(select) | +| DCL (数据控制语 言) | 用于管理数据库的语言,包括管理权限及数 据更改 | grant(授权),commit(确认),rollback(回滚) | + +## 语法规范 + +1. MySQL的sql语法不区分大小写 +2. 命名的时候用26个字母和9个数字以及下划线其他符号不建议用 +3. 不要使用关键字来作为表名,字段名数据库如果用了请用 ` (反引号)引起了 +4. 数据库和表名、字段名等对象名中间不要包含空格 +5. 同一个mysql软件中,数据库不能同名,同一个库中,表不能重名,同一个表中,字段不能重名 + +## 注释 + +- 单行注释:#注释内容(mysql特有的) +- 单行注释:--空格注释内容 其中--后面的空格必须有 + +- 多行注释:/* 注释内容 */ + +## MySQL脚本中标点符号 + +- 本身成对的标点符号必须成对,例如:(),'',""。 +- 所有标点符号必须英文状态下半角输入方式下输入。 + +### 几个特殊的标点符号 + +1. 小括号(): +2. 单引号'':**字符串和日期类型的数据值使用单引号''引起来**,数值类型的不需要加标点符号。 +3. 双引号"":列的别名可以使用引号"",**给表名取别名不要用引号**。 +4. 在MySQL中双引号通常等价于单引号 + +# MySQL数据类型 + +## 整数类型 + +MySQL还支持在类型名称后面加小括号(M),而小括号中的M表示显示宽度,M的取值范围是(0, 255) + +表示当整数值不够M位时,用0填充。如果整数值超过M位但是没有超过当前数据类型的范围时,就按照实际位数存储。当M宽度超过当前数据类型可存储数值范围的最大宽度时,也是以实际存储范围为准。 + +[^]: 可以理解(M)为绑匪提的赎金达不到要加钱才能走达到和超过都可以走 + +## 小数类型 + +MySQL中使用浮点数和定点数来表示小数。 + +浮点数有两种类型:单精度浮点数(FLOAT)和双精度浮点数(DOUBLE),定点数只有DECIMAL。浮点数和定点数都可以用(M,D)来表示。 + +- M是精度,表示该值总共显示M位,包括整数位和小数位,对于FLOAT和DOUBLE类型来说,M取值范围为0~255,而对于DECIMAL来说,M取值范围为0~65。 +- D是标度,表示小数的位数,取值范围为0~30,同时必须<=M。 + +DECIMAL实际是以字符串形式存放的精度比浮点数高 + +## 字符串类型 + +1. CHAR(M)为固定长度的字符串M表示最多能存储的字符数,取值范围是0~255个字符,如果未指定(M)表示只能存储1个字符。如果存储的值少于设定的M个字符,右侧将用空格填充以达到指定的长度,当查询显示CHAR值时,尾部的空格将被删掉 + +2. VARCHAR(M)为可变长度的字符串 + + - M表示最多能存储的字符数,最大范围由字符集及M共同决定 + + - M不可缺省,必须指定(M),否则报错。 + + - 实际长度达不到M值时,以实际长度为准。 + + - VARBINARY类型的数据除了存储数据本身外,还需要1或2个字节来存储数据的字节数。 + + [^SCII 码中,一个英文字母(不分大小写)为一个字节,一个中文汉字为两个字节。 UTF-8 编码中,一个英文字为一个字节,一个中文为三个字节。 Unicode 编码中,一个英文为一个字节,一个中文]: + + ## + +## 日期时间类型 + +仅表示年用YEAR类型YEAR允许的值范围是1901~2155,表示年月日用DATE类型格式为“YYYY-MM-DD”,表示时分秒用TIME类型格式为“HH:MM:SS” + +如果要表示年月日时分秒的完整日期时间,可以使用DATATIME类型,格式为“YYYY-MM-DD HH:MM:SS”,例如“2022-02-04 10:08:08”。 + +如果需要经常插入或更新日期时间为系统日期时间,则通常使用TIMESTAMP类型,格式为“YYYY-MM-DD HH:MM:SS”,例如“2022-02-04 10:08:08”。TIMESTAMP与DATETIME的区别在于TIMESTAMP的取值范围小,只支持1970-01-01 00:00:01 UTC至2038-01-19 03:14:07 UTC范围的日期时间值,其中UTC是世界标准时间,并且TIMESTAMP类型的日期时间值在存储时会将当前时区的日期时间值转换为时间标准时间值,检索时再转换回当前时区的日期时间值,这会更友好。而DATETIME则只能反映出插入时当地的时区,其他时区的人查看数据必然会有误差的。另外,TIMESTAMP的属性受MySQL版本和服务器SQLMode的影响很大。 + +## Enum和Set类型 + +枚举和集合类型字段声明的语法格式如下: + +- 字段名ENUM(‘值1’,‘值2’,…‘值n’) +- 字段名SET(‘值1’,‘值2’,…‘值n’) + +ENUM类型的字段在赋值时,只能在指定的枚举列表中取值,而且一次只能取一个。枚举列表最多可以有65535个成员。ENUM值在内部用整数表示,每个枚举值均有一个索引值, MySQL存储的就是这个索引编号。例如,定义ENUM类型的列(‘first’, ‘second’, ‘third’)。 + +SET类型的字段在赋值时,可从定义的值列表中选择1个或多个值的组合。SET列最多可以有64个成员。SET值在内部也用整数表示,分别是1,2,4,8……,都是2的n次方值,因为这些整数值对应的二进制都是只有1位是1,其余是0。 + +## 数据字段属性 + + + + **unsigned** + +- 无符号的 + +- 声明该数据列不允许负数 + + **ZEROFILL** + +- 0填充的 + +- 不足位数的用0来填充 , 如int(3),5则为005 + +**auto_increment** + +- 自动增长的 , 每添加一条数据 , 自动在上一个记录数上加 1(默认) +- 通常用于设置主键 , 且为整数类型 +- 可定义起始值和步长 + - 当前表设置步长(AUTO_INCREMENT=100) : 只影响当前表 + - SET @@auto_increment_increment=5 ; 影响所有使用自增的表(全局) + +**NULL 和 NOT NULL** + +- 默认为NULL , 即没有插入该列的数值 +- 如果设置为NOT NULL , 则该列必须有值 + +**DEFAULT** + +- 默认的 + +- 用于设置默认值 + +- 例如,性别字段,默认为"男" , 否则为 "女" ; 若无指定该列的值 , 则默认值为"男"的值 + + + +```mysql +CREATE DATABASE class3 +-- 创建数据库 +USE class3 +-- 使用数据库 +ALTER DATABASE class3 CHARSET utf8 +-- 修改字符集为 “utf8” +show CREATE DATABASE class3; +-- 展示创建数据库的过程 +show databases +-- 展示数据库 +CREATE TABLE student( +-- 创建表 + id int, + xs_name VARCHAR(10), + xs_sex VARCHAR(5), + xs_hobby VARCHAR(20), + address VARCHAR(11), + xs_lianxi VARCHAR(11), + email VARCHAR(20), + xs_QQ int(10) +); +INSERT INTO student VALUES(21,'刘少海','男','打球 打游戏','福建厦门',15259200850,'1900331589@qq.com',1900331589); +-- 添加数据 +SELECT * FROM student; +-- 查询所有表 +DROP TABLE student; +-- 删除数据表 +DROP DATABASE class3 +-- 删除数据库 + +``` + -- Gitee From 06390c3fd7e914fa5c60b2511f24d69fcc935c6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=B0=91=E6=B5=B7?= <3087930763@qq.com> Date: Fri, 17 Feb 2023 04:28:33 +0000 Subject: [PATCH 2/2] =?UTF-8?q?update=20MySQL/MySQL=E7=9A=84=E8=AE=A4?= =?UTF-8?q?=E8=AF=86.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 刘少海 <3087930763@qq.com> --- "MySQL/MySQL\347\232\204\350\256\244\350\257\206.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/MySQL/MySQL\347\232\204\350\256\244\350\257\206.md" "b/MySQL/MySQL\347\232\204\350\256\244\350\257\206.md" index e5e3c4c..db1f81f 100644 --- "a/MySQL/MySQL\347\232\204\350\256\244\350\257\206.md" +++ "b/MySQL/MySQL\347\232\204\350\256\244\350\257\206.md" @@ -14,7 +14,7 @@ 1. MySQL的sql语法不区分大小写 2. 命名的时候用26个字母和9个数字以及下划线其他符号不建议用 -3. 不要使用关键字来作为表名,字段名数据库如果用了请用 ` (反引号)引起了 +3. 不要使用关键字来作为表名,字段名数据库如果用了请用 (`)(反引号)引起了 4. 数据库和表名、字段名等对象名中间不要包含空格 5. 同一个mysql软件中,数据库不能同名,同一个库中,表不能重名,同一个表中,字段不能重名 -- Gitee