From fd9eebd527d619e687707bba7d7bff0d88d5782b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E4=BD=B3=E6=B3=BD?= <1097559914@qq.com> Date: Thu, 16 Feb 2023 22:09:13 +0800 Subject: [PATCH 1/2] =?UTF-8?q?mysql=E7=AC=AC=E4=B8=80=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...60\346\215\256\347\261\273\345\236\213.md" | 189 ++++++++++++++++++ .../img/1.png" | Bin 0 -> 36570 bytes 2 files changed, 189 insertions(+) create mode 100644 "02 \346\236\227\344\275\263\346\263\275/20230215 sql\350\257\255\345\217\245 \346\225\260\346\215\256\347\261\273\345\236\213.md" create mode 100644 "02 \346\236\227\344\275\263\346\263\275/img/1.png" diff --git "a/02 \346\236\227\344\275\263\346\263\275/20230215 sql\350\257\255\345\217\245 \346\225\260\346\215\256\347\261\273\345\236\213.md" "b/02 \346\236\227\344\275\263\346\263\275/20230215 sql\350\257\255\345\217\245 \346\225\260\346\215\256\347\261\273\345\236\213.md" new file mode 100644 index 0000000..bac60e4 --- /dev/null +++ "b/02 \346\236\227\344\275\263\346\263\275/20230215 sql\350\257\255\345\217\245 \346\225\260\346\215\256\347\261\273\345\236\213.md" @@ -0,0 +1,189 @@ +# 20230215 sql语句 数据类型 + +### 1.sql语句的规范 + +​ (1)mysql的sql语法不区分大小写 + +​ A:数据库的表中的数据是否区分大小写。这个的话要看表格的字段的数据类型、编码方式以及校对规则。 + +​ ci(大小写不敏感),cs(大小写敏感),_bin(二元,即比较是基于字符编码的值而与language无关,区分大小写) + +​ (2)命名 + +​ 使用26个英文字母大小写,数字0-9,下划线 + +​ 建议不使用Mysql关键词命名,或用`飘号括起来命名 + +例子: + +```mysql +CREATE DATABASE `student` +``` + +​ 命名不可以重名,包括库、表、类型不可重名 + +### 2.sql脚本的注释 + +​ (1)单行注释: + +```mysql +#这是单行注释的一种 +-- 这也是单行注释一种(--后面需要加空格) +``` + +​ (2)多行注释: + +```mysql +/* +这是多行注释 +*/ +``` + +### 3.mysql中的标点符号 + +​ mysql脚本对符号有以下要求: + +​ 本身成对的标点符号必须成对,例如:(),'',""。 + +​ 所有标点符号必须英文状态下半角输入方式下输入。 + +​ 单引号'':**字符串和日期类型的数据值使用单引号''引起来**,数值类型的不需要加标点符号。 + +​ 双引号"":列的别名可以使用引号"",**给表名取别名不要用引号**。、 + +​ 在MySQL中双引号通常等价于单引号 + +### 4.MySQL支持的数据类型 + +#### 4.1 整数类型:常用类型为int + +​ int类型后面可以加小括号,如int(M),M表示显示的宽度,M的取值范围是(0, 255)。int(M)这个M在字段的属性中指定了unsigned(无符号)和zerofill(零填充)的情况下才有意义。表示当整数值不够M位时,用0填充。如果数值超过M位但是没有超过int数据类型的范围,即可正常显示。、 + +#### 4.2 小数类型: + +​ 单精度浮点数(FLOAT)和双精度浮点数(DOUBLE),定点数只有DECIMAL。浮点数和定点数都可以用(M,D)来表示。 + +- M是精度,表示该值总共显示M位,包括整数位和小数位,对于FLOAT和DOUBLE类型来说,M取值范围为0~255,而对于DECIMAL来说,M取值范围为0~65。 +- D是标度,表示小数的位数,取值范围为0~30,同时必须<=M。 + +DECIMAL实际是以字符串形式存放的,在对精度要求比较高的时候(如货币、科学数据等)使用DECIMAL类型会比较好。浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的数据范围,它的缺点是会引起精度问题。 + +#### 4.3 字符串类型: + +​ + +​ char(X),是固定长度,一旦声明长度,不管多长,都以声明长度占用空间,如果没有没有设置(X)那么char的长度只有1个字符,(X)的取值范围是0~255字符。 + +​ VARCHAR(M)为可变长度的字符串,M表示最多能存储的字符数,最大范围由字符集及M共同决定,M不可缺省,必须指定(M),否则报错,实际长度达不到M值时,以实际长度为准。 + +- VARBINARY类型的数据除了存储数据本身外,还需要1或2个字节来存储数据的字节 + +**使用场景**: + +- 身份证号、手机号码、QQ号、用户名username、密码password、银行卡号等固定长度的文本字符串适合使用CHAR类型; +- 评论、朋友圈、微博不定长度的文本字符串更适合使用VARCHAR类型。 + +#### 4.4**日期时间类型**: + +​ (1)如果只表示年份使用YEAR,格式为“YYYY”,取值范围1901~2155 + +​ (2)如果表示年月日,使用DATE,格式为"YYYY-MM-DD",例如“2023-02-15” + +​ (3)如果表示时间,使用TIME,格式为"HH:MM:SS",例如"19:00:01" + +​ (4)如果想表示年月日又要有时间,使用DATATIME类型,格式为"YYYY-MM-DD HH:MM:SS",例如"2023-02-15 19:00:01" + +​ (5)如果需要经常插入或更新日期时间为系统日期时间,则通常使用TIMESTAMP类型,格式为“YYYY-MM-DD HH:MM:SS”,例如“2022-02-04 10:08:08”。只支持1970-01-01 00:00:01 UTC至2038-01-19 03:14:07 UTC范围的日期时间值,其中UTC是世界标准时间。 + +​ (6)修改当前的时区 set time_zone = '+9:00'; + +#### 4.4**Enum和Set类型**: + +​ (1)Enum类型只能在指定的枚举中取值,而且一次只能取其中一个,枚举列表最多可以有65535个成员,ENUM值在内部用整数表示,每个枚举值均有一个索引值, MySQL存储的就是这个索引编号。 + +​ (2)Set类型可以选取列表中1个或者多个值的组合,SET最多只能有64个成员。 + +### 5、Mysql数据库格式: + +```mysql +#1、创建数据库 +CREATE DATABASE `数据库名`; +#例子 +CREATE DATABASE `class3`; + +#2、使用(选择)数据库 +USE `数据库名`; +#例子 +USE `class3`; + +#3、创建数据表 +CREATE TABLE `数据表名`( + `表列名` 类型 +); +#例子 +CREATE TABLE `student`( + `id` int(2) NOT NULL AUTO_INCREMENT COMMENT '学号', + `name` VARCHAR(10) NOT NULL COMMENT '姓名', + `sex` ENUM('男','女') NOT NULL COMMENT '性别', + `hobby` SET('运动','学习','游戏','旅游') NOT NULL COMMENT '爱好', + `address` VARCHAR(100) NOT NULL COMMENT '地址', + `tel` CHAR(11) NOT NULL COMMENT '电话', + `email` VARCHAR(50) NOT NULL COMMENT '邮箱', + `QQ` CHAR(11) NOT NULL COMMENT 'QQ', +); + +#4、添加数据 +INSERT INTO `student` VALUES(01,'林佳泽','男','学习,旅游,游戏','福建','13110884745','565619801@qq.com','565619801'); + +#5、查询数据 +SELECT * FROM `student` + +#6、修改数据 +UPDATE `student` SET `id` = 02 WHERE `id` = 01; + +#7、删除数据 +DELETE FROM `student` WHERE `id` + +#8、删除数据库 +DROP DATABASE `class3` +``` + +### 6、作业: + +![1](.\img\1.png) + +```mysql +#1、创建数据库 +CREATE DATABASE `class3`; + +#2、使用(选择)数据库 +USE `class3`; + +#3、创建数据表 +CREATE TABLE `student`( + `id` int(2) NOT NULL COMMENT '学号', + `name` VARCHAR(10) NOT NULL COMMENT '姓名', + `sex` ENUM('男','女') NOT NULL COMMENT '性别', + `hobby` SET('运动','学习','游戏','旅游') NOT NULL COMMENT '爱好', + `address` VARCHAR(100) NOT NULL COMMENT '地址', + `tel` CHAR(11) NOT NULL COMMENT '电话', + `email` VARCHAR(50) NOT NULL COMMENT '邮箱', + `QQ` CHAR(11) NOT NULL COMMENT 'QQ' +); + +#4、添加数据 +INSERT INTO `student` VALUES(01,'林佳泽','男','学习,旅游,游戏','福建','13110884745','565619801@qq.com','565619801'); + +#5、查询数据 +SELECT * FROM `student` + +#6、修改数据 +UPDATE `student` SET `id` = 02 WHERE `id` = 01; + +#7、删除数据 +DELETE FROM `student` WHERE `id` + +#8、删除数据库 +DROP DATABASE `class3` +``` + diff --git "a/02 \346\236\227\344\275\263\346\263\275/img/1.png" "b/02 \346\236\227\344\275\263\346\263\275/img/1.png" new file mode 100644 index 0000000000000000000000000000000000000000..646d257b30bbff5ddf77242e4effa0292df872ee GIT binary patch literal 36570 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 V9G5{I@bn+AUdq47eXjrU{{iv_H<17U literal 0 HcmV?d00001 -- Gitee From d577a7aca487179ff9f07cfc9ce1c0ad765c63c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E4=BD=B3=E6=B3=BD?= <1097559914@qq.com> Date: Sun, 19 Feb 2023 17:50:25 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...45\345\222\214\344\275\234\344\270\232.md" | 290 ++++++++++++++++++ 1 file changed, 290 insertions(+) create mode 100644 "02 \346\236\227\344\275\263\346\263\275/20230218 ddl dml\350\257\255\345\217\245\345\222\214\344\275\234\344\270\232.md" diff --git "a/02 \346\236\227\344\275\263\346\263\275/20230218 ddl dml\350\257\255\345\217\245\345\222\214\344\275\234\344\270\232.md" "b/02 \346\236\227\344\275\263\346\263\275/20230218 ddl dml\350\257\255\345\217\245\345\222\214\344\275\234\344\270\232.md" new file mode 100644 index 0000000..4f7d38c --- /dev/null +++ "b/02 \346\236\227\344\275\263\346\263\275/20230218 ddl dml\350\257\255\345\217\245\345\222\214\344\275\234\344\270\232.md" @@ -0,0 +1,290 @@ +# 20230218 ddl dml语句和作业 + + + +### 1、ddl语句主要的命令 + +​ 创建 create CREATE DATABASE `test01_market`; + +​ 修改alter + +```mysql +#修改字段名和字段类型: +alter table `表名` change `字段名` `新字段名` `类型`; + +#移动字段 向后移动: +alter table `表名` modify `需要移动的字段` `类型` after `移动到某字段后` ; + +#修改字段类型: +alter table `表名` modify `字段名` `类型`; + +#添加字段: +alter table `表名` add `字段名` `类型` after `字段名` ;-- after 添加在某字段后面 + +#表重命名: +alter table `表名` rename `新表名`; + +#删除表中name这行 +alter table `表名` drop `name`; +``` + +### 2、dml语句主要的命令 + +​ 新增inster into + +​ 修改update + +```mysql +#修改id 1006和1007的性别为男 +update `表名` set `字段` = ' 男' where id >= 1006 and id <= 1007; + +#修改性别为空的null性别改为男 +update `表名` set `字段` = '男' where `字段` is null; + +#将qq不为空的修改为qq号为1111 +update `表名` set qq=1111 where qq is not null; + +#删除列数据 +update `表名` set `字段名` = null; +``` + +​ 删除delete + +```mysql +#删除id为1006这行 +delete from `表名` where id = 1006; +``` + +### 3、作业 + +```mysql +-- 第一题 +-- 1、创建数据库test01_market +CREATE DATABASE `test01_market`; +-- 2、创建表格customers +USE `test01_market`; +-- | 字段名 | 数据类型 | +-- | --------- | ----------- | +-- | c_num | int(11) | +-- | c_name | varchar(50) | +-- | c_contact | varchar(50) | +-- | c_city | varchar(50) | +-- | c_birth | date | +CREATE TABLE `customers`( + `c_num` INT(11), + `c_name` VARCHAR(50), + `c_contact` VARCHAR(50), + `c_city` VARCHAR(50), + `c_birth` DATE +); +-- **要求3:**将c_contact字段移动到c_birth字段后面 +ALTER TABLE `customers` MODIFY `c_contact` VARCHAR(50) AFTER `c_birth`; +-- **要求4:**将c_name字段数据类型改为 varchar(70) +ALTER TABLE `customers` MODIFY `c_name` VARCHAR(70); +DESC `customers` +-- **要求5:**将c_contact字段改名为c_phone +ALTER TABLE `customers` CHANGE `c_contact` `c_phone` VARCHAR(50); +-- **要求6:**增加c_gender字段到c_name后面,数据类型为char(1) +ALTER TABLE `customers` ADD `c_gender` char(1) AFTER `c_name`; +-- **要求7:**将表名改为customers_info +ALTER TABLE `customers` RENAME `customers_info`; +-- **要求8:**删除字段c_city +ALTER TABLE `customers_info` DROP `c_city`; +``` + +```mysql +-- 第二题 +-- 1、创建数据库test02_library +CREATE DATABASE `test02_library`; +-- 2、创建表格books +USE `test02_library`; +-- | 字段名 | 字段说明 | 数据类型 | 允许为空 | 唯一 | +-- | ------- | -------- | ------------- | -------- | ---- | +-- | b_id | 书编号 | int(11) | 否 | 是 | +-- | b_name | 书名 | varchar(50) | 否 | 否 | +-- | authors | 作者 | varchar(100) | 否 | 否 | +-- | price | 价格 | float | 否 | 否 | +-- | pubdate | 出版日期 | year | 否 | 否 | +-- | note | 说明 | varchar(100) | 是 | 否 | +-- | num | 库存 | int(11) | 否 | 否 | +CREATE TABLE `books`( +`b_id` int(11) NOT NULL UNIQUE COMMENT "书编号", +`b_name` VARCHAR(50) NOT NULL COMMENT "书名", +`authors` VARCHAR(100) NOT NULL COMMENT "作者", +`price` float NOT NULL COMMENT "价格", +`pubdate` year NOT NULL COMMENT "出版日期", +`note` varchar(100) COMMENT "说明", +`num` int(11) NOT NULL COMMENT "库存" +); +-- 3、向books表中插入记录 + +-- 1) 指定所有字段名称插入第一条记录 +INSERT INTO `books`(`b_id`,`b_name`,`authors`,`price`,`pubdate`,`note`,`num`) VALUES (1,'Tal of AAA','Dickes',23,'1995','novel',11) +-- 2)不指定字段名称插入第二记录 +INSERT INTO `books` VALUES (2,'EmmaT','Jane lura',35,'1993','joke',22) +-- 3)同时插入多条记录(剩下的所有记录) +INSERT INTO `books` VALUES (3,'Story of Jane','Jane Tim',40,'2001','novel',0), +(4,'Lovey Day','George Byron',20,'2005','novel',30), +(5,'Old land','Honore Blade',30,'2010','law',0), +(6,'The Battle','Upton Sara',30,'1999','medicine',40), +(7,'Rose Hood','Richard haggard',28,'2008','cartoon',28); +-- | b_id | b_name | authors | price | pubdate | note | num | +-- | ---- | ------------- | --------------- | ----- | ------- | -------- | ---- | +-- | 1 | Tal of AAA | Dickes | 23 | 1995 | novel | 11 | +-- | 2 | EmmaT | Jane lura | 35 | 1993 | joke | 22 | +-- | 3 | Story of Jane | Jane Tim | 40 | 2001 | novel | 0 | +-- | 4 | Lovey Day | George Byron | 20 | 2005 | novel | 30 | +-- | 5 | Old land | Honore Blade | 30 | 2010 | law | 0 | +-- | 6 | The Battle | Upton Sara | 30 | 1999 | medicine | 40 | +-- | 7 | Rose Hood | Richard haggard | 28 | 2008 | cartoon | 28 | + +-- 4、将小说类型(novel)的书的价格都增加5。 +UPDATE `books` set `price`=`price` + 5 WHERE `note` = 'novel'; +-- 5、将名称为EmmaT的书的价格改为40。 +UPDATE `books` set `price`=40 WHERE `b_name` = 'EmmaT'; +-- 6、删除库存为0的记录 +DELETE FROM `books` WHERE num=0; +``` + +```mysql +-- 第三题 +-- 1、创建数据库test03_bookstore +CREATE DATABASE `test03_bookstore`; +-- 2、创建book表 +USE `test03_bookstore`; +-- ```mysql +-- +----------+--------------+------+-----+---------+----------------+ +-- | Field | Type | Null | Key | Default | Extra | +-- +----------+--------------+------+-----+---------+----------------+ +-- | id | int(11) | NO | PRI | NULL | auto_increment | +-- | title | varchar(100) | NO | | NULL | | +-- | author | varchar(100) | NO | | NULL | | +-- | price | double(11,2) | NO | | NULL | | +-- | sales | int(11) | NO | | NULL | | +-- | stock | int(11) | NO | | NULL | | +-- | img_path | varchar(100) | NO | | NULL | | +-- +----------+--------------+------+-----+---------+----------------+ +-- ``` +CREATE TABLE `book`( +`id` int(10) PRIMARY KEY, +`title` varchar(100) NOT NULL, +`author` varchar(100) NOT NULL, +`price` double(11,2) NOT NULL, +`sales` int(11) NOT NULL, +`stock` int(11) NOT NULL, +`img_path` varchar(100) NOT NULL +); +DESC `book`; +-- 尝试添加部分模拟数据,参考示例如下: + +-- ```mysql +-- +----+-------------+------------+-------+-------+-------+----------------------------+ +-- | id | title | author | price | sales | stock | img_path | +-- +----+-------------+------------+-------+-------+-------+-----------------------------+ +-- | 1 | 解忧杂货店 | 东野圭吾 | 27.20 | 102 | 98 | upload/books/解忧杂货店.jpg | +-- | 2 | 边城 | 沈从文 | 23.00 | 102 | 98 | upload/books/边城.jpg | +-- +----+---------------+------------+-------+-------+-------+----------------------------+ +-- ``` +INSERT INTO `book` VALUES (1,'解忧杂货店','东野圭吾',27.20,102,98,'upload/books/解忧杂货店.jpg'), +(2,'边城','沈从文',23.00,102,98,'upload/books/边城.jpg'); +-- 3、创建用户表users,并插入数据 + +-- ```mysql +-- +----------+--------------+------+-----+---------+----------------+ +-- | Field | Type | Null | Key | Default | Extra | +-- +----------+--------------+------+-----+---------+----------------+ +-- | id | int(11) | NO | PRI | NULL | auto_increment | +-- | username | varchar(100) | NO | UNI | NULL | | +-- | password | varchar(100) | NO | | NULL | | +-- | email | varchar(100) | YES | | NULL | | +-- +----------+--------------+------+-----+---------+----------------+ +-- ``` +CREATE TABLE `users`( +`id` int(11) NOT NULL PRIMARY key, +`username` varchar(100) NOT NULL UNIQUE key, +`password` varchar(100) NOT NULL, +`email` varchar(100) +); +-- 尝试添加部分模拟数据,参考示例如下: + +-- ```mysql +-- +----+----------+----------------------------------+--------------------+ +-- | id | username | password | email | +-- +----+----------+----------------------------------+--------------------+ +-- | 1 | admin | 112233 | admin@mxdx.com | +-- +----+----------+----------------------------------+--------------------+ +-- ``` +INSERT INTO `users` VALUES (1,'admin','112233','admin@mxdx.com'); +-- 4、创建订单表orders + +-- ```mysql +-- +--------------+--------------+------+-----+---------+-------+ +-- | Field | Type | Null | Key | Default | Extra | +-- +--------------+--------------+------+-----+---------+-------+ +-- | id | varchar(100) | NO | PRI | NULL | | +-- | order_time | datetime | NO | | NULL | | +-- | total_count | int(11) | NO | | NULL | | +-- | total_amount | double(11,2) | NO | | NULL | | +-- | state | int(11) | NO | | NULL | | +-- | user_id | int(11) | NO | MUL | NULL | | +-- +--------------+--------------+------+-----+---------+-------+ +-- ``` +CREATE TABLE `orders`( +`id` varchar(100) NOT NULL PRIMARY KEY, +`order_time` datetime NOT NULL, +`total_count` int(11) NOT NULL, +`total_amount` double(11,2) NOT NULL, +`state` int(11) NOT NULL, +`user_id` int(11) NOT NULL +); +-- 尝试添加部分模拟数据,参考示例如下: + +-- ```mysql +-- +----------------+---------------------+-------------+--------------+-------+---------+ +-- | id | order_time | total_count | total_amount | state | user_id | +-- +----------------+---------------------+-------------+--------------+-------+---------+ +-- | 15294258455691 | 2018-06-20 00:30:45 | 2 | 50.20 | 0 | 1 | +-- +----------------+---------------------+-------------+--------------+-------+---------+ +-- ``` +INSERT INTO `orders` VALUES ('15294258455691','2018-06-20 00:30:45',2,50.20,0,1); +-- 5、创建订单明细表order_items + +-- ```mysql +-- +----------+--------------+------+-----+---------+----------------+ +-- | Field | Type | Null | Key | Default | Extra | +-- +----------+--------------+------+-----+---------+----------------+ +-- | id | int(11) | NO | PRI | NULL | auto_increment | +-- | count | int(11) | NO | | NULL | | +-- | amount | double(11,2) | NO | | NULL | | +-- | title | varchar(100) | NO | | NULL | | +-- | author | varchar(100) | NO | | NULL | | +-- | price | double(11,2) | NO | | NULL | | +-- | img_path | varchar(100) | NO | | NULL | | +-- | order_id | varchar(100) | NO | MUL | NULL | | +-- +----------+--------------+------+-----+---------+----------------+ +-- ``` +create table `order_items`( +`id` int(11) primary key, +`count` int(11) not null, +`amount` double(11,2) not null, +`title` varchar(100) not null, +`author` varchar(100)not null, +`price` double(11,2) not null, +`img_path` varchar(100)not null, +`order_id` varchar(100) not null +); +-- 尝试添加部分模拟数据,参考示例如下: + +-- ```mysql +-- +----+-------+--------+---------+---------+-------+----------------+----------------+ +-- | id |count| amount| title | author | price | img_path | order_id | +-- +----+-------+--------+------------+----------+-------+----------------+----------------+ +-- | 1 | 1 | 27.20| 解忧杂货店 | 东野圭吾 | 27.20 | static/img/default.jpg|15294258455691 | +-- | 2 | 1 | 23.00| 边城 | 沈从文 | 23.00 | static/img/default.jpg|15294258455691 | +-- +----+-------+--------+------------+----------+-------+------------+----------------+ +-- ``` +insert into order_items values +(1,1,27.20,'解忧杂货店','东野圭吾',27.20,'static/img/default.jpg','15294258455691'), +(2,1,23.00,'边城','沈从文',23.00,'static/img/default.jpg','15294258455691'); +``` + -- Gitee