MySQL小白教程(持续更新ing)

1. pre

Java EE:企业级Java开发 Web

前端:页面展示,数据

后端:连接数据库

数据库:存数据


1.1 什么是数据库

数据库:Database---->DB

概念:数据仓库,软件

作用:存储数据,管理数据


1.2 数据库分类

关系型数据库:(SQL)

  • MySQL,
  • 通过表与表之间,行与行之间的关系进行数据的存储

非关系型数据库:(NoSQL)

  • Redis
  • 非关系型数据库,对象存储,通过对象的自身属性决定

DBMS(数据库管理系系统)

  • 数据库的管理软件,管理和操作数据
  • MySQL---->数据库管理系统


1.3 MySQL的安装与使用

  • 启动mysql:net start mysql57

    终止mysql:net stop mysql57

  • 进入masql:mysql -u root -p然后输入密码 或

    mysql -u root -p(+密码)

1.4 创建数据库


基字符集:utf8

数据库排列规则:utf8_general_ci

注:

utf8_general_ci----->不区分大小写

utf8_bin------>区分大小写


1.5 连接数据库

mysql -u root -p123456 -- 连接数据库

--------------------------------------
-- 所有语句都用;结尾
show databases; -- 查看所有的数据库

use school -- 切换数据库use数据库名
Databases changed -- 若显示,则切换成功

show tables; -- 查看数据库中所有的表
describe students; -- 显示数据库中所有的表的信息

create database westos; -- 创建一个数据库

exit; -- 推出连接

-- 单行注释
/*
 多行注释
*/

数据库xxx语言

DDL 定义

DML 操作

DQL 查询

DCL 控制

2. 操作数据库

2.1 操作数据库

  • 创建数据库
create database[if not exists] westos;
  • 删除数据库
drop database[if exists] westos;
  • 使用数据库
-- 如果表名或或字段名是一个特殊字段,需要带``
use `school`
  • 查看数据库
show databases --查看所有的数据库


2.2 列的数据类型


数据类型详解


2.3 数据库的字段属性*

主键

  • 唯一标识符,不能重复

Unsigned

  • 无符号的函数
  • 声明后该列不能为负数

zerofil

  • 0填充的
  • 不足的位数,用0来填充

自增

  • 通常理解为自增,自动在上一条记录的基础上 +1
  • 通常用来设计唯一的主键~ index,必须是整数类型
  • 可以自定义设计主键自增的起始值和步长

非空

  • 假设设置为 not null,如果不给其赋值,就会报错
  • NULL,如果不填写,默认值是null

默认

  • 设置默认的值
  • eg. 默认值是男,若不指定该列的值,则会有默认的值
-- 每个表都必须存在的五个字段
id -- 主键
`version` -- 乐观锁
is_delete -- 伪删除
gmt_create -- 创建时间
gmt_updata -- 修改时间


2.4 创建数据库表*

-- 表的名称和字段尽量用``括起来
-- auto_increment 自增
-- 字符串用单引号括起来
-- 所有的语句后面加,(英文),除了最后一句
--primary key 主键,一般一个表只有唯一的主键

CREATE TABLE IF NOT EXISTS `menbers` (
	`id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR(10) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`psw` INT(10) NOT NULL DEFAULT '123456' COMMENT'密码',
	`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
	`address` VARCHAR(100) DEFAULT NULL COMMENT '地址',
	`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
	PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8 

格式

create table if not exists `表名` (
    `字段名` 列类型 [属性] [索引] [注释],
    `字段名` 列类型 [属性] [索引] [注释],
    ......
    `字段名` 列类型 [属性] [索引] [注释],
	primary key(`id`)
)[表类型] [字符集设置] [注释]


2.5 数据表的类型——MyISAM和InnoDB


常用命令

show create database school -- 查看创建数据库的语句
show create table student -- 查看student数据表的定义的语句
desc student -- 显示表的结构

数据表的类型

MYISAMINNODB
事务支持不支持支持
数据行锁定不支持支持
外键约束不支持支持
全文索引支持不支持
表空间的大小较小较大
  • ​ 常规使用
    • MYISAM 节约空间,速度较快
    • INNODB 安全性高,事务的处理,多表多用户操作

MySQL引擎在物理文件上的区别

  • InnoDB在数据库表中只有.frm文件,以及上级目录下的ibdata文件
  • MYISAM对应的文件
    • .frm 表结构的定义文件
    • .MYD 数据文件 (data)
    • .MYI 索引文件(index)

设置数据库表的字符集编码

charset=utf8

默认编码:Latin1------不支持中文

在my.ini中配置:

character-set-server=utf8


2.6修改、删除 命令

  • 修改

    -- 重命名
    alt table 表名 rename as 新表名;
    -- 增加表的字段
    alt table 表名 add 字段 [列类型];
    --------------------------------------------------------------------------------------
    -- 重新定义字段类型
    alt table 表名 modify 字段 新类型;
    -- 修改表中的字段
    alt table 表名 change 旧表名 新表名 [类型];
    --------------------------------------------------------------------------------------
    -- 删除表中的字段
    alt table 表名 drop 字段;
    
  • 删除

    -- 删除表
    drop table if exist 表名;
    



3、MySQL数据管理

3.1 外键


3.2 DML语言


数据库:存储数据,管理数据

DML语言:数据操作语言

  • insert
  • updata
  • delete


3.3 insert-----添加

--  写插入语句时,字段与值一一对应
INSERT INTO `student`(`name`) VALUES ('张三')

INSERT INTO `student`(`name`,`sex`,`psw`,`age`) VALUES ('ketty','女','123456','12')

-- 插入多个字段
INSERT INTO `student`(`name`,`sex`,`psw`,`age`) 
VALUES ('ally','女','123456','12'),('lily','女','123456','10')

INSERT INTO `student`
VALUES (6,'carry','女','123456','10','111111','dkjncjdkmckd')


语法insert into 表名(字段1,字段2,字段3,字段4) values('值1','值2','值3','值4')

注:

  • 字段与字段之间用英文逗号,隔开

    INSERT INTO `student`(`name`,`sex`,`psw`,`age`) VALUES ('ketty','女','123456','12')
    
  • 字段可以省略,但后面的值必须一一对应

    INSERT INTO `student`
    VALUES (6,'carry','女','123456','10','111111','dkjncjdkmckd')
    
  • 可以同时插入多条数据,values后的值必须用,隔开

    INSERT INTO `student`(`name`,`sex`,`psw`,`age`) 
    VALUES ('ally','女','123456','12'),('lily','女','123456','10')
    


3.4 updata-----修改

-- 修改内容,指定位置
UPDATE `members` SET `name`='Alice' WHERE id=4

-- 不指定条件时,会改变所有的表
UPDATE `members` SET `name`='Alice'
-- 修改内容。指定范围
UPDATE `members` SET `email`=NULL WHERE id BETWEEN 1 AND 3
-- 修改多个属性,英文逗号隔开
UPDATE `members` SET `name`='Ally',`psw`='100000',`sex`='male',`email`='98340@qq.com' WHERE id=7

语法update 表名 set column_name=value,where [条件]

操作符含义范围结果
=等于
<>/!=不等于
>
<
>=
<=
between A and B[A,B]
and5>1 or 1>2false
or5>1 or 1>2true

注:

  • column_name是数据库的列,尽量带反引``号
  • 如果没有指明条件,则会修改所有的列
  • values可以是具体的值,或一个变量
  • 设置的多个属性之间,用英文,隔开

3.5 delete-----删除

  • delete

    -- 不会影响自增
    delete from members
    
  • truncate

    -- 自增会归零,不会影响事务
    truncate table members
    


4. DQL 查询数据🔺🔺🔺

4.1 DQL(核心)

Data Query Language——数据查询语言

-- 查询全部		select 字段 from 表名
select * from student

-- 查询指定字段
select `字段名`,`字段名` from 表名

-- 查询指定字段并将字段命名为
select `字段名` as 新名,`字段名` as 新名 from 表名 as 新名

-- 函数 concat(a,b)
select concat('姓名:',字段名) as 新名字 from 表名


4.2 去重&&数据库的表达式

  • 去重
-- 去重distinct
select distint `字段名` from 表名
  • 数据库的列(表达式)
-- 查询系统版本
select version()

-- 计算(表达式)
select 表达式 as 新的字段名

-- 查询自增的步长(变量)
select @@auto_increment


4.3 where子句之逻辑运算符


作用:检索数据中符合条件的值

搜索条件由一个或多个表达式组成

select `字段名`,`字段名` from 表名
where 限制条件
  • 逻辑运算符
运算符语法描述
and &&a and b / a&&b
or ||a or b / a||b
not !not a / !b


4.4 模糊查询

  • 模糊查询
运算符语法描述
is nulla is nulla为空,结果为真
is not nulla is not nulla不为空,结果为真
between…and…a between b and ca在b,c之间
likealike b% // a like b_ // a like b_ _ // a like %b%
inin(a,b,c…)
-- 查询email非空的
select `id`,`name` from `members`
where email is not null

-- 查询名字中有A
select `id`,`name` from `members`
where `name` like 'A%'
-- 查询名字中有A且共2字
select `id`,`name` from `members`
where `name` like 'A_'
-- 查询名字中有A且共3字
select `id`,`name` from `members`
where `name` like 'A_ _'
-- 查询名字中有A且在中间
select `id`,`name` from `members`
where `name` like '%A%'


4.5 联表查询

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值