MySQL学习笔记(一)—— MySQL的安装和基本操作语句


前言

  • 什么是数据库?

    数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。

  • 什么是关系型数据库?
    关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。它将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
    特点:
    1.数据以表格的形式出现
    2.每行为各种记录名称
    3.每列为记录名称所对应的数据域
    4.许多的行和列组成一张表单
    5.若干的表单组成database

  • 什么是MySQL?
    MySQL是一个关系型数据库管理系统(管理数据库的软件)。由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。

一、MySQL的安装

看狂神的视频说是5.x的版本较为稳定,因此在windows上通过压缩包的形式安装了MySQL,可参考MySQL安装视频。以及可视化软件SQLyog安装教程。

二、MySQL基本操作语句

  • Tips
  1. 不区分大小写。
  2. 通常语句后都需要以分号【;】结尾。
  3. 代码以【–】进行单行注释,以【-* *-】进行多行注释。
  4. 和关键词重名的变量明需用两个反引号【`】引出。

1. 启动/停止MySQL服务

1)启动MySQL服务

net start mysql

2)停止MySQL服务

net stop mysql

2. 登录/退出数据库

1)登录数据库

mysql -u username -ppassword  -- 注意:-p后没有空格直接输入密码,否则按回车键后重新输入密码

2)退出数据库

exit

3. 数据库基本操作语句

1)创建数据库

create database if not exists databaseName;

2)删除数据库

drop database if exists databaseName;

3)显示所有数据库

show databases;

4)切换数据库

use databaseName;  -- 切换到哪个数据库用填哪个数据库名称

5)查看创建数据库的语句

SHOW CREATE DATABASE 数据库名

4. 表的基本操作语句

1)创建一个表

CREATE TABLE IF NOT EXISTS `表明` (
	`字段名1` 列类型 属性 索引 注释,
	`字段名2` 列类型 属性 索引 注释
) 表类型 字符集设置 注释;
  • 例如:在数据集school下创建表student。
    UNSIGNED:无符号整数,不能为负数
    NOT NULL:数据不能为空(就是不能不填)。
    AUTO_INCREMENT:自增,默认1,若要设置【AUTO_INCREMENT=自增数】
    DEFAULT:设置默认值
    ZEROFILL :不足位数用0填充
    COMMENT :注释
    PRIMARY KEY:主键
    ENGINE:引擎,表类型
    CHARSET:字符集
CREATE TABLE IF NOT EXISTS `school`.`student` (
	`id` INT(3) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '学号', 
	`name` VARCHAR(30) NOT NULL DEFAULT 'annoy' COMMENT '姓名', 
	`age` INT(3) ZEROFILL NOT NULL DEFAULT 22 COMMENT '年龄', 
	PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8;

2)查看表信息

  • 查看创建某个表的语句
SHOW CREATE TABLE 表名
  • 查看某个表的结构
DESC 表名
  • 显示当前数据库中所有表
SHOW TABLES

3)修改表

  • 修改表名
ALTER TABLE `旧表名` RENAME `新表名`
  • 增加表的字段
ALTER TABLE `表名` ADD `字段名` 列属性
  • 删除表的字段
ALTER TABLE `表名` DROP `字段名`
  • 修改表的字段
ALTER TABLE `表名` MODIFY `字段名` 列属性  -- 修改约束
ALTER TABLE `表名` CHANGE `旧字段名` `新字段名` 列属性  -- 重命名字段,也可修改约束

4)删除某个表

DROP TABLE IF EXISTS `表名`

5. 外键

1)创建表时添加外键

-- 表1中的主键作为表2中的外键
-- 在表2中操作
KEY FK_外键字段名 (`外键字段名`),
CONSTRAINT FK_外键字段名 FOREIGN KEY (`外键字段名`) REFERENCES `1` (`主键字段名`)
  • 示例:grade表的gradeid字段作为student表的外键
CREATE TABLE IF NOT EXISTS `grade`(
	`gradeid` INT(10) NOT NULL COMMENT '年级号',
	`gradename` VARCHAR(20) NOT NULL COMMENT '年级',
	PRIMARY KEY(`gradeid`)
)ENGINE=INNODB CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `student`(
	`id` INT(10) NOT NULL COMMENT '学号',
	`name` VARCHAR(20) NOT NULL COMMENT '姓名',
	`gradeid` INT(10) NOT NULL COMMENT '年级号',
	PRIMARY KEY(`id`),
	KEY FK_gradeid (`gradeid`),
	CONSTRAINT FK_gradeid FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`)
)ENGINE=INNODB CHARSET=utf8;

2)创建表后添加外键关系

-- 表1中的主键作为表2中的外键
-- 对表2中操作
ALTER TABLE `2`
ADD CONSTRAINT FK_外键字段名 FOREIGN KEY (`外键字段名`) REFERENCES `1` (`主键字段名`)
  • 示例:grade表的gradeid字段作为student表的外键
CREATE TABLE IF NOT EXISTS `grade`(
	`gradeid` INT(10) NOT NULL COMMENT '年级号',
	`gradename` VARCHAR(20) NOT NULL COMMENT '年级',
	PRIMARY KEY(`gradeid`)
)ENGINE=INNODB CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `student`(
	`id` INT(10) NOT NULL COMMENT '学号',
	`name` VARCHAR(20) NOT NULL COMMENT '姓名',
	`gradeid` INT(10) NOT NULL COMMENT '年级号',
	PRIMARY KEY(`id`)
)ENGINE=INNODB CHARSET=utf8;

ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`)
  • 注意:
    1.删除表时需要先删除有外键的表(表2),再删除主键作为外键的表(表1)
    2.一般不使用数据库级的外键,因为在delete或update是需考虑很麻烦,若之后想用多张表的数据,使用程序级别去实现外键(这里我还没学到)。

6. 数据操作语言

1> DML语言(增删改)

1)添加 insert

  • 一次插入一组值
INSERT INTO `表名` (`字段1`,`字段2`,...) 
VALUES ('字段1的值','字段2的值',...)
  • 一次插入多组值
INSERT INTO `表名` (`字段1`,`字段2`,...) 
VALUES ('第一组字段1的值','第一组字段2的值',...),
('第二组字段1的值','第二组字段2的值',...),
('第n组字段1的值','第n组字段2的值',...)
  • 注意:字段名可省略,但插入值的顺序需要和创建表时的字段顺序相同

2)修改 update

  • 不指定条件下,会修改该字段下所有内容
UPDATE `表名` SET `字段名`='修改后的值' 
  • 指定条件下,修改一个字段内容
UPDATE `表名` SET `字段名`='修改后的值' WHERE 筛选条件
  • 指定条件下,修改多个字段内容
UPDATE `表名` SET `字段名1`='修改后的值',`字段名2`='修改后的值',`字段名n`='修改后的值' 
WHERE 筛选条件  
  • where后的操作符
    =、!=或<>、<、>、<=、>=、BETWEEN…AND…、AND、OR、NOT、IS NULL、IS NOT NULL、LIKE(字符匹配,结果为真)、IN(在其中某个值中为真)

3)删除 delete

  • 删除指定数据
DELETE FROM `表名` WHERE 筛选条件
  • 清空表中数据
TRUNCATE `表名`  -- 不会影响事务,自增计数器会归1
DELETE FROM `表名`  -- engine为innodb重启后自增计数器会归1(内存),engine为myisam重启后不会影响自增(文件)

2> DQL语言(查)

SELECT查询语句

SELECT [ALL | DISTINCT]  -- 显示所有结果(默认ALL)/显示去重后结果
* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]] -- 查询的内容:*全部/表中所有字段内容/表中部分字段内容
FROM table_name [as table_alias]  -- 指定从哪个表进行查询
[left | right | inner join table_name2]  -- 联合查询(7种)
[WHERE ...]  -- 指定查询该结果需满足的条件
[GROUP BY field1, field2, ...]  -- 指定结果按照哪几个字段进行分组
[HAVING ...]  -- 过滤分组的记录必须满足的次要条件
[ORDER BY field1 ASC | DESC]  -- 排序:指定查询记录按一个或多个条件排序
[LIMIT {[offset,]row_count | row_countOFFSET offset}];  -- 分页:指定查询的记录从哪条至哪条

1)查询基本信息

  • 查询表中全部信息
SELECT * FROM ·`表名` 
  • 查询表中某些字段全部信息,字段名的查询结果可用别名显示
SELECT `字段名1` AS `别名`,`字段名2` FROM `表名` AS `别名`
  • 函数cancat(c1,c2,c3…)连接多个内容
SELECT CONCAT(c1,c2,c3....) AS newname FROM `表名`  -- c1,c2,c3....可为字段名,字符串,字符,数值..
  • 去重DISTINCT:去除查询结果中重复的数据
SELECT DISTINCT `字段名` FROM `表名`

2)where条件查询

  • where筛选条件查询
SELECT * FROM ·`表名` WHERE 筛选条件
  • 模糊查询
-- LIKE:字符匹配
SELECT `字段名` FROM `表名` WHERE `字段名` LIKE '9%' -- %剩余全部字符
SELECT `字段名` FROM `表名` WHERE `字段名` LIKE '9_' -- '_'表示一个字符
-- IN:匹配多个内容中的某一个
SELECT * FROM `字段名`WHERE `表名` IN(匹配内容1,匹配内容2...)
  • 子查询
SELECT ..
FROM ..
WHERE 字段名 = (
	SELECT ..
	...	
)

3)联表查询
7种join方式
步骤:
①确定需要查询的字段来自哪些表。
②确定使用上述七种连接方法的哪一种实现连接。
③确定连接交叉点,即两表种数据相同的字段
④需要时,添加筛选条件

SELECT `字段名` 
FROM1 AS1别名
XXX JOIN2 AS2别名  -- 选择连接方法
ON1别名.数据相同的字段名 =2别名.数据相同的字段名
XXX JOIN3 AS3别名  -- 连接多个表,两个表连接好往后追加
ON1/2/3别名.数据相同的字段名 =1/2/3别名.数据相同的字段名
WHERE 筛选条件
  • 自连接
    若一张表中的信息具有父类子类关系,若查询父类及其对应的子类的字段信息可使用该方法。
    具体:把一张表当两张表操作,where筛选条件为父类与子类的关系
SELECT 表别名1.字段1 AS "parent", 表别名2.字段1 AS "son"
FROM 表名 AS 表别名1, 表名 AS 表别名2
WHERE 表别名1.具有关系的字段名1 = 表别名2.具有关系的字段名2

4)排序

ORDER BY `字段名` ASC -- 升序
ORDER BY `字段名` DESC  -- 降序

5)分页

limit (n-1) * pagesize, pagesize  -- n:当前页数  pagesize:每页显示个数

6)分组和过滤

GROUP BY `字段名`  -- 通过字段名进行分组
HAVING 过滤条件 -- 分组的过滤条件

7. MySQL函数

常用函数和聚合函数
具体函数功能参考官网文档

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值