MySQL基础语法学习总结

一、数据库概述

数据库其实就是存放数据的仓库

使用数据库的原因就是为了方便对数据的增删查改,如果存放在文件中的话,文件太大会很影响读取效率。

数据库的目录结构:

目录内容
bin存放MySQL相关的可执行文件,MySQLInstanceConfig.exe 启动配置导向
data存放MySQL默认自带数据库
include存放MySQL运行需要的c语言头文件
lib存放c++动态链接库

数据库的类型:

关系型数据库:MySQL、Oracle。。。(数据存储在一张二维表中)

非关系型数据库:Redis。。。

数据库服务器一对多个数据库,数据库一对多张表

二、SQL

1.sql简介

概述:

Structrue Query Language 结构化查询语言

作用:

对数据库进行操作(创建数据库、删除数据库,创建表、删除表,增删查改表数据)

SQL语句分类:

分类说明
DDLData Define Language
数据库定义语言
用于创建数据库、数据表等操作
关键字:create、drop。。。
DMLData manipulation Language
数据操作语言
用于对数据表数据进行增删改查操作
关键字:insert、update、delete
DQLData Query Language
数据查询语言
用于对数据进行查询操作
关键字:select、show
DCLData ControlLanguage
数据控制语言
用于创建用户、删除用户、给用户分配权限等操作
关键字:grant、remove

SQL语法:

每条sql语句以英文分号结尾

关键字不区分大小写,官方推荐大写

SQL注释的分类:

单行注释:

# 注释内容:mysql特有的注释
-- 注释内容(所有数据库库共有的注释)

多行注释:

/*
注释内容
*/

2.操作数据库和数据表

DDL数据库操作语句:

DDL语句操作数据库语法
创建数据库create database 数据库名;
查看所有数据库show databases;
查看某个数据的定义信息show create database 数据库名;
修改数据库的字符集alter database 数据库名 default character set 码表;
删除数据库drop 数据库名;
查看正在使用的数据库select datbase();
使用数据库use 数据库名;

DDL语句操作数据表:

DDL语句操作数据表语法
创建数据表create table 表名(字段名1 数据类型,…);
查看数据库所有表show tables;
查看表结构desc 表名;
查看创表语句show create table 表名;
复制表(只复制结构,不复制数据)create table 新表名 like 旧表名;
删除表drop table 表名;
判断表是否存在,存在则删除drop table if exists 表名;

DDL语句修改表结构:

DDL语句修改表结构语法
添加表列alter table 表名 add 字段名 数据类型;
修改列类型alter table 表名 modify 字段名 数据类型;
修改列名和类型alter table 表名 change 旧字段名 新字段名 数据类型;
删除列alter table 表名 drop 字段名;
修改表名rename table 旧表名 to 新表名;
修改表字符集alter table 表名 default character set 码表;

3.操作数据

MySQL常用数据类型:

int:整型

double:小数

varchar:变长字符串

data:日期,格式:yyyy-mm-dd,没有数据

插入数据:

DML语句插入数据语法
插入全部字段insert into 表名(字段1,…) values(值1,…)
insert into 表名 values(值1,…)
插入部分字段insert into 表名(字段1,…) values(值1,…)
插入多条数据insert into 表名(字段1,…) values(值1,…),(值1,…);

更新数据(也就是对数据的修改):

DML语句更新数据语法
不带条件更新Update 表名 set 字段名1=值1,字段名2=值2,…;
带条件更新Update 表名 set 字段名1=值1,字段名2=值2,… where 条件;

删除数据:

DML语句删除数据语法
删除满足条件的数据delete from 表名 where 条件;
删除所有数据delete from 表名;这种删除方式不会影响表的自增长
删除所有数据truncate 表名;这种方式会充值表的自增长

查询数据:

DQL语句查询数据语法
查询所有数据select * from 表名;
查询满足条件的数据select * from 表名 where 条件;
查询数据指定别名select 字段名 别名,… from 表名 where 条件;

4.条件查询

4.1 in和like关键字查询

通配符:

%:匹配任意和字符

_:匹配任意一个字符

关键字作用格式
in限定查询数据的范围select * from 数据表 where 表字段 not in (1,3,5);
like模糊查询,满足条件的查询出来select * from 数据表 where 表字段 like ‘马%’;

4.2 排序查询

排序查询分类语法
单列排序select * from 表名 order by 字段名 asc或desc
asc:升序,默认值
desc:降序
组合排序select * from 表名 order by 字段名1 asc或desc, 字段名2 asc或desc
这种方式会先根据1排序,遇到相同才会使用2排序

4.3 聚合函数查询

MySQL常用聚合函数说明格式
count求数量select count(english) from student;
sum求和select sum(math) 数学总分 from student;
max求最大值select max(math) 数学最高分 from student;
min求最小值select min(math) 数学最低分 from student;
avg求平均值select avg(math) 数学成绩平均分 from student;

4.4 分组查询

分组查询的语法: group by 字段名 having 条件

注意事项:

1.分组之后,聚合函数操作的不是行数据,而是组数据

2.对于分组之后的条件筛选需要使用having语句

3.having语句使用的字段名必须是出现在select语句中的

having和where的区别:

where:是一行一行的过滤数,横向查询,不能在聚合后使用

having:用于分组之后过滤数据,用在聚合函数之后

总结:也就是说,除非是聚合函数后面,否则全部使用where

4.5 分页查询

分页查询的语法: limit int(要跳过的行数),int(要查询的记录数)

可以理解为 limit 从那里开始拿,拿多少数据

作用:

分页查询分页查询,就是用来分页的,就像淘宝的商品分页展示那样

注意:

如果分页要和排序一起使用时,要把排序放到前面,这是规定

5.数据库约束

约束的作用:对表中的数据限制,保证数据的正确、有效

种类:

约束名约束关键字
主键约束primary key
非空约束not null
唯一约束unique
默认约束default 默认值
外键约束constraint foregin key(外键列名) references 主表(主键)
检查约束mysql 不支持

5.1 主键

添加主键:

在创建表的时候:在表字段后面加上primary key即可

创建好之后再添加主键:

alter table 数据表 add primary key(表字段);

删除主键:

alter table 数据表 drop primary key;

主键的作用:

记录的唯一标识

主键的特点:

非空且唯一,就相当于 not null + unique

5.2 唯一约束、非空约束和默认约束

其实这三个没什么好说的,需要记住就是单词,至于作用,他都告诉你了。

约束格式
唯一约束创建数据库的时候,在表字段的后面添加unique(注意,null是无值,所以不存在重复)
非空约束创建数据库的时候,在表字段的后面添加 not null
默认约束创建数据库的时候,在表字段的后面添加 default 要设定的默认值

5.3 外键约束

没有外键存在的问题:

员工表内有部门和地区信息,由于人数众多,数据信息冗余;

解决方案:

将重复数据抽取到一张部门表中;但还是有问题,因为两张表中的部门id没有关系,所有员工表中有可能出现无意义不存在的数值,所以需要引入外键;

什么是外键约束:

一张表的某一列引用另一张表的主键列的值

主表:约束其他的表

副表(从表):被其他表约束的表

约束语法:

constraint foreign key(外键列名) references (主键列名);

外键相关语法:

作用语法
查询外键名字show create table 表名;
在表存在的时候添加外键CONSTRAINT 外键名 FOREIGN KEY (副表字段) REFERENCES 主表(字段名)
删除外键alter table 表名 drop foreign key 外键名;
创建表的时候添加外键alter table 表名 add constraint foreign key (副表字段) references 主表(字段名);

外键的级联操作:

由于创建外键之后,主表主键的更新、修改、删除操作都不被允许,所以需要添加级联操作来解放一些操作。

级联操作就是让主表发生变化之后,副表根据规则发生改变。

而一般也是修改副表的级联操作即可,主表不需要修改。

级联操作分类语法
删除时on delete casede
修改时on update casede

拓展:自增长和零填充

这两个都是只能用于整数类型的字段上的;

自增长:

在表字段后面添加 aotu_increment即可,添加数据的时候可以指定这个数据也可以不指定,不指定就自增。

要注意,使用delete删除之后,不会重置自增长的数值,而truncate会重置自增长,自增长默认第一个数是1;

零填充:

其实就对于限定长度的数据的空白处填充0,为了数据格式更好看

只需要在表字段的后面添加zerofill即可;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值