diff --git "a/01 \350\213\217\346\270\205\345\215\216/20230215SQL\350\257\255\345\217\245\345\222\214\346\225\260\346\215\256\347\261\273\345\236\213.md" "b/01 \350\213\217\346\270\205\345\215\216/20230215SQL\350\257\255\345\217\245\345\222\214\346\225\260\346\215\256\347\261\273\345\236\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..b5e95f4b1629161e4386ce95a8168252f3ddaad9 --- /dev/null +++ "b/01 \350\213\217\346\270\205\345\215\216/20230215SQL\350\257\255\345\217\245\345\222\214\346\225\260\346\215\256\347\261\273\345\236\213.md" @@ -0,0 +1,227 @@ +# MySQL数据库概述 + +### 1.1 基本概念 + +* 数据库(DB):database 存储数据的地方 + +* 使用数据库是为了能够永久保存数据。当然这里指的是非内存数据库。 + +* 分类 + + 早期:层次模型、网状模型、关系模型 + + 目前市场上主要分为:关系型数据库、非关系型数据库 + +* 管理 + + 数据库管理系统(DBMS):一种操纵和管理数据库的大型软件,例如建立、使用和维护数据库。 + + MySQL、Oracle、SqlServer都是数据库管理系统。 + +![image-20230216215054687](E:\mysql作业\mysql仓库\mysql-base\01 苏清华\images\image-20230216215054687.png) + +### 1.2 MySQL数据库管理系统 + +* DBMS:关系型数据库和非关系型数据库。 + - 关系型数据库:表格类型的。 + - 非关系型数据库:非表格类型的。 + +# MySQL的安装与使用 + +### 2.1 安装 + +官网——下载安装 + +### 2.2 使用 + +* MySQL自带客户端 + +* cmd命令连接 + + `mysql -h 主机名 -p 端口号 -u 用户名 -p密码` + + `mysql -h localhost -p 3306 -u root -proot` + + 可简写为:`mysql -u root -p` + +* 第三方工具Navicat + +# 命令演示 + +* 查看所有的数据库 + + ```mysq + show databases; + ``` + +* 创建数据库 + + ```mysql + create database 数据库名 charset 编码集; + create database md charset utf8; + ``` + +* 修改 + + ```mysql + alter database 数据库名; + alter table 表名 change 原列名 现列名 列属性; + ``` + +* 删除数据库 + + ```mysql + drop database 数据库名; + drop database md; + ``` + +* 使用数据库 + + ```mysql + use 数据库名; + use md; + ``` + + * 查看所有表 + + ``` mysql + show tables; + show tables from md; + ``` + +* 创建表 + + ``` mysql + create table mm( + 列1 类型, + 列2 类型 + ); + ``` + +* 查看表结构 + + ``` mysql + desc 数据库名.数据表名; + ``` + +* 表中添加数据 + + ```mysql + insert into 表名(要添加的列,如果添加全部可不写)values (按顺序添加内容); + ``` + +* 查询表中数据 + + ```mysql + select 列表名(查看全部可写成*) from 表名 + ``` + +* 删除表数据 + + ```mysql + delete from 表名 where id=n; + ``` + +# SQL语句 + +SQL:结构化查询语言 + +### 分类 + +| 名称 | 解释 | 命令 | +| -------------------- | ---------------- | -------------------------- | +| DDL (数据定义语言) | 管理数据对象结构 | create,alter,drop, show | +| DML (操作) | 操作数据 | insert,delete,update | +| DQL (查询) | 查询数据 | select | +| DCL (控制) | 管理数据库的语言 | grant,commit,rollback | + +### 语法规范 + +* 不区分大小写(建议小写) +* 命名:英文+下划线/数字 +* 不要使用关键字 可以使用`` +* 不能重名 + +### 注释 + +* # +* -- +* /* ... */ 多行 + +### 标点符号 + +* 成对的 ‘ ’ “ ” ( ) + +* 英文状态 +* 特殊符号 + - ( ) 创建表函数等 + - “ ” 字符串和日期类型 + - “ ” 列的别名 + - “ ” 大多等于 ’ ‘ + +# 数据类型 + +### 整数和小数 + +* 整数: + + int (0-255) m需要配合使用,如zerofill + +* 小数: + + float 单精度 + + double 双精度 + + decimal 定点数 默认(10,0) 122.55——123 + +### 字符串 + +​ char 固定长度 + +​ varchar(m) 可变长度 以实际填写的为准 + +### 日期 + +​ year 年 2023 + +​ date 日期 2023-02-16 + +​ time 时间 11:20:25 + +​ datetime 日期时间 2023+02-16 11:20:25 + +### enum和set + +* enum 单选 枚举型 只能选一个且不能不选 可以使用下标定位 +* set 多选 集合型 可以不选 下标2次方定位 + +# 作业 + +数据库class3 +表student +字段:学号,姓名,性别,爱好,住址,联系方式,邮箱,QQ号,并新增一条自己的记录。 + +```mys +CREATE DATABASE class3; +USE class3; +CREATE TABLE student( +s_id INT (10), +s_name VARCHAR (4), +s_sex enum('男','女'), +s_hobby SET ('睡觉', '打游戏', '听音乐' ), +s_address VARCHAR(35), +s_phone int(11), +s_email VARCHAR(15), +s_qq int(10) +); +ALTER database class3 CHARSET utf8; +SELECT * FROM student; +INSERT into student VALUES(301,'苏清华',2,7,'福建龙岩闽西学院',18649670916,'1463670799@qq.com',1463670799); +alter table student change s_phone s_phone CHAR(11); +alter table student change s_qq s_qq CHAR(10); +alter table student change s_id s_id int; +alter table student change s_email s_email VARCHAR(25); +``` + +![image-20230216215109100](E:\mysql作业\mysql仓库\mysql-base\01 苏清华\images\image-20230216215109100.png) \ No newline at end of file diff --git "a/01 \350\213\217\346\270\205\345\215\216/20230218DML\346\223\215\344\275\234\350\257\255\350\250\200.md" "b/01 \350\213\217\346\270\205\345\215\216/20230218DML\346\223\215\344\275\234\350\257\255\350\250\200.md" new file mode 100644 index 0000000000000000000000000000000000000000..b6ed749706a63501101387f05566595a85ddde2b --- /dev/null +++ "b/01 \350\213\217\346\270\205\345\215\216/20230218DML\346\223\215\344\275\234\350\257\255\350\250\200.md" @@ -0,0 +1,369 @@ +# DML操作语言 + +### 添加、新增 + +```mysql +insert into 表名 values(...); #全部 +insert into 表名(字段1,字段2...) values(...); #定字段添加 +insert into 表名(字段n) values(...),(...); #添加多行 +``` + +### 修改、更新 + +```mysql +update 表名 set name='xx' where id=1001; #将id=1001这行的名字修改为xx +update 表名 set sex='女' where id>=1001 and id<=1007; #将id在1001-1007之间的性别改为女 +update 表名 set sex='女' where sex is null; #将sex值为空值的性别改为女 +``` + +### 删除 + +```mysql +delete from stu where id=1007; #将stu表中id为1007的这行数据删除 +update stu set name=null; #将stu表中name这列清除数据 +alter table stu drop name; #将stu表中name这列字段删除 +``` + +# 作业 + +### 第一题 + +##### 1、创建数据库test01_market + +```mysql +create database test01_market CHARSET utf8; +``` + +##### 2、创建表格customers + +```mysql +use test01_market; +``` + +| 字段名 | 数据类型 | +| --------- | ----------- | +| c_num | int(11) | +| c_name | varchar(50) | +| c_contact | varchar(50) | +| c_city | varchar(50) | +| c_birth | date | + +```mysql +CREATE table customers( +c_num int, +c_name VARCHAR(50), +c_contact VARCHAR(50), +c_city VARCHAR(50), +c_birth date); +``` + +##### 3:将c_contact字段移动到c_birth字段后面 + +```mysql +ALTER TABLE customers MODIFY c_contact VARCHAR(50) AFTER c_birth; +``` + +##### 4:将c_name字段数据类型改为 varchar(70) + +```mysql +alter TABLE customers CHANGE c_name c_name VARCHAR(70); +``` + +##### 5:将c_contact字段改名为c_phone + +```mysql +alter table customers CHANGE c_contact c_phone CHAR(11); +``` + +##### 6:增加c_gender字段到c_name后面,数据类型为char(1) + +```mysql +alter table customers add c_gender CHAR(1) after c_name; +``` + +##### 7:将表名改为customers_info + +```mysql +RENAME table customers to customers_info; +``` + +##### 8:删除字段c_city + +```mysql +alter table customers_info drop c_city; +``` + +### 第二题 + +##### 1、创建数据库test02_library + +```mysql +CREATE DATABASE test02_library CHARSET utf8; +``` + +##### 2、创建表格books + +```mysql +use test02_library; +``` + +| 字段名 | 字段说明 | 数据类型 | 允许为空 | 唯一 | +| ------- | -------- | ------------- | -------- | ---- | +| b_id | 书编号 | int(11) | 否 | 是 | +| b_name | 书名 | varchar(50) | 否 | 否 | +| authors | 作者 | varchar(100) | 否 | 否 | +| price | 价格 | float | 否 | 否 | +| pubdate | 出版日期 | year | 否 | 否 | +| note | 说明 | varchar(100) | 是 | 否 | +| num | 库存 | int(11) | 否 | 否 | + +```mysql +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 '库存'); +show full COLUMNS FROM books; +``` + +##### 3、向books表中插入记录 + +1) 指定所有字段名称插入第一条记录 + +2)不指定字段名称插入第二记录 + +3)同时插入多条记录(剩下的所有记录) + +| 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 | + +```mysql +INSERT into books(b_id,b_name,`authors`,price,pubdate,note,num) values( +1,'Tal of AAA','Dickes',23,'1995','novel',11); +INSERT into books VALUES( +2,'EmmaT','Jane lura ',35,'1993','joke',22); +INSERT INTO books VALUES(3,'Story of Jane','Jane Tim ',40,'2001','novel',0), +(4,'Lovey Day','George Byro',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); +SELECT * from books; +``` + +##### 4、将小说类型(novel)的书的价格都增加5。 + +```mysql +update books set price=price+5 where note='novel'; +``` + +##### 5、将名称为EmmaT的书的价格改为40。 + +```mysql +UPDATE books set price=40 where b_name='EmmaT'; +``` + +##### 6、删除库存为0的记录 + +```mysql +DELETE from books where num=0; +``` + +### 第三题 + +##### 1、创建数据库test03_bookstore + +```mysql +CREATE database test03_bookstore CHARSET utf8; +``` + +##### 2、创建book表 + +```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 | | ++----------+--------------+------+-----+---------+----------------+ +``` + +```mysql +use test03_bookstore; +CREATE TABLE book( +id int(11) not null PRIMARY key auto_increment, +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); +``` + +尝试添加部分模拟数据,参考示例如下: + +```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 | ++----+---------------+------------+-------+-------+-------+----------------------------+ +``` + +```mysql +INSERT INTO book values( +1,'解忧杂货店','东野圭吾',21.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 | | ++----------+--------------+------+-----+---------+----------------+ +``` + +```mysql +CREATE table users( +id int(11) not null PRIMARY KEY auto_increment, +username VARCHAR(100) not null unique, +`password` VARCHAR(100) not null, +email VARCHAR(100)); +``` + +尝试添加部分模拟数据,参考示例如下: + +```mysql ++----+----------+----------------------------------+--------------------+ +| id | username | password | email | ++----+----------+----------------------------------+--------------------+ +| 1 | admin | 112233 | admin@mxdx.com | ++----+----------+----------------------------------+--------------------+ +``` + +```mysql +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 | | ++--------------+--------------+------+-----+---------+-------+ +``` + +```mysql +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); +ALTER table orders MODIFY COLUMN user_id int(11) not null, +add key(user_id); +``` + +尝试添加部分模拟数据,参考示例如下: + +```mysql ++----------------+---------------------+-------------+--------------+-------+---------+ +| id | order_time | total_count | total_amount | state | user_id | ++----------------+---------------------+-------------+--------------+-------+---------+ +| 15294258455691 | 2018-06-20 00:30:45 | 2 | 50.20 | 0 | 1 | ++----------------+---------------------+-------------+--------------+-------+---------+ +``` + +```mysql +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); +ALTER table orders MODIFY COLUMN user_id int(11) not null, +add key(user_id); + +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 | | ++----------+--------------+------+-----+---------+----------------+ +``` + +```mysql +CREATE table order_items( +id int(11) not null PRIMARY KEY auto_increment, +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); + +alter table order_items MODIFY COLUMN order_id VARCHAR(100) not null, +add key(order_id); +``` + +尝试添加部分模拟数据,参考示例如下: + +```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 | ++----+-------+--------+------------+----------+-------+------------+----------------+ +``` + +```mysql +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'); + +SELECT * from order_items; +``` + diff --git "a/01 \350\213\217\346\270\205\345\215\216/images/image-20230216215054687.png" "b/01 \350\213\217\346\270\205\345\215\216/images/image-20230216215054687.png" new file mode 100644 index 0000000000000000000000000000000000000000..836a6753688142f162246d50b6faf7f51ea14ed8 Binary files /dev/null and "b/01 \350\213\217\346\270\205\345\215\216/images/image-20230216215054687.png" differ diff --git "a/01 \350\213\217\346\270\205\345\215\216/images/image-20230216215109100.png" "b/01 \350\213\217\346\270\205\345\215\216/images/image-20230216215109100.png" new file mode 100644 index 0000000000000000000000000000000000000000..da0731deb52166933332c5de0578dd1d5a7a9758 Binary files /dev/null and "b/01 \350\213\217\346\270\205\345\215\216/images/image-20230216215109100.png" differ