avatar

目录
mysql数据库

数据库的基本概念

数据库的英文单词DataBase,简称DB

什么是数据库

用于存储和管理数据的仓库

什么是SQL

SQL全称(Structured Query Language)结构化查询语言

其实就是定义了操作所有关系型数据库的规则。每一种数据操作的方式存在不一样的地方,称为”方言”

数据库的特点

  1. 持久化存储数据。其实数据库就是一个文件系统
  2. 方便存储和管理数据
  3. 使用了统一的方式操作数据库 – SQL

常见的数据库软件

  1. oracle

    1. mysql

开始

MySQL服务启动

  1. 手动
  2. cmd –> service.msc打开服务窗口
  3. 使用管理员打开cmd
    • net start mysql
    • net stop mysql

MySQL的登录&退出

  • 登录

    1. $ mysql -u 用户民 -p 密码
    2. $ mysql -hip 地址 -u 用户名 -p 连接目标的密码
    3. $ mysql --host=ip 地址 --user= 用户名 --password= 连接目标的密码
  • 退出

    1. exit
    2. quit

常见的数据类型

  • int:整数类型
  • double:小数类型
  • varchar:字符串类型
  • date:日期,yyyy-MM-dd
  • datetime:日期,yyyy-MM-dd HH:mm:ss
  • timestamp:时间戳类型,如果将来不给字段赋值,则默认使用当前时间来赋值

SQL基本语法

  1. SQL语法可以单行或多行书写,以分号结尾
  2. 可使用空格和缩进来增强语句的可读性
  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
  4. 3种注释
    • 单行注释:-- 注释 or # 注释
    • 多行注释:/* 注释 */

SQL分类

  1. DDL(Data Definition Language)数据定义语言用来定义数据库对象:数据库,表,列表。关键字:create,drop,alter等

  2. DML(Data Manipulation Language)数据操作语言用来对数据库中表的数据进行增删改。关键字:insert,delete,update等

  3. DQL(Data Query Language)数据查询语言用来查询数据库中表的记录。关键字:select,where等

  4. DCL(Data Control Language)数据库控制语言(了解)用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT,REVOKE等

DDL(操作数据库和表)

DDL:数据库和表的操作

操作数据库

Create

create database 数据库的名字:创建数据库

create database if not exists 数据库的名字:判断数据库是否存在,不存在则创建,存在则不创建

create database 数据库名字 character set 字符集名字:创建数据库并指定字符集

合并:

create database if not exists 数据库名字 character set 字符集

Retrieve

show databases;:查询所有数据库的名称

show create database 数据库的名称 :查询某个数据库的字符集:查询某个数据库的创建语句

Update

alter database 数据库名字 character set 字符集名字:修改数据库的字符集

Delete

drop database 数据库名称:删除数据库

drop database if exists 数据库名称:判断数据库存在,存在则删除,不存在则不删除

使用数据库

use 数据库名字:使用数据库

select database():查询当前正在使用的数据库名称

操作表

Create

create table 表名(列名 数据类型);创建一列数据

Code
1
2
3
4
5
6
7
create table 表名(
列名1 数据类型1,
列名2 数据类型2.
...,
列名n 数据类型n
)
注意:最后一列不要家,
Code
1
2
3
4
5
create table school(
id int,
name varchar,
sec varchar
)
  • 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
  • AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
  • PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
  • ENGINE 设置存储引擎,CHARSET 设置编码

Retrieve

show tables:查询某个数据库中所有的表名称

desc 表名:查询表结构

Update

alter table 表名 rename to 新的表名:修改表名

alter table 表名 character set 字符集:修改列表字符集

alter table 表名 add 列名 数据类型:添加一列

alter table 表名 change 列名 新列别 新数据类型:修改列名称 类型

alter table 表名 modify 列名 新数据类型:修改列名称 类型

alter table 表名 drop 列名:删除列

Delete

drop table 表名

drop table if exists 表名

DML(数据的增删查改)

DML:增删改表中数据

添加数据

insert into 表名(列名1,...,列名n) values(数据1,...,数据n):给对应的列名添加数据

insert into 表名 values (数据1,...,数据n):给所有的列添加数据

注意:

  • 列名和值要一一对应

  • 如果表名后,不定义列名,则默认添加所有数据

  • 出了数字类型和关键字(不如:null)以外都要加引号

删除数据

delete from 表名 [where 条件]:删除符合条件的数据

truncate table 表名:先删除表,再创建一个一摸一样的空表

注意:

  • 如果不添加条件,则删除表中所有的记录
  • 如果要删除所有的记录
    • 第一种的性能低,由多少条数据就执行几次
    • 第二种的性能高,就删除和创建

修改数据

update 表名 set 列名1=值1,...,列名n=值n [where 条件] :修改一个符合条件的数据

注意:

  • 如果不加任何条件,则会将表中所有记录全部修改

DQL(查询数据)

DQL:查询表中的记录

基础查询

查询多个字段:

  • select * from 表名:查询表中的所有数据

  • select 字段1,,,,,字段n from 表名:查询表中指定的字段

去除重复的结果集:

  • distinct

计算列:

  • select number1 + nunmber2 from 表名:将number1/2相加

  • ifnull(参数1,参数2)

    • 参数1:参数1是否为null

    • 参数2:如果参数1为null则用参数2代替

起别名:

  • select english as 英语 from 表名 :给English字段用英语来代替,as可用空格来代替

条件查询:

  • 大于 and 小于 and 等于

    • select * from 表名 where age > 20:查询表中age大于20的数据
    • select * from 表名 where age = 20:查询表中age等于20的数据
    • select * from 表名 where age < 20:查询表中age小于20的数据
  • 大于等于 and 小于等于

    • select * from 表名 where age >= 20:查询表中age大于等于20的数据
    • select * from 表名 where age <= 20:查询表中age小于等于20的数据
  • 并且

    • select * from 表名 where age > 20 && age < 30:查询表中age大于20且小于30的数据
    • select * from 表名 where age > 20 and age < 30:查询表中age大于20且小于30的数据
    • select * from 表名 where between 20 and 30:查询表中age大于20且小于30的数据
  • 或者

    • select * from 表名 where age = 20 || age = 10:查询表中age等于20或age等于10的数据
    • select * from 表名 where age = 20 or age = 10:查询表中age等于20或age等于10的数据
    • select * from 表名 where age in (20,10):查询表中age等于20或age等于10的数据
  • 不等于

    • select * from 表名 where age != 20:查询表中不等于20的数据
    • select * from 表名 where age <> 20:查询表中不等于20的数据
  • 不等于Null

    • select * from 表名 where age is null:查询表中age为null的数据
    • select * from 表名 where age is not null:查询表中age不为null的数据
  • 模糊查询:

    • %任意多个字符,_任意一个字符
    • select * from 表名 where name link "_荣_":查询名字中间是荣的数据
    • select * from 表名 where name link "%荣%":查询名字中间里面包含荣的

排序查询

select * from 表名 order by 排序字段1 排序方式1,排序字段2 排序方式2

排序方式:

  • ASC:升序,不指定默认升序
  • DESC:降序

注意:

  • 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件

聚合函数

  • count:计算个数

    • 注意:聚合函数会排除null的数据
      • 用ifnull给他变成0
      • 使用select count(*) from 表名不推荐使用
      • count最好使用一个不为null且不重复的值
  • max:计算最大值

  • min:计算最小值

  • sum:总和

  • avg:平均分

select 聚合函数(列名)from 表名

分组查询

group by 分组字段

分页查询

  • 语法:limit 开始的索引,每页查询的条数

  • 公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数

  • limit是Mysql的”方言”

select * from 表名 limit 0,3:从第0个索引查看3条数据

约束

对表中的数据进行限定,保证数据的正确性,有效性和完整性

  • 分类:
    • 主键约束:primary key
    • 非空约束:not null
    • 唯一约束:nuique
    • 外键约束:foreign key

非空约束

某一列的值不能未空

  • 创建表时添加约束
Code
1
2
3
4
create table stu(
id int,
name varchar(10) not null
)
  • 创建表完后,添加非空约束

alter table stu modify name varchar(10) not null

  • 删除name的非空约束

alter table stu modify name varchar(10)

唯一约束

某一列的值不能重复

  • 注意:唯一约束可以有null值

  • 创建表时添加约束

Code
1
2
3
4
create table stu(
id int,
name varchar(10) unique
)
  • 创建表后,添加唯一约束

alter table stu modify name varchar(10) unique

  • 删除name的唯一约束

alter table stu drop index name

主键约束

非空且唯一

  • 注意:
    • 一张表只能由一个字段为主键
    • 主键就是表中记录的唯一标识
  • 创建表时添加约束
Code
1
2
3
4
create table sty(
id int primary key,
name varchar(10)
)
  • 创建表后,添加主键

alter table stu modify id int primary key

  • 删除主键

alter table stu drop primary key

自动增长

如果某一列是数值类型,使用auto_increment可以来完成自动增长

  • 创建表时自动增长
Code
1
2
3
4
create table stu(
id int primary key auto_increment,
name varchar(10)
)
  • 创建表之后添加

alter table stu modify id int auto_increment

  • 删除自动增长

alter table stu modify id int

外键约束

让表与表产生关联,从而保证数据的正确性

  • 创建表时外键
Code
1
2
3
create table stu(
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
)
  • 创建表后添加外键

alter table 表名 add constraint 外键名称 foreign key (外键字段名称) references 主表名称(主表列名称)

  • 删除外键

alter table 表名 drop foreign key 外键名称

级联操作

  • 添加级联操作

alter table 表名 add constraint 外键名称 foreign key (外键字段名称) references 主表名称(主表列名称) on update cascade on delete cascade

  • 级联跟新

on update cascade

  • 级联删除

on delete cascade

数据库的设计

p40

完整语法:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定
文章作者: 青空
文章链接: https://gitee.com/AIR-ZRB/blog/2020/03/02/Mysql-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 青空
打赏
  • 微信
    微信
  • 支付寶
    支付寶