MySQL基础(一)已完结

⼀. SQL概述

1.实现数据持久化

2.使用完整的管理系统统一管理

二.数据库的概念

1.DB—数据库(DATABASE):

存储数据的"仓库"。它保存了一系列有组织的数据

2.DBMS— 数据库管理系统(DATABASE MANAGEMENT SYSTEM)

数据库是通过DBMS创建和操作的容易

3.SQL — 结构化查询语言(STRUCTURE QUERY LANGUAGE)

专门用来与数据库通信的语言

三.SQL的优点

1.不是某个特定数据库供应商专有的语言,几乎所有DBMS都支持SQL

2.简单易学

3.虽然简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作

四.SQL语言的分类

1. DML(DATA MANIPULATION LANGUAGE):
数据操纵语句,⽤于添 加、删除、修改、查询数据库记录,并检查数据完整性。
INSERT: 添加数据到数据库中。
UPDATE: 修改数据库中的数据。
DELETE: 删除数据库中的数据。
SELECT: 选择 ( 查询 ) 数据。 SELECT SQL 语⾔的基础,最为重要。
2. DDL(DATA DEFINITION LANGUAGE):
DDL⽤于定义数据库的结构,⽐如创建、修改或删除数据库对象。
CREATE TABLE: 创建数据库表。
ALTER TABLE: 更改表结构、添加、删除、修改列⻓度。
DROP TABLE: 删除表。
CREATE INDEX: 在表上建⽴索引。
DROP INDEX: 删除索引
3. DCL(DATA CONTROL LANGUAGE):
数据控制语句,⽤于定义⽤ 户的访问权限和安全级别。
GRANT :授予访问权限。
REVOKE :撤销访问权限。
COMMIT :提交事务处理。
ROLLBACK :事务处理回退。
SAVEPOINT :设置保存点。
LOCK :对数据库的特定部分进⾏锁定
​​​​​​​

五.启动停⽌mysql服务

1. 通过计算机管理⽅式:
右击计算机 管理 服务 启动或停⽌ MySQL 服务
2. 通过命令⾏⽅式:
启动 : net start mysql 服务名 停⽌ : net stop mysql 服务名
3. 登录
MYSQL –H 主机名 –U ⽤户名 –P 密码
例如: mysql -h127.0.0.1 -uroot -p123456
4. 退出
EXIT
例如: exit;
注意事项:
① 不区分⼤⼩写。
② 每句话⽤ ; \g 结尾。
③ 各⼦句⼀般分⾏写。
④ 关键字不能缩写也不能分⾏。
⑤ ⽤缩进提⾼语句的可读性。
-- 习题:
-- 1. 创建 db 数据库 并设置字符集编码为 utf8mb4 并设置 排序⽅式为区分⼤⼩写。
-- 2. 切换数据为 db
-- 3. 创建数据表 stu 设置属性 id ⻓整型 主键 ⾃增; name 名称 字符型 ⻓度( 50 )不能为空
默认空字符;
-- 4. gender 固定字符 ⻓度 1 不能为空 默认 1 描述:性别 1. 男, 2. ⼥, 3. 保密; -- 5. create_time 时间戳类型 不能为空 进⾏ insert 的时候,⾃动使⽤当前时间。
-- 6. update_time 时间戳类型 不能为空 进⾏ update 的时候,⾃动使⽤单前时间,进⾏ insert
的时候⾃动使⽤当前时间。
-- 7. 使⽤的数据库引擎为 innodb 默认字符集编码为 utf8mb4 排序⽅式为 不区分⼤⼩写 ,并
设计 ⾃动增⻓的开始值为 1.
-- 8. 完善创建语句,保证数据表在不存在的情况下,进⾏创建,如果数据表存在,删除后新
建。
-- 9. 添加 remark 属性,要求 可变字符串 200 ⻓度 不能为空。
-- 10. 修改 remark 的属性为 ⻓度 255 可以为空。
-- 11. 删除 remark 列。
-- 12. 修改 gender 的列名为 sex 类型为 tinyint ⻓度为 2 默认值为 1 ,描述不变
-- 13. 使⽤默认⽅式插⼊⼀个条数据 name Michael, sex 1 id 1.
-- 14. 使⽤指定 column 的⽅式⼀次性插⼊ 3 条记录, name 分别为 Lucy Lily, Lin ,其它属性使
⽤默认值。
-- 15. 修改 id 3 的这条数据,将性别改为 3 ,名称改为 Lingling
-- 16. 删除最后⼀条数据,试着使⽤函数 max()

六.对数据库的操作

-- 1. 创建简单数据库 公式: create database 数据库名称;
create database `db`;
-- 2. 创建完整数据库 完整公式: create database ` 数据库名称 ` character set 字符集编
collate 字符排序规则 ;
-- 使⽤ utf8mb4 代替 utf8 原因 mysql 中的 utf8 最多只能⽀持 3bytes ⻓度的字符编码,对
于⼀些需要占据 4bytes 的⽂字, mysql utf8 就不⽀持了,要使⽤ utf8mb4 才⾏。
-- ci ⼤⼩写⽆关 cs ⼤⼩写相关 ai 发⾳⽆关 常⽤: utf8mb4_bin ⼤⼩写相关 国内常
⽤: utf8mb4_general_ci 建议使⽤: utf8mb4_unicode_ci 原因: mysql8 后默认为:
utf8mb4_0900_ai_ci
-- SQL 语句 > 列级别设置 > 表级别设置 > 库级别设置 > 实例级别设置
create database if not exists `db` character set utf8mb4 collate utf8_general_ci;
-- 删除数据库 不教
-- 3. 查询所有数据库
show databases;
-- 4. 切换数据库
-- 公式 : use ` 数据库名称 ` use db;
命名规则:
数据库名不得超过 30 个字符,变量名限制为 29 个。
必须只能包含 A–Z, a–z, 0–9, _ 63 个字符。
不能在对象名的字符间留空格。
必须不能和⽤户定义的其他对象重名。
必须保证你的字段没有和保留字、数据库系统或常⽤⽅法冲突。
保持字段名和类型的⼀致性 , 在命名字段并为其指定数据类型的时候⼀定要保证⼀致性。假如
数据类型在⼀个表⾥是整数 , 那在另⼀个表⾥可就别变成字符型了。

七.对表的操作

1. CREATE TABLE 语句
必须具备:
CREATE TABLE 权限
② 存储空间
公式:
create table [schema.]table
(column datatype [default expr][, …]);
必须指定 :
表名
列名 , 数据类型 , 尺⼨
# 1. 创建基本数据库
create table stu (
`id` bigint(20) not null comment 主键 ID auto_increment,
`name` varchar(255) not null default '' comment ' 名字 ',
`gender` char(1) not null default '1' comment ' 性别 1. 男, 2. ⼥, 3. 保密 ',
`create_time` timestamp not null default current_timestamp comment ' 创建时间 ',
`update_time` timestamp not null default current_timestamp on update current_timestamp
comment ' 修改时间 ',
primary key(`id`)
) engine = innodb default character set utf8mb4 collate utf8mb4_unicode_ci auto_increment
= 1;
-- 数字类型 (表格)
-- 整数 : tinyint smallint mediumint int bigint
-- bigint 相当于 long tinyint 相当于 byte (x) 括号中的值相当于数字的⻓度
-- 浮点数 : float double real decimal
-- M,D M 相当于总⻓度, D 相当于⼩数点右侧的位数
-- D<=M<=255,0<=D<=30 ,默认 M+D<=15
-- D<=M<=255,0<=D<=30 , 默认 M+D<=6
-- ⽇期和时间 : date time datetime timestamp year -- TIMESTAMP 会根据系统时区进⾏转换, DATETIME 则不会,都代表时间戳,时间戳也可以
使⽤ bigint 来替代
-- 字符串类型
-- 字符串 : char varchar
-- char 最⼤⻓度 255
-- varchar(x) ⻓度可以变化但必须给值, char 默认⻓度为 1 ,不可变
-- ⽂本 : tinytext text mediumtext longtext
-- 超⻓字符
-- ⼆进制 ( 可⽤来存储图⽚、⾳乐等 ): tinyblob blob mediumblob longblob
2. ALTER TABLE 语句
① 查看现有表中的列的设置参数
# 1. 查看当前表的结构
# 说明:查看当前表中所有已经声明的列的类型,⻓度,默认值,是否为空,描述等
# 公式: desc tablename
desc stu;
② 向已有的表中添加列
# 2. 向数据表中加⼊新列
# 说明:使⽤该⽅法不能与当前表中已有的列重名
# 公式: alter table 表名 add column datatype [default expr][, …]
alter table `stu` add `remark` varchar(200) not null comment ‘ 备注 ';
③ 修改现有表中的列
# 3. 修改⼀个列
# 说明:⼀般来说主要修改列的数据类型 , 尺⼨和默认值
# 公式: alter table tablename modify (column datatype [default expr][, …]);
alter table `stu` modify `remark` char(255) null comment ‘ 备注 ';
# 对默认值的修改只影响今后对表的修改 , 已经⽣成的默认值不会发⽣变化
④ 删除现有表中的列
# 4. 删除⼀个列
# 说明:删除当前表中已经存在的列
# 公式: alter table tablename drop column column;
alter table `stu` drop column `remark`;
⑤ 重命名现有表中的列
# 5. 重命名⼀个列
# 说明:对当前表格中已经存在的列更改其的列名称。 # 公式: alter table `stu` change old_column new_cloumn datatype;
alter table `stu` change `remark` `remark1` varchar(255) not null default '' comment ‘ 备注 ';
# 重命名的过程中必须重新制定 datatype
⑥ 删除表
# 6. 删除表
# 说明: 1. 数据和结构都被删除
# 2. 所有正在运⾏的相关事务被提交
# 3. 所有相关索引被删除
# 4. DROP TABLE 语句不能回滚
# 公式: drop table tablename;
drop table if exists `stu`;
⑦ 清空表
# 7. 清空表
# 说明: 1. 极度危险 ,
# 2. 删除表中所有的数据 , 释放表的存储空间
#
3. TRUNCATE 语句不能回滚
#
4. ⾃动 auto_increment 重新⽣成,危险中的危险
# 公式 : truncate tablename
truncate stu;
⑧ 修改表名
# 8. 改变表名
# 说明: 1. ⼀般来讲,对于表的修改最安全的就是修改表名。
# 2. 其它内容不要更改。
# 公式: alter table old_tablename rename to new_tablename;
alter table stu rename to student;

. 数据库的基本操作:

1. insert 语法:
# 说明: 1. 向创建好的数据库中插⼊⼀条或者多条数据。
# 2. ⾮空字段和主键必须添加。
# 3. 如果设置了 default 可以不⽤对字段进⾏填充。
# 4. 类型和数量要对应匹配。
# 5. values value 之间没有区别。
# 公式: insert into tablename values (column, ...)
# 第⼀种⽅式:默认⽅式添加数据。
# 注意:对应创建表格的多有字段,依次给定对应的值,使⽤默认值的主键字段和⽇期字段可
以使⽤ null 值代替
insert into student value (5, 'Jerry', '1' , '2020-01-01 00:00:00', '2020-01-01 00:00:00', '
'); # 第⼆种⽅式:指定字段添加数据
# 公式 : insert into tablename (column[,column...]) value (value[, value]);
insert into student (`name`) value ('Michael');
# ⾃学内容
# 第三种⽅式 : 指定字段添加多条数据
# 公式: insert into tablename (column[, column ...]) value (value[, value...]), (value[, value…]);
insert into student (`name`) value ('Jerry'), ('Tom'), ('Gray');
# 第四种⽅式 : 指定字段通过查询语句添加多条数据
# 公式 : insert into tablename (column[, column]) 查询语句
insert into student (`name`) select `name` from student;
2. update 语法:
# 说明: 1. 对表中已有的数据可以进⾏更新操作
# 2. 尽量不要进⾏全表操作。
# 3. 前提当前操作⽤户有 update 当前表的权限
# 公式: update tablename set column = value [, column = value] where condition;
update student set `name` = 'Michael' where `name` = 'Michael';
update student set `name` = 'Michael', gender = '3' where `name` = ‘Michael1';
3. delete 语法:
# 说明: 1. 删除指定表中的数据。
# 2. 尽量不要全表操作。
# 3. 前提当前操作⽤户有 delete 当前表的权限。
# 4. 删除操作执⾏后,⾃动递增的 id 继续向下递增。
# 公式: delete from tablename where condition;
delete from student where id = 5;
4. select 基本语法
# 说明: 1. mysql 中的绝对重点。
# 公式: select * | column[, column] from tablename where condition;
select * from student;
  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值