安装mysql
MySQL是一种开源的关系型数据库管理系统(RDBMS),它是最受欢迎的数据库系统之一。MySQL广泛用于Web应用程序和其他需要可靠数据存储的应用程序中。
特点和概念:
- 数据库:MySQL是一个数据库管理系统,用于创建和管理数据库。数据库是一个组织结构,用于存储和管理数据。
- 表:数据库中的数据被组织成表的形式。表由行和列组成,行表示记录,列表示字段。
- SQL:MySQL使用结构化查询语言(SQL)进行数据库操作。SQL是一种用于定义、操作和查询数据库的语言。
- 数据类型:MySQL支持各种数据类型,例如整数、浮点数、字符串、日期和时间等。每个列都有自己的数据类型。
- 索引:MySQL允许创建索引以加快数据检索速度。索引是对表中一列或多列的值进行排序的数据结构。
- 主键:主键是表中的唯一标识符。它用于确保表中的每个记录都有唯一的标识。
- 外键:外键用于建立表与表之间的关联。它定义了一个表中的列与另一个表中的列之间的关系。
- 触发器:触发器是一种在数据库中定义的操作,它会在特定事件发生时自动执行。例如,当向表中插入新记录时,可以触发一个触发器来执行其他操作。
- 存储过程:存储过程是一组预编译的SQL语句,可以在数据库中进行重复使用。它可以接受参数并返回结果。
- 备份和恢复:MySQL提供了备份和恢复数据库的工具和命令,以确保数据的安全性和可靠性。
什么是关系型数据库?
在关系型数据库中,数据以结构化的方式存储,其中每个表格由一组列(字段)和一组行(记录)组成。每个列定义了数据的类型和属性,而每个行则表示一个特定的数据实例。表格之间的关系通过使用主键和外键进行建立。主键是唯一标识表格中每个行的列,而外键是指向其他表格主键的列,用于建立表格之间的关联关系。
安装
后续安装一直默认下一步就行
安装完成后我们需要配置一下环境变量,完成后打开命令行,执行以下操作:
上述结果表示安装成功
安装可视化插件
到这里表示连接上数据库了。
然后新建数据库,库名随便取
新建表,表名随便取
添加数据,到此我们第一步便完成了。
sql语句
SQL(Structured Query Language)是一种用于管理关系型数据库系统的语言。它是一种标准化语言,用于执行各种数据库操作,包括数据查询、插入、更新和删除等。
数据库操作
创建数据库
CREATE DATABASE 库名
数据库进行重复创建就会失败,加上if not exists就可以避免这个问题
CREATE DATABASE IF NOT EXISTS 库名
添加字符集 utf8mb4 支持存储更广泛的字符集
CREATE DATABASE IF NOT EXISTS 库名
DEFAULT CHARACTER SET = 'utf8mb4'
创建表
CREATE TABLE `user` (
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(100) COMMENT '名字',
age int COMMENT '年龄',
address varchar(200) COMMENT '地址',
create_time timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) COMMENT '用户表'
id字段名称int数据类型代表数字类型NOT NULL(不能为空)AUTO_INCREMENT(id自增)PRIMARY KEY(id为主键)name(字段名称)varchar(100)字符串类型100字符COMMENT(注释)age(字段名称)int数据类型代表数字类型COMMENT(注释)create_time(字段名称)timestamp(时间戳)DEFAULT CURRENT_TIMESTAMP(自动填充创建时间)
修改表名 把user修改为user1
ALTER TABLE `user` RENAME `user1`;
增加列 user表增加type
ALTER TABLE `user` ADD COLUMN `type` varchar(10)
删除列 user表删除type
ALTER TABLE `user` DROP COLUMN `type`
编辑列 user表编辑age,修改类型为varchar(3),注释改为改变后的年龄类型
ALTER TABLE `user` MODIFY COLUMN `age` varchar(3) NULL COMMENT '改变后的年龄类型'
查询
查询单个列
SELECT id FROM `user`;
查询多个列
SELECT id,name FROM `user`;
查询所有列
SELECT * FROM `user`;
列的别名,as可以省略
SELECT id as user_id FROM `user`;
排序,DESC代表升序ASC代表降序
SELECT * FROM `user` ORDER BY id DESC;
SELECT * FROM `user` ORDER BY age ASC;
限制查询结果 limit[开始行][限制条数]
SELECT * FROM `user` LIMIT 0,2;//从第零个开始,查询两条
条件查询 AND并且 OR或者
SELECT * FROM `user` WHERE name = '历史';
SELECT * FROM `user` WHERE name = '历史' AND age <=30;
模糊查询 LIKE用于模糊匹配字符串,用%作通配符,表示任意多个字符
%历:匹配以历结尾的字符串,前面可以有任意字符历%:匹配以历开头的字符串,后面可以有任意字符%历%:匹配任意位置包含历的字符串,前后可以有任意字符
SELECT * FROM `user` WHERE name LIKE '%历%';
新增
下面示例name,age,address必须key和value一致,多个值,分隔,如果在设计表的时候允许为null,对应字段就可以插入null值
INSERT INTO user(`name`,`age`,`address`) VALUES('zs',12,'阿斯顿打撒'),('zs1',22,'阿斯顿打撒'),('zs2',33,'阿斯顿打撒')
更新
UPDATE `user` SET name='zs4',age=22,address='啊倒萨' WHERE id = 8;
删除与批量删除
DELETE FROM `user` WHERE id = 8 ;
DELETE FROM `user` WHERE id IN(1,2,3) ;
表达式
MySQL表达式是一种在MySQL数据库中使用的计算式或逻辑式。它们可用于查询、更新和过滤数据,以及进行条件判断和计算。
- 算术表达式:可以执行基本的数学运算,例如加法、减法、乘法和除法。例如:
SELECT col1 + col2 AS sum FROM table_name; - 字符串表达式:可以对字符串进行操作,例如连接、截取和替换。例如:`SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM table_name;
- 逻辑表达式:用于执行条件判断,返回布尔值(TRUE或FALSE)。例如:
SELECT * FROM table_name WHERE age > 18 AND gender = 'Male'; - 条件表达式:用于根据条件返回不同的结果。例如:
SELECT CASE WHEN age < 18 THEN 'Minor' ELSE 'Adult' END AS age_group FROM table_name; - 聚合函数表达式:用于计算数据集的聚合值,例如求和、平均值、最大值和最小值。例如:
SELECT AVG(salary) AS average_salary FROM table_name; - 时间和日期表达式:用于处理时间和日期数据,例如提取年份、月份或计算日期差值。例如:
SELECT YEAR(date_column) AS year FROM table_name;
例如查询时数值增加100
SELECT age + 100 as age FROM `user`;
函数
MySQL提供了大量的内置函数,用于在查询和操作数据时进行计算、转换和处理。以下是一些常用的MySQL函数分类及其示例:
- 字符串函数:
CONCAT(str1, str2, ...):将多个字符串连接起来。SUBSTRING(str, start, length):从字符串中提取子字符串。UPPER(str):将字符串转换为大写。LOWER(str):将字符串转换为小写。LENGTH(str):返回字符串的长度。
- 数值函数:
ABS(x):返回x的绝对值。ROUND(x, d):将x四舍五入为d位小数。CEILING(x):返回不小于x的最小整数。FLOOR(x):返回不大于x的最大整数。RAND():返回一个随机数。
- 日期和时间函数:
NOW():返回当前日期和时间。CURDATE():返回当前日期。CURTIME():返回当前时间。DATE_FORMAT(date, format):将日期格式化为指定的格式。DATEDIFF(date1, date2):计算两个日期之间的天数差。
- 条件函数:
IF(condition, value_if_true, value_if_false):根据条件返回不同的值。CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE result END:根据条件返回不同的结果。
- 聚合函数:
COUNT(expr):计算满足条件的行数。SUM(expr):计算表达式的总和。AVG(expr):计算表达式的平均值。MAX(expr):返回表达式的最大值。MIN(expr):返回表达式的最小值。
子查询
子查询(Subquery),也被称为嵌套查询(Nested Query),是指在一个查询语句中嵌套使用另一个完整的查询语句。子查询可以被视为一个查询的结果集,它可以作为外层查询的一部分,用于进一步筛选、计算或操作数据。
示例
关联关系为 use r表的 id 关联 table 表的 user_id
SELECT * FROM `table` WHERE user_id = (SELECT id FROM `user` WHERE name='张一')
连表
内连接的两个表,驱动表中的记录在被驱动表中找不到匹配的记录,该记录不会加入到最后的结果集,我们上边提到的连接都是所谓的内连接。外连接的两个表,驱动表中的记录即使在被驱动表中没有匹配的记录,也仍然需要加入到结果集。
示例
内连接
SELECT * FROM `user`,`table` WHERE `user`.`id` = `table`.`user_id`;
外连接,又分为左外连接和右外连接,主要用于确定驱动表,最后连接出来的数据量以驱动表为准。
--以 table 为驱动表
SELECT * FROM `user` RIGHT JOIN `table` ON `user`.`id` = `table`.`user_id`;
--以 user 为驱动表
SELECT * FROM `user` LEFT JOIN `table` ON `user`.`id` = `table`.`user_id`;