MYSQL基础语法
学习目标
- 能够理解数据库的概念
- 能够安装MySQL数据库
- 能够启动,关闭及登录MySQL
- 能够使用SQL语句操作数据库
- 能够使用SQL语句操作表结构
- 能够使用SQL语句进行数据的添加修改和删除的操作
- 能够使用SQL语句进行排序
- 能够使用聚合函数
- 能够使用SQL语句进行分组查
- 能够使用SQL语句添加主键、外键、唯一、非空约束
SQL概述
- SQL的概念
Structrue Query Language 结构化查询语言 - SQL的作用:对数据库进行操作(创建库,删除库,创建表,删除表,增删改查表单数据)
SQL语句分类 | 说明 |
---|---|
DDL | Data Define Language 数据定义语言 用于创建数据库,数据表等操作 关键字:create、drop… |
DML | Data Manipulation Language 数据操作语言 用于对数据表数据进行增删改操作 关键字:insert/update/delete |
DQL | Data Query Language 数据查询语言 用于对数据进行查询操作 关键字:select/show |
DCL | Data Control Language 数据控制语言 用于创建用户,删除用户,给用户分配权限等操作 关键字:grant/removke |
DDL语句-操作数据库
DDL语句操作数据库 | 语法 |
---|---|
创建数据库 | create database 数据库名; |
查看所有数据库 | show databases; |
查看某个数据库的定义信息 | show create database 数据库; |
修改数据库的字符集 | alter database 数据库名 default character set 码表; |
删除数据库 | drop database 数据库名; |
查看正在使用的数据库 | select database(); |
使用数据库 | use数据库名 |
DDL语句-操作数据表
DDL语句操作数据表 | 语法 |
---|---|
创建数据表 | create table 表名(字段名1 数据类型,…); |
查看数据库所有表 | show tables; |
查看表结构 | desc 表名; |
查看创表语句 | show create table 表名; |
复制表(只复制结构,不复制数据) | create table 新表名 like 旧表名; |
删除表 | drop table 表名; |
判断表是否存在,存在则删除 | drop table if exists 表名; |
DML语句-插入数据
DML语句之插入数据
/**
插入数据语法:
格式1:insert into 表名(字段名1,…) values(值1,…);
格式2:insert into 表名 values(值1,…);
*/
– 向student表中插入记录: 插入全部字段(所有的字段名都写出来)
注意1:除了数值型,其他所有类型的数据都必须使用引号括起来:
可以单引号也可以双引号, 推荐使用单引号
注意2:字段名和值的顺序要一直,个数要一致,类型要一致
insert into student(id,name,sex,birthday) values(1,‘jack’,‘男’,‘2020-10-20’);
– 向student表中插入记录: 插入全部字段(不写字段名)
insert into student values(2,‘rose’,‘女’,‘2020-11-11’);
– 向student表中插入记录: 插入部分字段
insert into student(id,name) values(5,‘小明’),(4,‘小波’);
DML语句插入数据 | 语法 |
---|---|
插入全部字段 | insert into 表名(字段1,…) values(值1,…)insert into 表名 values(值1,…) |
插入部分字段 | insert into 表名(字段1,…) values(值1,…) |
插入多条数据 | insert into 表名(字段1,…) values(值1,…),(值1,…); |
DML语句-更新数据
DML语句更新数据 | 语法 |
---|---|
不带条件更新 | Update 表名 set 字段名1=值1,字段名2=值2,…; |
带条件更新 | Update 表名 set 字段名1=值1,字段名2=值2,… where 条件; |
DML语句-删除数据
DML语句删除数据 | 语法 |
---|---|
删除满足条件的数据 | delete from 表名 where 条件; |
删除所有数据 | delete from 表名; |
删除所有数据 | truncate 表名; |
DQL语句-简单数据
DQL语句查询数据 | 语法 |
---|---|
查询所有数据 | select * from 表名; |
查询满足条件的数据 | select * from 表名 where 条件; |
查询数据指定别名 | select 字段名 别名,… from 表名 where 条件; |
DQL语句-条件查询-排序查询
排序查询分类 | 语法 |
---|---|
单列排序 | select * from 表名 order by 字段名 asc或desc asc:升序,默认值 desc:降序 |
组合排序 | select * from 表名 order by 字段名 asc或desc, 字段名 asc或desc |
聚合函数查询
MySQL常用聚合函数 | 说明 |
---|---|
count | 求数量 |
sum | 求和 |
max | 求最大值 |
min | 求最小值 |
avg | 求平均值 |
分组查询
分组查询的语法:select * from 表名 group by 字段名 having 条件;
注意
1、分组后聚合函数操作的不再是行数据,而是组数据了。
2、对于分组后的条件需要使用having子句
3、having语句后使用的字段名必须是出现在select语句中的
having与where的区别:
where:一行一行过滤数据:横向查询,不能在后面使用聚合函数(属性纵向查询)。
having:用于分组之后过滤数据,可以使用聚合函数的。
分页查询
分页查询的语法:select * from 表名 limit 跳过的行数,要查询的记录数
数据库约束概述
约束的作用:对表中的数据进行限制,保证数据的正确性、有效性。
约束名 | 约束关键字 |
---|---|
主键约束 | primary key |
非空约束 | not null |
唯一约束 | unique |
默认约束 | default 默认值 |
外键约束 | constraint foregin key(外键列名) references 主表(主键) |
检查约束 | mysql 不支持 |
主键约束
主键约束小结 | 说明 |
---|---|
主键的作用 | 记录的唯一标识 |
主键的特点 | 非空且唯一 |
添加主键约束 | 创表时添加:字段名 数据类型 primary key 修改表结构添加:alter table 表名 add primary key(主键列名) |
删除主键约束 | alter table 表名 drop primary key; |
主键自增长
语法:字段名 数据类型 primary key auto_increment;
唯一约束
唯一约束 | 小结 |
---|---|
作用 | 约束某一列的值不能重复 |
语法 | 字段名 数据类型 unique |
非空约束
非空约束 | 小结 |
---|---|
作用 | 约束某一列的值不能为null |
语法 | 字段名 数据类型 not null |