MySQL数据库
MySQL是DBMS软件系统,通过这些系统来维护管理数据库。
DBMS类似于用于和数据库之间的桥梁。
一、安装配置
下载免费的MySQL 社区版,安装后需要下载MySQL workbench vscode phpmyadmin等工具来接入MySQL。
MySQL可以管理多个数据库的,数据库存放在某台主机上面,数据库上级是服务器,服务器是用来作为数据库的,每台服务器可以有多个数据库,MySQL里的数据库称为schema,schema里面可以有不同的table(表格)。
官网: https://www.mysql.com/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VulDSNC3-1686821300640)
点击社区版
下载
安装后打开控制台(快捷键win+r)
输入:
mysql -uroot -p
二、数据类型
MySQL大致分为三类:
- 数值类型
- 日期/时间类型
- 字符串(字符)类型
1、整数类型
2、浮点数类型
3、定点数类型
4、日期类型
5、时间类型
6、字符串类型
三、数据库表基本操作
1、数据库查看
Show databases;
2、数据库创建
Create database huang;
3、数据库删除
Drop database huang;
4、表的创建
语法:
CREATE TABLE 表名( 属性名 数据类型 [完整性约束条件],
属性名 数据类型 [完整性约束条件],
属性名 数据类型 [完整性约束条件]
);
约束:
标识 | 说明 |
---|---|
PRIMARY KEY | 属性为该表的主键,可以唯一的标识对应的记录 |
FOREIGN KEY | 属性为该表的外键,与某表的主键关联 |
NOT NULL | 属性不能为空 |
UNIQUE | 属性的值是唯一的 |
AUTO_INCREMENT | 属性的值自动增加 |
DEFAULT | 设置默认值 |
实例:
5、表的结构查看
查看基本表的结构
DESCRIBE(DESC) 表名;
查看表的详细结构
SHOW CREATE TABLE 表名;
6、表的修改
修改表名
ALTER TABLE 旧表名 RENAME 新表名;
修改字段
ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型
增加字段
ALTER TABLE 表名 ADD 属性名 1 数据类型 [完整性约束条件] [FIRST | AFTERR 属性名 2]
删除字段
ALTER TABLE 表名 DROP 属性名
7、表的删除
DROP TABLE 表名
四、数据查询
数据查询 重要项,简称sql语句。
1、单表查询
此处建了一个表hun(内容随机):
01-查询指定列
SELECT hun.`name` FROM hun
查询多行,用逗号隔开。
SELECT hun.`name`,hun.sex FROM hun
02-查询全部列
SELECT * FROM hun
03-查询经过计算的值
SELECT hun.`id`,hun.`name`,hun.`sex`,hun.`age`-18 FROM hun
04-消除取值重复行
关键字
DISTINCT
在原有表上加了一行重复项
SELECT DISTINCT hun.`name` FROM hun
05-查询满足条件的元组
比较
查询大于18岁的
SELECT * FROM hun WHERE hun.`age`>18
查询小于18岁的
SELECT * FROM hun WHERE hun.`age`<18
范围 BETWEEN 17 AND 18
查询17-18这个范围之间的人物。
SELECT * FROM hun WHERE hun.`age` BETWEEN 17 AND 18
确定集合 IN (‘黄昏’,‘夏目’)
SELECT * FROM hun WHERE hun.`name` IN ('黄昏','夏目')
字符匹配 LIKE ‘黄%’
SELECT * FROM hun WHERE hun.`name` LIKE '黄%'
SELECT * FROM hun WHERE hun.`name` LIKE '%黄'
SELECT * FROM hun WHERE hun.`name` LIKE '%黄%'
SELECT * FROM hun WHERE hun.`name` LIKE '黄_'
空值 IS NULL、IS NOT NULL
此处我修改了表单,新增了一个空值。
查询为空的
SELECT * FROM hun WHERE hun.`sex` IS NULL
查询不为空的
SELECT * FROM hun WHERE hun.`sex` IS NOT NULL
多重条件
查询性别是男,年龄大于18
SELECT * FROM hun WHERE hun.`sex`='男' AND hun.`age`>18
06-Order by子句
Order by子句用来排序的。
ASC 升序
DESC 降序
例子:根据年龄排序。
SELECT * FROM hun ORDER BY hun.`age` ASC
SELECT * FROM hun ORDER BY hun.`age` DESC
07-聚集函数
SELECT COUNT(*) FROM hun
例子:计算所有人员年龄的总和。
SELECT SUM(hun.`age`) FROM hun
08-Group by子句
将查询结果按某一列或多个列分组,值相等就是一组。
例子:男女分组(GROUP BY hun.sex
)。
SELECT COUNT(hun.`age`),hun.`sex` FROM hun GROUP BY hun.`sex`
2、连接查询
此时再新加一个表格,内容如下,和上面用到的表格进行连接查询。
01-等值与非等值连接
等值连接查询:
SELECT stu.`name`,stu.`age`,stu.`sex`,s.`score` FROM h_score s,hun stu WHERE s.`h_id`=stu.`id`
不等值连接查询:
!=
<>
02-自身连接
03-外连接
外连接分为:左外连接和右外连接。
SELECT stu.`name`,stu.`age`,stu.`sex`,s.`score` FROM h_score s LEFT OUTER JOIN hun stu ON (s.`h_id`=stu.`id`)
SELECT stu.`name`,stu.`age`,stu.`sex`,s.`score` FROM h_score s RIGHT OUTER JOIN hun stu ON (s.`h_id`=stu.`id`)
左外连接
右外连接
04-复合条件连接
3、嵌套查询
新建表格,内容如下: