diff --git "a/53 \345\276\220\345\205\210\351\221\253/2023.02.13 mysql\345\210\235\345\247\213\350\257\255\346\263\225.md" "b/53 \345\276\220\345\205\210\351\221\253/2023.02.13 mysql\345\210\235\345\247\213\350\257\255\346\263\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..fe3660259efe11cda65cee049945f90df1747dfc --- /dev/null +++ "b/53 \345\276\220\345\205\210\351\221\253/2023.02.13 mysql\345\210\235\345\247\213\350\257\255\346\263\225.md" @@ -0,0 +1,112 @@ +# 笔记 + +mysql : + +数据库:DB (database) + +数据库分类: 早期分类 :层次模型、网状模型、关系模型 + +关系模型:关系型数据库 + +: 非关系型数据库 + +数据库管理系统:DBMS (Database Management system) + +SQL : 结构化查询语言 (Structure Query Language) + +mysql : + +使用客户端登陆mysql服务器、 + +方法一 + +开始菜单==》所有程序==》MySQL==》MySQL Server 5.7==》MySQL 5.7 Command Line Client + +方法二 + +使用cmd命令连接 + +**mysql -h 主机名 -P 端口号 -u 用户名 -p密码 + +```sql +MySQL -h localhost -p 3306 -u root -proot +``` + +```sql +mysql -h localhost -P 3306 -u root -p +Enter password:**** +``` + +注意: 使用mysql 前设置环境变量 + +数据库: + +查看所有数据库 + +```sql +show databases; +``` + +创建自己的数据库 + +```sql +create database 库名 charset utf8; +``` + +创建完数据库使用数据库才可以创建表格 + +```sql +use 库名 +``` + +删除数据库 + +```sql +drop database 库名 +``` + +查看某个库的所有表格 + +前提使用库 use+库名 + +```sql +show tables +show tables from 库名 +``` + +创建新的表格 + +```sql +create table 表名( + 字段名 数据类型, + 字段名 数据类型 +); +``` + +查看定义好的表结构 + +```sql +desc 表名 +``` + +添加记录 + +```sql +insert into 表名 values(值列表); +``` + +查看表的数据 + +```sql +select * from 表名 +``` + +删除表 + +```sql +drop table 表名 +``` + +# 作业 + +安装mysql diff --git "a/53 \345\276\220\345\205\210\351\221\253/2023.02.15 MySQL\350\257\255\346\263\225.md" "b/53 \345\276\220\345\205\210\351\221\253/2023.02.15 MySQL\350\257\255\346\263\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..80241a9ca46b29516c8a906b4fa6b5720ca83cce --- /dev/null +++ "b/53 \345\276\220\345\205\210\351\221\253/2023.02.15 MySQL\350\257\255\346\263\225.md" @@ -0,0 +1,176 @@ +# 笔记 + +    SQL:结构化查询语言,(Structure Query Language) + +sql分类 + +DDL (数据定义语言) + +命令:create 创建、alter 修改、drop 删除、show展示、 + +DML (数据操作语言) + +命令:insert 增 、delete 删、update改 + +DQL:数据查询语言 + +命令 :select 查询 + +DCL:数据控制语言 + +命令 :grant 授权、commit 确认 、rollback 回滚 + +SQL脚本注释 + +* 单行注释:#注释内容(mysql特有的) + +* 单行注释:--空格注释内容 其中--后面的空格必须有 + +* 多行注释:/* 注释内容 */ + + + + + +SQL中的标点符号 + +1. 本身成对的标点符号必须成对,例如:(),'',""。 + +2. 所有标点符号必须英文状态下半角输入方式下输入。 + +几个特殊的标点符号: + +1. 小括号(): + + 1. 在创建表、添加数据、函数使用、子查询、计算表达式等等会用()表示某个部分是一个整体结构。 + 2. 思考: 2+3 * 6 =20 和 (2+3) * 6 =30的区别 + +2. 单引号'':**字符串和日期类型的数据值使用单引号''引起来**,数值类型的不需要加标点符号。 + +3. “2023-10--10” + +4. 双引号"":列的别名可以使用引号"",**给表名取别名不要用引号**。 + +5. 在MySQL中双引号通常等价于单引号 + +MYSQL支持数据类型: + +float 、double 是浮点型小数 + +decimal 是定点型小数 + +小数的限制 + +(M.N):M为限制的总长度 整数部分+小数部分),N小数点后数字的长度 + + 对于N 超出限制时,会截断并四舍五入,不足时,会以0补齐 + +```sql +use taobao; + +CREATE DATABASE `CREATE`;# '"` 反引号,也飘号 + +create table test_number( id int, # 整数,默认显示宽度11 ,这是最常用的 +id2 int(5), # 这里5因为是单独使用,无任何意义 +id3 int(5) ZEROFILL,# 这里的5表示,不足5位,用0补足5位,与允许的长度无关! + price float, # double +num1 float(4,2), # 4表示整数+小数的总长度,2表示小数的长度, +double(4,2) #当小数超出范围会自动截断并四舍五入,小数不足自动以0补齐 +num2 decimal,# 不写(),默认是(10,0) +num3 decimal(4,2)# 4表示整数+小数的总长度,2表示小数的长度 ) +``` + +字符串 char varchar text 后台如果带(M),这个M表示限制字符串的长度 + +char 固定长度的字符串 + +varchar(M)是可变长度的字符串 注意(M)不能缺省 + +```sql +CREATE TABLE test_text( name char, # char不写(M)默认长度就是1, + name2 char(4), +#name3 varchar , + tel_num char(11), +card_num char(18), +name4 varchar(4)); +``` + +Enum和Set类型 + +```sql +字段名ENUM(‘值1’,‘值2’,…‘值n’) + +字段名 SET(‘值1’,‘值2’,…‘值n’) +``` + +数据字段属性 + +**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** + +* 默认的 + +* 用于设置默认值 + +* 例如,性别字段,默认为"男" , 否则为 "女" ; 若无指定该列的值 , 则默认值为"男"的值 + +# 作业 + +数据库class3 +表student +字段:学号,姓名,性别,爱好,住址,联系方式,邮箱,QQ号 +并新增一条自己的记录。 + + + +```sql +create databse class3 charset utf8; +use class3; +-- + +DROP TABLE IF EXISTS `student`; + +CREATE TABLE `student` ( + `学号` char(10) DEFAULT NULL, + `姓名` varchar(5) DEFAULT NULL, + `性别` enum('男','女') DEFAULT NULL, + `爱好` text, + `住址` text, + `联系方式` char(11) DEFAULT NULL, + `邮箱` text, + `QQ` char(10) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +LOCK TABLES `student` WRITE; + +INSERT INTO `student` VALUES ('2244301110','叶惠美','女','唱歌','台湾省台北市','12345678900','1212224237@qq.com','123445566'); + +UNLOCK TABLES; +``` + + diff --git "a/53 \345\276\220\345\205\210\351\221\253/2023.02.16 DDL\345\222\214DML.md" "b/53 \345\276\220\345\205\210\351\221\253/2023.02.16 DDL\345\222\214DML.md" new file mode 100644 index 0000000000000000000000000000000000000000..b31d9dac61513a6374121c1a914613fc76753551 --- /dev/null +++ "b/53 \345\276\220\345\205\210\351\221\253/2023.02.16 DDL\345\222\214DML.md" @@ -0,0 +1,428 @@ +# 笔记 + +查看数据库 + +```sql +show databases; +``` + +创建自己的数据库 + +```sql +create database [IF not EXISTS] 数据库名; +``` + +删除数据库 + +```sql +DROP DATABASE [IF EXISTS] 数据库名称; +``` + +查看某个数据库的详细定义 + +```sql +SHOW CREATE DATABASE 数据库名称; +``` + +修改数据库的编码 + +```sql +ALTER DATABASE 数据库名 CHARACTER SET 新的字符集名称 COLLATE 校对规则; +``` + +校对规则 可理解成排序规则 + +在当前数据库下面,查看另一个数据库下面,当前用户可以查看的表有哪些 + +```sql +show tables from mxdx;#创建表格 + +CREATE TABLE IF NOT EXISTS 表名称 ( + 字段名1 数据类型, +字段名2 数据类型, +字段名3 数据类型); +``` + +查看表结构 + +```sql +DESC 表名称; +#例如 +:desc student; +``` + +查看表的详细定义 + +```sql +SHOW CREATE TABLE 表名称; +``` + +删除表格 + +```sql +DROP TABLE IF EXISTS 表名称; +``` + +有关表的修改的各种操作: + +修改表的字符集和校对规则 + +```sql +ALTER TABLE 表名称 CHARSET=新字符集 COLLATE=新校对规则; +修改字符集编码,只能之后的操作有效。之前的影响不到 +``` + +增加一个字段 + +```sql +ALTER TABLE 表名称 ADD COLUMN 字段名 数据类型; +``` + +删除一个字段 + +```sql +ALTER TABLE 表名称 DROP COLUMN 字段名; +``` + +修改一个字段名称 + +```sql +ALTER TABLE 表名称 CHANGE 旧字段名称 新的字段名称 数据类型; +``` + +修改一个字段的数据类型 + +```sql +ALTER TABLE 表名称 MODIFY 字段名称 新数据类型; +``` + +修改字段的位置,顺序 + +```sql +ALTER TABLE 表名称 MODIFY 字段名称 数据类型 AFTER 另一个字段; +ALTER TABLE 表名称 MODIFY 字段名称 数据类型 FIRST; +``` + +重命名表 + +```sql +ALTER TABLE 表名称 RENAME TO 新名称; +``` + +# DML + +增删改 + +```sql +alter table xueshen rename to stu; +将xueshen重命名为stu +``` + +添加语句 + +```sql +INSERT INTO 表名称 VALUES(值列表); +要求值列表的数量、顺序要与表结构一一对应 +``` + +添加语句,可以指定部分字段赋值 + +```sql +INSERT INTO 表名称(字段列表) VALUES(值列表); +值列表只需要和前面的字段列表数量、顺序一一对应就可以 +``` + +一条insert语句同时添加多行记录 + +```sql +INSERT INTO 表名称 VALUES(值列表),(值列表),(值列表)...; +INSERT INTO 表名称(字段列表) VALUES(值列表),(值列表),(值列表)...; +``` + +修改 + +```sql +UPDATE 表名称 SET 字段名 = 值,字段名 = 值,字段名 = 值; +``` + +删除整个表的数据 + +```sql +DELETE FROM 表名称; +``` + +删除部分行 + +```sql +DELETE FROM 表名称 WHERE 条件; +``` + +# 作业 + +```sql + +-- 1、创建数据库test01_market +CREATE DATABASE test01_market CHARSET utf8; +-- +-- 2、创建表格customers +CREATE table customers( +c_num int, +c_name VARCHAR(50), +c_contact varchar(50), +c_city varchar(50), +c_birth date); +-- +-- | 字段名 | 数据类型 | +-- | --------- | ----------- | +-- | 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); +-- +-- **要求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 COLUMN c_gerder char(1); +ALTER TABLE customers MODIFY c_gender char(1) AFTER c_name; +-- +-- **要求7:**将表名改为customers_info +ALTER TABLE customers RENAME TO customers_info; + +-- +-- **要求8:**删除字段c_city +ALTER TABLE customers_info DROP COLUMN c_city; + + + + +第2题 +-- +-- 1、创建数据库 +CREATE DATABASE test02_library CHARSET utf8; +-- +-- 2、创建表格books +CREATE TABLE books( +b_id INT, +b_name VARCHAR(50), +authors VARCHAR(100), +price FLOAT, +pubdate YEAR, +note VARCHAR(100), +num int); +-- +-- | 字段名 | 字段说明 | 数据类型 | 允许为空 | 唯一 | +-- | ------- | ---- | ------------ | ---- | --- | +-- | b_id | 书编号 | int(11) | 否 | 是 | +-- | b_name | 书名 | varchar(50) | 否 | 否 | +-- | authors | 作者 | varchar(100) | 否 | 否 | +-- | price | 价格 | float | 否 | 否 | +-- | pubdate | 出版日期 | year | 否 | 否 | +-- | note | 说明 | varchar(100) | 是 | 否 | +-- | num | 库存 | int(11) | 否 | 否 | +-- +-- 3、向books表中插入记录 +INSERT into books VALUES (2,'人间失格','太宰治',30,1990,'novel',9); + + + + +-- 1) 指定所有字段名称插入第一条记录 + +-- +-- 2)不指定字段名称插入第二记录 +-- +-- 3)同时插入多条记录(剩下的所有记录) +INSERT into books VALUES(1,'Tal of AAA','Dickes',23,1995,'novel',11); +INSERT into books VALUES(3,'EmmaT','Jane lura',35,1993,'joke',22),(4,'story of jane','Jane Tim',40,2001,'novel',0),(5,'Lovey Day','George Byron',20,2005,'novel',30),(6,'Old land','Honore Blade',30,2010,'law',0); +INSERT into books VALUES(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 | | 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; + + +第三题 + +-- 1、创建数据库test03_bookstore +CREATE database test03_bookstore CHARSET utf8; +use test03_bookstore; + +-- +-- 2、创建book表 +CREATE table 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 | | +-- +----------+--------------+------+-----+---------+----------------+ +-- ``` + id int(11) not null auto_increment 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 + ); + + +-- +-- 尝试添加部分模拟数据,参考示例如下: +-- +-- ```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,'UPDATE/books/解忧杂货店.jpg'); +insert into book VALUES(2,'边城','沈从文',23.00,102,98,'upload/books/边城.jpg'); + +-- +-- 3、创建用户表users,并插入数据 +CREATE table 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 | | +-- +----------+--------------+------+-----+---------+----------------+ +-- ``` +id int(11) not null auto_increment primary key, +username varchar(100) not null, +password varchar(100) not null, +email varchar(100)null + +); +-- +-- 尝试添加部分模拟数据,参考示例如下: +-- +-- ```mysql +-- +----+----------+----------------------------------+--------------------+ +-- | id | username | password | email | +-- +----+----------+----------------------------------+--------------------+ +-- | 1 | admin | 112233 | admin@mxdx.com | +-- +----+----------+----------------------------------+--------------------+ +-- ``` +insert into users VALUES(1,'admin','112233','admin@mxdx.com') +-- +-- 4、创建订单表orders +CREATE table 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 | | +-- +--------------+--------------+------+-----+---------+-------+ +-- ``` +id varchar(100) 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 add index(user_id); + + +-- +-- 尝试添加部分模拟数据,参考示例如下: +-- +-- ```mysql +insert into orders values("15294258455691","2018-06-20 00:30:45 ",2,50.20,0,1); +-- +----------------+---------------------+-------------+--------------+-------+---------+ +-- | id | order_time | total_count | total_amount | state | user_id | +-- +----------------+---------------------+-------------+--------------+-------+---------+ +-- | 15294258455691 | 2018-06-20 00:30:45 | 2 | 50.20 | 0 | 1 | +-- +----------------+---------------------+-------------+--------------+-------+---------+ +-- ``` +-- +-- 5、创建订单明细表order_items +-- +create table order_items( +id int PRIMARY key auto_increment, +count int, +amount double(11,2), +title varchar(100), +author varchar(100), +price double(11,2), +img_path varchar(100), +order_id varchar(100) +); +alter table order_items add index(order_id); + +-- ```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 | | +-- +----------+--------------+------+-----+---------+----------------+ +-- ``` +-- +-- 尝试添加部分模拟数据,参考示例如下: +insert into order_items values(1,1,27.20,"解忧杂货店","东野圭吾",27.20,"static/img/default.jpg","15294258455691") +insert into order_items values(2,1,23.00,"边城","沈从文",23.00,"static/img/default.jpg","15294258455691") + +-- +-- ```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 | +-- +----+-------+--------+------------+----------+-------+------------+----------------+ +-- ``` +-- +```