MySQL系列知识汇总
本课题内容将从MySQL基础的使用方式开始进行MySQL各种知识进行汇总。这里忽略安装步骤,执行写用法;
1. Windows系统下cmd登录
前提:正确配置好MySQL的环境变量下win+R
输入cmd
,之后在cmd中输入命令
mysql -uroot -p123456
其中root为用户名称;123456为本机数据库密码,登录成功后如下图
2. 控制台下SQL语句的使用
- 创建自己的数据库
create database student; -- 创建一个名词为student的数据库
- 注意很多人会忽略这一步:创建好数据库后需要执行如下语句才可以操作对应的数据库
use student;
- 在student数据库下创建User数据库表
CREATE TABLE `user`(
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
`password` VARCHAR(30) NOT NULL,
PRIMARY KEY (`id`)
);
user
为数据库表名id,name,password
等为数据库字段名- 字段之后的
INT,VARCHAR
等为数据库类型 NOT NULL
代码该字段不能为空AUTO_INCREMENT
代表该列数字自动递增(只支持数据类型)PRIMARY KEY (id)
代表设置id为主键索引
- 常见的数据库类型
MySQL数据库类型主要有5大类包括: 整数类型、浮点数类似、字符串类型,日期类型,其他类型
最长用的有
MySQL数据库类型 | 含义(范围) |
---|---|
int | 4个字节 范围(-2147483648~2147483647) |
float(m,d) | 单精度浮点型 8位精度(4字节) m总个数,d小数位 |
varchar(n) | 变长字符串,最多65535个字符(保存用户名,等简短信息) |
text | 可变长度,最多65535个字符(保存一些短文经常用到) |
timestamp | 自动存储记录修改时间(在不设置值的情况下) |
date | 日期 ‘2008-12-2’ (保存年月日) |
time | 时间 ‘12:25:36’ (保存时间点) |
注明:定义timestamp字段时,字段时间会随着其他字段的数据改变时而刷新
- 往
user
表里边插入数据
INSERT INTO `user`
(`name`,
`password`)
VALUES
('name',
'password') ; -- id是自增的不需要我们指定值
在这里提一点,最好在数据库的每个字段中加入`` 这两点,防止字段中不小心有数据库关键字而造成报错;如果插入数据是字符串需要引号
- 查看
user
表数据
-
默认查找方式
- 如果只想看学生的姓名的话,就把*换成 name字段即可
SELECT * FROM `user` ;
-
限制查找行数(只查看0到1000行)
- 在网页上经常用到该算法;作为翻页功能:( 当前页数-1)* 每页数据条数, 每页数据条数
SELECT * FROM `user` LIMIT 0, 1000;
- 修改
user
表数据
UPDATE
`user`
SET
`name` = 'name',
`password` = 'password'
WHERE `id` = 1 ;
这里需要注意的是where后边的限定条件需要时唯一的不然符合条件的都会被修改;如果不加where在没有唯一约束的情况下,会修改整个表数据
- 删除
user
表数据
DELETE
FROM
`user`
WHERE `id` = '1' ;
这里where和修改元素案例,作用差不多
3. 高级查询操作
- 创建
class
班级表
CREATE TABLE `class` (
`classId` INT AUTO_INCREMENT,
`className` VARCHAR(200) NOT NULL,
PRIMARY KEY (`classId`)
)
- 往
user
表里边添加cId
字段,并设置为外键,其为学生所属的班级ID
ALTER TABLE `user` ADD COLUMN `cId` INT NOT NULL; -- 添加cId字段
ALTER TABLE `user` ADD CONSTRAINT `c` FOREIGN KEY (`cId`) REFERENCES `class`(`classId`);
-- 为 user 表 的cId字段添加名称为c的对应class表的classId的外键
- 一对多;多对一查询:往表中插入各种数据后,查询1班所有人
内连接查询
SELECT
`class`.*,`user`.*
FROM
`class`
INNER JOIN
`user`
ON
`user`.cId=1;
左连接查询(注意这里不适用左连接查询)
SELECT
`class`.*,`user`.*
FROM
`class`
LEFT JOIN
`user`
ON
`user`.cId=1;
右连接查询(这里不适用右连接查询)
SELECT
`class`.*,`user`.*
FROM
`class`
RIGHT JOIN
`user`
ON
`user`.cId=1;
- 多对多查询
创建课程表
CREATE TABLE `course`(
`courseId` INT NOT NULL AUTO_INCREMENT,
`courseName` VARCHAR(200) NOT NULL,
PRIMARY KEY (`courseId`)
);
创建关系表
CREATE TABLE `other`(
`otherId` INT NOT NULL AUTO_INCREMENT,
`csId` INT NOT NULL,
`uId` INT NOT NULL,
PRIMARY KEY (`otherId`),
CONSTRAINT `c` FOREIGN KEY (`csId`) REFERENCES `course`(`courseId`), -- 添加课程表的外键
CONSTRAINT `u` FOREIGN KEY (`uId`) REFERENCES `student`.`user`(`id`) -- 添加用户表的外键
);
- 自动识别中英文,识别后按照对应字段模糊查找
SELECT *FROM dictionary WHERE IF("a" REGEXP "[\u0391-\uFFE5]"=1,word,trans) LIKE "%a"
文章后边会慢慢继续完善!