diff --git "a/24 \344\275\231\345\200\251/20230213 MySQL\345\256\211\350\243\205\347\254\224\350\256\260.md" "b/24 \344\275\231\345\200\251/20230213 MySQL\345\256\211\350\243\205\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..86c5e5ae0d500e59daee050551aa058f85808a82 --- /dev/null +++ "b/24 \344\275\231\345\200\251/20230213 MySQL\345\256\211\350\243\205\347\254\224\350\256\260.md" @@ -0,0 +1,20 @@ +# 1、笔记 + + + +## 1.1如何安装数据库 + +在mysql网站上下载mysql5,7然后进入数据库安装界面。 + +下载完成后进入任务管理器点开服务界面,找到mysql服务将它设为自动并开启。 + +对此电脑右击进入属性选择高级管理进入环境变量中找到path变量将mysql路径输入C:\Program Files\MySQL\MySQL Server 5.7\bin。 + +使用win+r输入cmd进入管理员界面输入mysql出现以下代码表示安装成功 + +```sql +ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: N +``` + +接着输入mysql -uroot -proot进入账户-p(后面输入的是你创建mysql时输入的密码) + diff --git "a/24 \344\275\231\345\200\251/20230215 MySQL\345\273\272\345\272\223\345\222\214\345\273\272\350\241\250\347\254\224\350\256\260.md" "b/24 \344\275\231\345\200\251/20230215 MySQL\345\273\272\345\272\223\345\222\214\345\273\272\350\241\250\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..1a3932e98b37330a6052308830b5c9733046ec3f --- /dev/null +++ "b/24 \344\275\231\345\200\251/20230215 MySQL\345\273\272\345\272\223\345\222\214\345\273\272\350\241\250\347\254\224\350\256\260.md" @@ -0,0 +1,37 @@ +# 1、笔记 + +本节课讲了如何创建数据库、数据表与如何插入数据 + +## 1.1创建数据库代码 + +```sql +create database 数据库名 charset utf8; +``` + +## 1.2删除数据库 + +```sql +drop database 数据库名 +``` + +## 1.3创建数据表 + +```sql +create table 数据表名(id int,name varchar(m)); +``` + +# 2、作业 + +```sql +-- 数据库class3 +-- 表student +-- 字段:学号,姓名,性别,爱好,住址,联系方式,邮箱,QQ号 +-- 并新增一条自己的记录。 + +create database class3 charset utf8; +use class3; +create table student(id int,name varchar(10),sex enum('男','女'),aihao set('听音乐','游戏'),zhuzhi varchar(20),dianhua char(11),email varchar(50),qq varchar(20),cxw varchar(20)); + +insert into student values(24,'余倩','女','听音乐,游戏','学校',18859650117,'2931430074@qq.com',2931430074,'你好') +``` + diff --git "a/24 \344\275\231\345\200\251/20230216 DDL\345\222\214DML\345\273\272\350\241\250\344\270\216\345\242\236\345\200\274.md" "b/24 \344\275\231\345\200\251/20230216 DDL\345\222\214DML\345\273\272\350\241\250\344\270\216\345\242\236\345\200\274.md" new file mode 100644 index 0000000000000000000000000000000000000000..13ebbecc8f268b2a980a0876eb4eacd2742d3827 --- /dev/null +++ "b/24 \344\275\231\345\200\251/20230216 DDL\345\222\214DML\345\273\272\350\241\250\344\270\216\345\242\236\345\200\274.md" @@ -0,0 +1,263 @@ + + +# 笔记 + +## 1.1DDL + +### 创建数据库 + +```mysql +create database 数据库名 ; +create database 数据库名 charset 字符集; +``` + +### 查看所有的数据库 + +```mysql +show databases; #有一个s,代表多个数据库 +``` + +### 查看某个数据库的详细定义语句 + +```mysql +show create database 数据库名; +``` + +```mysql +show create database 数据库名\G +``` + +### 修改数据库编码 + +```mysql +#修改数据库字符集和校对规则 +ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称 COLLATE 字符集对应校对规则; +``` + +```mysql +ALTER DATABASE mxdx_chapter3_two CHARACTER SET utf8 COLLATE utf8_general_ci; +``` + +==**注意,**==修改数据库编码只会影响之后创建的表的默认编码,之前创建的表不会受影响。 + +### 删除数据库 + +```mysql +drop database 数据库名; +``` + +### 使用数据库 + +```mysql +use 数据库名; +``` + +# 作业 + + + +```mysql +—-- 1、创建数据库test01_market +CREATE database test01_market; +-- 2、创建表格customers +#| 字段名 | 数据类型 | +#| --------- | ----------- | +#| 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_brith; +-- **要求4:**将c_name字段数据类型改为 varchar(70) +ALTER TABLE customers MODIFY c_name VARCHAR(70); +-- **要求5:**将c_contact字段改名为c_phone +ALTER TABLE customers CHANGE c_name c_phone VARCHAR(50); +-- **要求6:**增加c_gender字段到c_name后面,数据类型为char(1) +ALTER TABLE customers ADD COLUMN c_gender 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、创建数据库test02_library +CREATE DATABASE test02_library; +USE test02_library; +#2、创建表格books +CREATE TABLE books( +b_id int(11) , +b_name VARCHAR(50), +`authors` VARCHAR(100), +price float, +pubdate year, +note VARCHAR(100), +num int(11) +); +ALTER TABLE BOOKS modify b_id int(11) not null; +-- | 字段名 | 字段说明 | 数据类型 | 允许为空 | 唯一 | +-- | ------- | -------- | ------------- | -------- | ---- | +-- | b_id | 书编号 | int(11) | 否 | 是 | +-- | b_name | 书名 | varchar(50) | 否 | 否 | +-- | authors | 作者 | varchar(100) | 否 | 否 | +-- | price | 价格 | float | 否 | 否 | +-- | pubdate | 出版日期 | year | 否 | 否 | +-- | note | 说明 | varchar(100) | 是 | 否 | +-- | num | 库存 | int(11) | 否 | 否 | + +#3、向books表中插入记录 +#1) 指定所有字段名称插入第一条记录 +INSERT INTO books(b_id,b_name,`authors`,price,pubdate,note,num)VALUE (1,'Tal of AAA','Dickes',23,1995,'novel',11); +SELECT*FROM books; +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; +SELECT*FROM books; +## 第3题 + +#1、创建数据库test03_bookstore +CREATE DATABASE test03_bookstore; +USE test03_bookstore; +#2、创建book表 +-- +----------+--------------+------+-----+---------+----------------+ +-- | 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(11), +title varchar(100), +`authors` varchar(100), +price double(11,2), +sales int(11), +stock int(11), +ing_path varchar(100) +); +-- 尝试添加部分模拟数据,参考示例如下: +-- +----+-------------+------------+-------+-------+-------+----------------------------+ +-- | 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'); +SELECT * FROM book; +#3、创建用户表users,并插入数据 +-- +----------+--------------+------+-----+---------+----------------+ +-- | 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), +username varchar(100), +`password` varchar(100), +email varchar(100) +); + +-- 尝试添加部分模拟数据,参考示例如下: +-- +----+----------+----------------------------------+--------------------+ +-- | id | username | password | email | +-- +----+----------+----------------------------------+--------------------+ +-- | 1 | admin | 112233 | admin@mxdx.com | +-- +----+----------+----------------------------------+--------------------+ +INSERT INTO users VALUES (1,'admin',112233,'admin@mxdx.com') ; +SELECT * FROM users; +-- 4、创建订单表orders +-- +--------------+--------------+------+-----+---------+-------+ +-- | 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) PRIMARY KEY NOT NULL, +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 +); +DESC orders; +尝试添加部分模拟数据,参考示例如下: +-- +----------------+---------------------+-------------+--------------+-------+---------+ +-- | 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 +-- +----------+--------------+------+-----+---------+----------------+ +-- | 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) UNSIGNED auto_increment PRIMARY KEY NOT NULL, +count INT (11) NOT NULL, +amount DOUBLE(11,2) NOT NULL, +title VARCHAR(100) NOT NULL, +`author` varhcar(100) NOT NULL, +price DOUBLE(11,2) NOT NULL, +img_path VARCHAR(100) NOT NULL, +order_id VARCHAR(100) NOT NULL +); +DESC order_items; +-- 尝试添加部分模拟数据,参考示例如下: +-- +----+-------+--------+---------+---------+-------+----------------+----------------+ +-- | 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); +SELECT * FROM order_items; +``` + diff --git "a/24 \344\275\231\345\200\251/20230223 \347\254\224\350\256\260\346\200\273\347\273\223.md" "b/24 \344\275\231\345\200\251/20230223 \347\254\224\350\256\260\346\200\273\347\273\223.md" new file mode 100644 index 0000000000000000000000000000000000000000..951c6eb61d0a9a2e46d41b645970f785a92f1525 --- /dev/null +++ "b/24 \344\275\231\345\200\251/20230223 \347\254\224\350\256\260\346\200\273\347\273\223.md" @@ -0,0 +1,430 @@ +# 笔记总结 + +## MySQL的安装 + +用户通常到官网www.mysql.com下载最新版本的MySQL数据库,MySQL数据库目前分为社区版和企业版。 + +MySQL的版本更新很快,目前可以下载的版本包括4.1、5.0、5.1和6.0。 + +MySQL可以 直接通过Windows的”开始“菜单(单击“开始”—“控制面板”—“管理工具”—“服务”菜单)启动和关闭 + +## 数据库基本概念 + +1.数据库(DataBase):存储数据的地方 + +数据库主要分为关系型数据库与非关系型数据库 + +2.数据库管理系统(DBMS):一种操纵和管理数据库的大型软件,用于建立使用和维护数据库 + +3.SQL:结构化查询语言,专门用来操作/访问数据库的通用语言 + +## 数据库使用 + +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、创建新的表格 + +``` +create table 表名称( + 字段名 数据类型, + 字段名 数据类型 +); +``` + +3、查看表结构 + +```mysql +desc 表名称; +``` + +4、添加一条记录 + +```mysql +insert into 表名称 values(值列表); +``` + +5、查看一个表的数据 + +```mysql +select * from 表名称; +``` + +6、删除表 + +```mysql +drop table 表名称; +``` + +## 导入数据 + +在命令行客户端==登录mysql==,使用source指令导入 + +```mysql +mysql> source d:\练习脚本.sql +``` + +## 导出数据 + +在命令行客户端不登录mysql,使用mysqldump命令。 **注意末尾*不要*习惯性的加;号** + +```mysql +mysqldump -u用戶名 -p密码 数据库名 > 脚本名.sql +mysqldump -u用戶名 -p密码 数据库名 表名 > 脚本名.sql +``` + +## SQL的分类 + +| 名称 | 解释 | 命令 | +| :----------------------: | :-------------------------------------------: | :----------------------------------------------------------: | +| DDL (数据定义语言) 20% | 定义和管理数据对象结构,如数据库,数据表等 | 创建(create),修改(alter),删除(drop) show(展示)结构 | +| DML (数据操作语言) 30% | 用于操作数据库对象中所包含的数据 | 增加(insert),修改(update),删除(delete), 数据 | +| DQL (数据查询语言) 50% | 用于查询数据库数据 | 查(select) | +| DCL (数据控制语 言) | 用于管理数据库的语言,包括管理权限及数 据更改 | grant(授权),commit(确认),rollback(回滚) | + +其他语句:USE语句,SHOW语句,SET语句等。这类的官方文档中一般称为命令。 + +### SQL脚本中如何加注释 + + 1.单行注释:#注释内容(mysql特有的) + + 2.单行注释:--空格注释内容 其中--后面的空格必须有 + + 3.多行注释:/* 注释内容 */ + +## MySQL中引号的注意事项 + +1. 单引号'':**字符串和日期类型的数据值使用单引号''引起来**,数值类型的不需要加标点符号。 + +2. “2023-10--10” + +3. 双引号"":列的别名可以使用引号"",**给表名取别名不要用引号**。 + +4. 在MySQL中双引号通常等价于单引号 + + ## MySQL数据类型 + + 1.int 默认11位 + + 2.int(m) m因为是单独使用无任何意义 + + 3.int(m)ZEROFILL 当数值不够M时,用0填充,与允许长度无关 + + 4.bigint + + 5.float(整数+小数总长度,小数长度)当小数超出范围会自动截断并四舍五入,小数不足会自动以0补齐 + + 6.decimal 定点型小数 不写()时默认是(10,0) + + 7.字符串:(1)char 固定长度 ,不写(m)默认长度为1 + + ​ (2)varchar(m)可变长度,(m)不可省略 + + ​ (3)text + + 8.enum 单选 + + set 集合(可选一个或多个) + + ## DDL + + ### 创建数据库 + + ```mysql + create database 数据库名 ; + create database 数据库名 charset 字符集; + ``` + + ### 查看所有的数据库 + + ```mysql + show databases; #有一个s,代表多个数据库 + ``` + + ### 查看某个数据库的详细定义语句 + + ```mysql + show create database 数据库名; + ``` + + + + ### 修改数据库编码 + + ```mysql + #修改数据库字符集和校对规则 + ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称 COLLATE 字符集对应校对规则; + ``` + + +### 删除数据库 + +```mysql +drop database 数据库名; +``` + +### 使用数据库 + +```mysql +use 数据库名; +``` + +### 查看某个数据库的所有表格 + +```mysql +use 数据库名; +show tables; +``` + +```mysql +show tables from 数据库名; +``` + +### 创建表格 + +```mysql +create table 数据表名称( + 字段名 数据类型, + 字段名 数据类型 + ... +); +``` + +### 查看建表语句 + +```mysql +show create table 表名称; +``` + +### 修改数据表编码 + +```mysql +alter table 表名称 convert to character set utf8; +``` + +### 查看表结构 + +```mysql +desc 表名; +``` + +### 删除表格,包括表结构和里面的数据 + +```mysql +drop table 表名称; +``` + +### 修改表结构:删除字段 + +```mysql +alter table 表名称 drop 【column】 字段名称; +``` + + + +### 修改表结构:增加字段 + +```mysql +alter table 表名称 add 【column】 字段名称 数据类型; +alter table 表名称 add 【column】 字段名称 数据类型 first; +alter table 表名称 add 【column】 字段名称 数据类型 after 另一个字段; +``` + +### 修改表结构:修改字段的数据类型 + +```mysql +alter table 表名称 modify 【column】 字段名称 新的数据类型; +``` + +### 修改表结构:修改字段的名称 + +```mysql +alter table 表名称 change 【column】 旧字段名称 新的字段名称 新的数据类型; +``` + +### 修改表结构:修改字段位置 + +```mysql +alter table 表名称 modify 【column】 字段名称 数据类型 first; +alter table 表名称 modify 【column】 字段名称 数据类型 after 另一个字段; +``` + +### 修改表名称(重命名表) + +```mysql +alter table 旧表名 rename 【to】 新表名; +rename table 旧表名称 to 新表名称; +``` + +## DML + +### 添加一条记录到某个表中 + +```mysql +insert into 表名称 values(值列表); #值列表中的值的顺序、类型、个数必须与表结构一一对应 +``` + +### 修改所有行 + +```mysql +update 表名称 set 字段名 = 值, 字段名 = 值; #给所有行修改 +``` + +### 修改部分行 + +```mysql +update 表名称 set 字段名 = 值, 字段名 = 值 where 条件; #给满足条件的行修改 +``` + +### 删除部分行的数据 + +```mysql +delete from 表名称 where 条件; +``` + +### 删除整张表的数据,但表结构留下 + +```mysql +delete from 表名称; +``` + +### 截断表,清空表中的数据,只留有表结构 + +```mysql +truncate 表名称; +``` + +## SELECT语句 + +### SELECT语句的基本语法: + +```MySQL +SELECT 常量; +SELECT 表达式; +SELECT 函数; +``` + +### 从数据表中筛选数据 + +```mysql +SELECT 字段列表 FROM 表名称; +``` + +### 从数据表中根据条件筛选数据 + +```mysql +SELECT 字段列表 FROM 表名称 WHERE 条件; +``` + +### 使用别名 + +```mysql +select 字段名1 as "别名1", 字段名2 as "别名2" from 表名称 as 别名; +``` + +### 结果去重 + +```mysql +select distinct 字段列表 from 表名称 【where 条件】; +``` + +## 运算符 + +### 算术运算符 + +```mysql +加:+ + 在MySQL +就是求和,没有字符串拼接 +减:- +乘:* +除:/ div(只保留整数部分) + div:两个数相除只保留整数部分 + /:数学中的除 +模:% mod + +mysql中没有 +=等运算符 +``` + +### 比较运算符 + +```mysql +大于:> +小于:< +大于等于:>= +小于等于:>= +等于:= 不能用于null判断 +不等于:!= 或 <> 不能用于null判断 +判断是null 用 is null 或 用 <=> null +判断不是null is not null +``` + +### 区间或集合范围比较运算符 + +```mysql +区间范围:between x and y + not between x and y +集合范围:in (x,x,x) + not in(x,x,x) + between ... and ... 结果包含两端的边界 +``` + +### 模糊匹配比较运算符 + +```mysql +%:代表任意个字符 + +_:代表一个字符,如果两个下划线代表两个字符 +``` + + + +## 逻辑运算符(掌握) + +```mysql +逻辑与:&& 或 and +逻辑或:|| 或 or +逻辑非:! 或 not +逻辑异或: xor +``` + +### 所有的计算遇到的null都是null \ No newline at end of file diff --git "a/24 \344\275\231\345\200\251/20230226 \351\242\204\344\271\240\347\254\224\350\256\260.md" "b/24 \344\275\231\345\200\251/20230226 \351\242\204\344\271\240\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..5f1d6d8d344493322d654c7462e68907c8c93996 --- /dev/null +++ "b/24 \344\275\231\345\200\251/20230226 \351\242\204\344\271\240\347\254\224\350\256\260.md" @@ -0,0 +1,126 @@ +## 函数 + +## 分组函数 + +调用完函数后,结果的行数变少了,可能得到一行,可能得到少数几行。 + +分组函数有合并计算过程。 + +**常用分组函数类型** + +* **AVG(x)** :求平均值 +* **SUM(x)**:求总和 +* **MAX(x)** :求最大值 +* **MIN(x)** :求最小值 +* **COUNT(x) **:统计记录数 +* .... + +```mysql +avg:可以算字段的平均值 +sum:该字段的总和 +max:求字段的最大值 +min:找字段的最小值 +count:计数 +select 分组函数(字段名) from 表名 +``` + +### 10.2.1 数学函数 + +以下表格中也只是列出了一部分 + +| 函数 | 用法 | +| ------------- | ------------------------------------------------------------ | +| ABS(x) | 返回x的绝对值 | +| CEIL(x) | 返回大于x的最小整数值 | +| FLOOR(x) | 返回小于x的最大整数值 | +| MOD(x,y) | 返回x/y的模 | +| RAND() | 返回0~1的随机值 | +| ROUND(x,y) | 返回参数x的四舍五入的有y位的小数的值 | +| TRUNCATE(x,y) | 返回数字x截断为y位小数的结果 | +| FORMAT(x,y) | 强制保留小数点后y位,整数部分超过三位的时候以逗号分割,并且返回的结果是文本类型的 | +| SQRT(x) | 返回x的平方根 | +| POW(x,y) | 返回x的y次方 | + +```mysql +select 数学函数 from 表名 +``` + +### 字符串函数 + +下面列出部分字符串函数: + +| 函数 | 功能描述 | +| ------------------------------------------------------------ | ------------------------------------------------------------ | +| CONCAT(S1,S2,……Sn) | 连接S1,S2,……Sn为一个字符串 | +| CONCAT_WS(s,S1,S2,……Sn) | 同CONCAT(S1,S2,…)函数,但每个字符串之间要加上s | +| CHAR_LENGTH(s) | 返回字符串s的字符数 | +| LENGTH(s) | 返回字符串s的字节数,和字符集有关 | +| LOCATE(str1,str)或 POSITION(str1 in str)或 INSTR(str,str1) | 返回子字符串str1在str中的开始位置 | +| UPPER(s)或UCASE(s) | 将字符串s的所有字母转成大写字母 | +| LOWER(s)或LCASE(s) | 将字符串s的所有字母转成小写字母 | +| LEFT(s,n) | 返回字符串s最左边的n个字符 | +| RIGHT(s,n) | 返回字符串s最右边的n个字符 | +| LPAD(str,len,pad) | 用字符串pad对str最左边进行填充直到str的长度达到len | +| RPAD(str,len,pad) | 用字符串pad对str最右边进行填充直到str的长度达到len | +| LTRIM(s) | 去掉字符串s左侧的空格 | +| RTRIM(s) | 去掉字符串s右侧的空格 | +| TRIM(s) | 去掉字符串s开始与结尾的空格 | +| TRIM([BOTH] s1 FROM s) | 去掉字符串s开始与结尾的s1 | +| TRIM([LEADING] s1 FROM s) | 去掉字符串s开始处的s1 | +| TRIM([TRAILING]s1 FROM s) | 去掉字符串s结尾处的s1 | +| INSERT(str,index,len,instr) | 将字符串str从index位置开始len个字符的替换为字符串instr | +| REPLACE(str,a,b) | 用字符串b替换字符串str中所有出现的字符串a | +| REPEAT(str,n) | 返回str重复n次的结果 | +| REVERSE(s) | 将字符串反转 | +| STRCMP(s1,s2) | 比较字符串s1,s2 | +| SUBSTRING(s,index,len) | 返回从字符串s的index位置截取len个字符 | +| SUBSTRING_INDEX(str, 分隔符,count) | 如果count是正数,那么从左往右数,第n个分隔符的左边的全部内容。例如,substring_index("www.mxdx.com",".",1)是"www"。如果count是负数,那么从右边开始数,第n个分隔符右边的所有内容。例如,substring_index("www.mxdx.com",".",-1)是"com"。 | + +```mysql +select 字符串函数 from 表名 +select 字符串函数 from where 条件 +``` + +### 10.2.4 加密函数 + +列出了部分的加密函数。 + +| 函数 | 用法 | +| --------------------- | ------------------------------------------------------------ | +| password(str) | 返回字符串str的加密版本,41位长的字符串 | +| md5(str) | 返回字符串str的md5值,也是一种加密方式 | +| SHA(str) | 返回字符串str的sha算法加密字符串,40位十六进制值的密码字符串 | +| SHA2(str,hash_length) | 返回字符串str的sha算法加密字符串,密码字符串的长度是hash_length/4。hash_length可以是224、256、384、512、0,其中0等同于256。 | + +```mysql +SELECT MD5('123456'),SHA('123456'),sha2('123456',0); +SELECT CHAR_LENGTH(MD5('123456')),SHA('123456'),sha2('123456',0); +CREATE TABLE 表名( +...... +PASSWORD VARCHAR(100) +); + +INSERT INTO 表名 VALUES(NULL,'chai',MD5('123456')); + +SELECT * FROM 表名 +WHERE 字段中数据 AND PASSWORD =MD5('123456'); + + +SELECT * FROM t_user +WHERE 字段中的数据 AND PASSWORD ='123456'; +``` + +### 10.2.5 系统信息函数 + +| 函数 | 用法 | +| ---------- | ------------------ | +| database() | 返回当前数据库名 | +| version() | 返回当前数据库版本 | +| user() | 返回当前登录用户名 | + +```mysql +SELECT USER(); +SELECT VERSION(); +SELECT DATABASE(); +``` +