MySQL初学个人笔记

MySQL初学

数据库:服务器(存数据)+客户端(连接服务器,操作数据)
  • 数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。
    数据库是一个按数据结构来存储和管理数据的计算机软件系统。数据库的概念实际包括两层意思:
    • 数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,“数据”和“库”两个概念结合成为数据库。
    • 数据库是数据管理的新方法和技术,它能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。
MySQL服务开启、关闭
  • Windows服务方式启动:

在这里插入图片描述

在这里插入图片描述

  • DOS命令方式启动:

    以管理员身份运行命令提示符

net start mysql80 # 启动MySQL服务,mysql80 是MySQL服务名
net stop mysql80 # 关闭MySQL服务

控制台连接数据库

MySQL 是⼀个需要账户名密码登录的数据库,登陆后使⽤,它提供了⼀个默认的 root 账号,使 ⽤安装时设置的密码即可登录。或者使⽤MySQL安装时添加的账号和密码登录。

登录格式:

mysql -u⽤户名 -p密码
例:
mysql -uroot -p123456
mysql -hIP地址 -u⽤户名 -p密码
例:
mysql -h127.0.0.1 -uroot -p123456
mysql --host=IP地址 --user=⽤户名 --password=密码
例:
mysql --h=127.0.0.1 --u=root --p=123456
quit或exit # 退出MySQL

数据库管理系统

数据库管理系统(DataBase Management System,DBMS):指⼀种操作和管理数据库的⼤ 型软件,⽤于建⽴、使⽤和维护数据库,对数据库进⾏统⼀管理和控制,以保证数据库的安全性 和完整性。⽤户通过数据库管理系统访问数据库中表内的数据

SQL的概念

Structured Query Language 结构化查询语⾔

作用
  • 是⼀种所有关系型数据库的查询规范,不同的数据库都⽀持。
  • 通⽤的数据库操作语⾔,可以⽤在不同的数据库中。
  • 不同的数据库 SQL 语句有⼀些区别 – 称为“⽅⾔”。

在这里插入图片描述

SQL语句分类

  • Data Definition Language (DDL 数据定义语⾔), 如:建库,建表
  • Data Manipulation Language(DML 数据操纵语⾔),如:对表中的记录操作增删改 (可通过事务操作撤销)
  • Data Query Language(DQL 数据查询语⾔),如:对表中的查询操作
  • Data Control Language(DCL 数据控制语⾔),如:对⽤户权限的设置

DDL操作数据库

创建数据库的几种方法:
  • 创建数据库:
CREATE DATABASE 数据库名;
  • 判断数据库是否已经存在,不存在则创建数据库:
CREATE DATABASE IF NOT EXISTS 数据库名;
  • 创建数据库并指定字符集
 CREATE DATABASE 数据库名 CHARACTER SET 字符集;
具体操作
-- 直接创建数据库
create database db1;
-- 判断是否存在,如果不存在则创建数据库
create database if not exists db2;
-- 创建数据库并指定字符集为 gbk
create database db3 default character set gbk;
查看数据库
-- 查看所有的数据库
show databases;
-- 查看某个数据库的定义信息
show create database db3;
show create database db1;
修改数据库
  • 修改数据库默认的字集符
ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;	
  • 具体操作
-- 将db3数据库的字符集改成utf8
alter database db3 character set utf8;
删除数据库
  • 删除数据库的语法
 DROP DATABASE 数据库名;
  • 具体操作
-- 删除db2数据库
drop database db2;
使用数据库
  • 查看正在使用的数据库
SELECT DATABASE(); # 使⽤的⼀个mysql中的全局函数
  • 使⽤/切换数据库
USE 数据库名;
  • 具体操作
-- 查看正在使⽤的数据库
select database();
-- 改变要使⽤的数据库
use db4;
DDL操作表结构
  • 创建表的格式
CREATE TABLE 表名 (
 字段名 1 字段类型 1,
 字段名 2 字段类型 2
);
创建表的关键字说明
CREATE创建
TABLE
查看表
SHOW TABLE; --查看某个数据库中的所有表

DESC 表名; --查看表结构

SHOW CREATE TABLE 表名; --查看创建表的SQL语句
快速创建⼀个表结构相同的表
CREATE TABLE 新表名 LIKE 旧表名; --语法

-- 创建s1表,s1表结构和student表结构相同
create table s1 like student;

desc s1;
删除表
DROP TABLE 表名; --直接删除表

DROP TABLE IF EXISTS 表名; --判断表是否存在,如果存在则删除表

-- 直接删除表 s1 表
drop table s1;

-- 判断表是否存在并删除 s1 表
drop table if exists `create`;
修改表结构
ALTER TABLE 表名 ADD 列名 类型; --添加表列

-- 为学⽣表添加⼀个新的字段remark,类型为varchar(20)
alter table student add remark varchar(20);

ALTER TABLE 表名 MODIFY 列名 新的类型; --修改列类型MODIFY

-- 将student表中的remark字段的改成varchar(100)
alter table student modify remark varchar(100);

ALTER TABLE 表名 CHANGE 旧列名 新列名 类型; --修改列名 CHANGE

-- 将student表中的remark字段名改成intro,类型varchar(30)
alter table student change remark intro varchar(30);

ALTER TABLE 表名 DROP 列名; --删除列 DROP

-- 删除student表中的字段intro
alter table student change remark intro varchar(30);

RENAME TABLE 表名 TO 新表名; --修改表名

-- 将学⽣表student改名成student2
rename table student to student2;

ALTER TABLE 表名 character set 字符集; --修改字符集 character set

-- 将student2表的编码修改成gbk
alter table student2 character set gbk;

DML操作表中的数据

用于对表中的记录进行增删改操作

插入记录
INSERT [INTO] 表名 [字段名] VALUES (字段值);
# INSERT INTO 表名:表示往哪张表中添加数据
# (字段名 1, 字段名 2, ...):要给哪些字段设置值
# VALUES (值 1, 值 2, ...):设置具体的值
插⼊全部字段
-- 所有的字段名都写出来
INSERT INTO 表名 (字段名 1, 字段名 2, 字段名 3...) VALUES (1,2,3);
-- 不写字段名
INSERT INTO 表名 VALUES (1,2,3...);
插⼊部分数据
INSERT INTO 表名 (字段名 1, 字段名 2, ...) VALUES (1,2, ...);

insert into student (id,name,age,sex) values (1, '孙悟空', 20, '男');
insert into student (id,name,age,sex) values (2, '孙悟天', 16, '男');

-- 插⼊所有列
insert into student values (3, '孙悟饭', 18, '男', '⻳仙⼈洞中');
-- 如果只插⼊部分列,必须写列名
insert into student values (3, '孙悟饭', 18, '男');
select * from student;
更新表记录
UPDATE 表名 SET 列名=[WHERE 条件表达式]
# UPDATE: 需要更新的表名
# SET: 修改的列值
# WHERE: 符合条件的记录才更新
# 你可以同时更新⼀个或多个字段。
# 你可以在 WHERE ⼦句中指定任何条件。
  • 不带条件修改数据
UPDATE 表名 SET 字段名=; -- 修改所有的⾏

-- 不带条件修改数据,将所有的性别改成⼥
update student set sex = '⼥';
  • 待条件修改数据
UPDATE 表名 SET 字段名=WHERE 字段名=;

-- 带条件修改数据,将 id 号为 2 的学⽣性别改成男
update student set sex='男' where id=2;
-- ⼀次修改多个列,把 id 为 3 的学⽣,年龄改成 26 岁,address 改成北京
update student set age=26, address='北京' where id=3;

若不能修改则需要修改数据库安全模式

SET SQL_SAFE_UPDATES = 0;

删除表记录

DELETE FROM 表名 [WHERE 条件表达式]
# 如果没有指定 WHERE ⼦句,MySQL 表中的所有记录将被删除。
# 你可以在 WHERE ⼦句中指定任何条件
  • 无条件删除
DELETE FROM 表名;

-- 不带条件删除数据,删除表中的所有数据
delete from student;
  • 带条件删除
DELETE FROM 表名 WHERE 字段名=-- 带条件删除数据,删除 id 为 1 的记录
delete from student where id=1;
  • 使用truncate删除表中所有记录
TRUNCATE TABLE 表名;
  • truncate和delete的区别
    • truncate 相当于删除表的结构,再创建⼀张表。

DQL查询表中的数据

查询不会对数据库中的数据进⾏修改,只是⼀种显示数据的⽅式。

SELECT 列名 FROM 表名 [WHERE 条件表达式]
# 1) SELECT 命令可以读取⼀⾏或者多⾏记录。
# 2) 你可以使⽤星号(*)来代替其他字段,SELECT 语句会返回表的所有字段数据
# 3) 你可以使⽤ WHERE 语句来包含任何条件。
简单查询
  • 查询表所有行和列的数据
-- 使⽤*表示所有列
SELECT * FROM 表名;
-- 查询所有的学⽣
select * from student;
  • 查询指定列
-- 查询指定列的数据, 多个列之间以逗号分隔
SELECT 字段名 1, 字段名 2, 字段名 3, ... FROM 表名;
-- 查询 student 表中的 name 和 age 列
select name,age from student;
指定列的别名进⾏查询
  • 使⽤关键字
    • 使⽤别名的好处:显示的时候使⽤新的名字,并不修改表的结构。
  • 语法
-- 对列指定别名
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名;

-- 使⽤别名
select name as 姓名, age as 年龄 from student;

-- 对列和表同时指定别名
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名 AS 表别名;

-- 表使⽤别名
select st.name as 姓名, age as 年龄 from student as st;

清除重复值

  • 查询指定列并且结果不出现重复数据
SELECT DISTINCT 字段名 FROM 表名;

-- 查询学⽣来⾄于哪些地⽅
select address from student;
-- 去掉重复的记录
select distinct address from student;

查询结果参与运算

  • 某列数据和固定值运算
 SELECT 列名 1 + 固定值 FROM 表名;
  • 某列数据和其他列数据参与运算
SELECT 列名 1 + 列名 2 FROM 表名;
  • 实例
/* 需求:
 准备数据: 添加数, 英语成绩列, 给每条记录添加对应的数学和英语成绩.
 查询的时候将数学和英语的成绩相加
*/
select * from student;
-- 给所有的数学加 5 分
select math + 5 from student;

-- 查询 math + english 的和
select * from student;

select *, (math+english) as 总成绩 from student;
-- as 可以省略
select *, (math+english) 总成绩 from student;
条件查询
  • 为什么要条件查询
    • 如果没有查询条件,则每次查询所有的⾏。实际应⽤中,⼀般要指定查询的条件,对记录进 ⾏过滤。
  • 条件查询的语法
SELECT 字段名 FROM 表名 WHERE 条件;
# 流程: 取出表中的每条数据,满⾜条件的记录就返回,不满⾜条件的记录不返回
  • 逻辑运算符
逻辑运算符说明
and 或 &&与,SQL 中建议使⽤前者,后者并不通⽤。
or 或 ||
not 或 !
  • 实例:
-- 查询 age ⼤于 35 且性别为男的学⽣(两个条件同时满⾜)
select * from student where age > 35 and sex = '男';

-- 查询 age ⼤于 35 或性别为男的学⽣(两个条件其中⼀个满⾜)
select * from student where age > 35 or sex = '男';

-- 查询id是1或3或5的学⽣
select * from student where id = 1 or id = 3 or id = 5;

-- 查询 english 成绩⼤于等于 75,且⼩于等于 90 的学⽣
select * from student where english between 75 and 90;

-- LIKE 表示模糊查询
SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';

SELECT 字段名 FROM 表名 WHERE 字段 in (数据 1, 数据 2...);
-- in ⾥⾯的每个数据都会作为⼀次条件,只要满⾜条件的就会显示

-- 查询id是1或3或5的学⽣
select * from student where id in(1, 3, 5);

-- 查询id不是1或3或5的学⽣
select * from student where id not in(1, 3, 5);
  • MySQL通配符
通配符说明
%匹配任意多个字符串
_匹配⼀个字符
  • 实例:
-- 查询姓⻢的学⽣
select * from student where name like '⻢%';
select * from student where name like '⻢';
-- 查询姓名中包含'德'字的学⽣
select * from student where name like '%德%';
-- 查询姓⻢,且姓名有两个字的学⽣
select * from student where name like '⻢_';
  • 查询id是1或3或5的学⽣
select * from student where id in(1, 3, 5);
  • 查询id不是1或3或5的学⽣
select * from student where id not in(1, 3, 5);
  • MySQL通配符
通配符说明
%匹配任意多个字符串
_匹配⼀个字符
  • 实例:
-- 查询姓⻢的学⽣
select * from student where name like '⻢%';
select * from student where name like '⻢';
-- 查询姓名中包含'德'字的学⽣
select * from student where name like '%德%';
-- 查询姓⻢,且姓名有两个字的学⽣
select * from student where name like '⻢_';
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL初学笔记是一份由一位学习数据库初学者总结的详细笔记,其中包含了MySQL的基础知识和高级应用。这份笔记包括了MySQL的高级查询方法和存储过程的编写,旨在帮助初学者更好地理解和应用MySQL数据库。这份笔记中还提供了一些具体的代码示例,可以帮助开发者进实践和应用。 在MySQL初学笔记中,还涵盖了一些基本的语法规则和约束类型,比如非空、主键、唯一等。例如,在创建表时,可以在字段名和类型后面追加约束类型来设置列级约束。其中,支持的约束类型有:默认、非空、主键、唯一(除了外键都支持)。 这份笔记可以作为MySQL初学者的学习参考,特别是对于想要掌握MySQL的高级查询方法和利用存储过程编写复杂程序逻辑的学习者来说,是非常有用的。可以根据自己的需要,重点学习存储过程部分,并通过实践来提高自己的开发效率。 希望这份MySQL初学笔记能为初学者们提供帮助,并带领他们更深入地学习和应用MySQL数据库。如果有任何不对的地方,也欢迎指正和纠正。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [很详细的mysql数据库笔记.pdf](https://download.csdn.net/download/dafeidouzi/12043750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [MySQL学习笔记2-高级查询与存储.md](https://download.csdn.net/download/weixin_52057528/88240999)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [尚硅谷MySQL基础学习笔记](https://blog.csdn.net/qq_21579045/article/details/98111827)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值