目录

  • 一.SQL语句的分类:
  • 1.DDL(数据定义语句):
  • 操作数据库
  • 1.1:create:创建
  • 1.2:alter:修改
  • 1.3:drop:删除
  • 1.4:show:查询
  • 1.5:use:切换
  • 操作数据表
  • 1.1:create:创建
  • 1.2:desc:查看表结构
  • 1.3:show :查看
  • 1.4:alter:修改
  • 1.5:alter:添加
  • 1.6:drop:删除:
  • 2.DML(数据操作语句)
  • 2.1.insert:添加操作
  • 2.2:update:修改操作
  • 2.3delete:删除操作
  • 2.4:面试题
  • 3.DCL(数据控制语言)
  • 4.DQL(数据查询语言)
  • 4.1 查询:select
  • 4.2 几道例题:
  • 4.3:distinct:过滤去重元素
  • 4.4 as:别名
  • 4.5 order by:排序
  • 4.6 关于null 的问题:


一.SQL语句的分类:

mysql数据库流程语句 mysql数据库sql语句_表名

1.DDL(数据定义语句):
操作数据库

数据定义语句,针对数据库、数据表、视图、索引执行创建和删除操作的。

  • create database:创建
  • alter database:修改
  • drop database:删除
  • show:查询
  • use:切换
1.1:create:创建
1.create database 数据库名;
2.create database 数据库名 character set 编码格式;
1.2:alter:修改

修改数据库的字符集

alter database 数据库名称 character set 字符集;
1.3:drop:删除

删除数据库

drop database 数据库名;
1.4:show:查询

查询所有的数据库

1.show databases;
2.show create database 数据库名称  # 查询数据库的编码
1.5:use:切换
# 切换到当前的数据库
use 数据库名称; 

# 查询当前正在使用的数据库名称
select databases();
操作数据表
  • create table:创建表
  • desc table:查看表结构
  • show:查看数据表的创建语句
  • alter table:添加、修改表
  • drop table:删除
1.1:create:创建
create table 数据表名称(
	字段名称  数据类型(长度),
	字段名称  数据类型(长度),
	........

);

mysql数据库流程语句 mysql数据库sql语句_表名_02

1.2:desc:查看表结构
desc 数据表名称

mysql数据库流程语句 mysql数据库sql语句_数据库_03

1.3:show :查看
1.show createt table 数据表名称  # 查看表名称
2.show tables;   # 查看当前数据库中所有的数据表
1.4:alter:修改
alter table 旧名称  rename  新名称;
1.5:alter:添加
1.alter table 表名称 add 列名 数据类型(长度)   # 在所有的末尾添加新列
2.alter table 表名称 add 列名 数据类型(长度)  after 已经存在的列   # 在指定列的后面添加新列
3.alter table 表名称 add 列名 数据类型(长度) first。    # 在第一列中添加新列

mysql数据库流程语句 mysql数据库sql语句_mysql数据库流程语句_04

4.alter table 表名  drop 列名;        # 删除列
5.alter table 表名称 modify 列名  数据类型(长度);   # 只能修改数据类型
6.alter table 表名称 change 旧名称  新名称  数据类型(长度);    # 可以修改类名和其他信息

将sgender修改为ssex char(2)

mysql数据库流程语句 mysql数据库sql语句_数据库_05

1.6:drop:删除:
drop table 表名称;
2.DML(数据操作语句)
  • insert:添加
  • update:修改
  • delete:删除
2.1.insert:添加操作

单行添加

insert into 表名 (字段名1,字段名2,字段名3....) values(值1,值2,值3);
insert into 表名 set 字段1 = 值1,字段2 = 值2,字段3 = 值3;

方式一
字段名全写

INSERT INTO student(sid,sname,sage,sgender,semail) 
VALUES(1,'刘能',50,'男','liuneng@163.com');

省略部分字段

INSERT INTO student(sid,sname,sgender)
VALUES(3,'王大拿','男');

省略全部字段

INSERT INTO student VALUES(4,'谢大脚',48,'女','cunhua@163.com');

多行添加

insert  into  表名 (字段1,字段2,字段3) values(值1,值2,值3),(值1,值2,值3)….;
2.2:update:修改操作
update  表名  set  字段名=值,字段名=值… where  name='刘能';
2.3delete:删除操作
delete  from  表名  where  name=‘张三’;
truncate  table 表名
2.4:面试题

delete删除不加where 和 truncate区别?
1.删除过程不同:
delete删除逐行删除
truncate 将整张表删除,再创建一张跟原表一样的数据。
truncate 执行效率 比delete高。
2.语言意义不同:
truncate 是DDL语句,delete是DML语句
3.truncate删除的数据不能找回,delete删除后的数据可以找回

3.DCL(数据控制语言)
4.DQL(数据查询语言)

DQL(Data Query Language)数据查询语句,主要针对数据表做查询操作。不会影响表结构和表中的数据,

4.1 查询:select
-- 查询数据表中所有数据
1.select * from 表名 
-- 查询指定的片段
2.select 字段,字段,字段 from 表名;
-- 按条件查询
3.select 字段,字段....from  表名  where 查询条件。

运算符

mysql数据库流程语句 mysql数据库sql语句_数据库_06

4.2 几道例题:

between and

需求:查询英语成绩是60到80分的学生:

mysql数据库流程语句 mysql数据库sql语句_表名_07


IN

需求:查询英语成绩是60,70,77的学生信息

mysql数据库流程语句 mysql数据库sql语句_字段_08


like

like用于模糊查询,查询字段是字符类型,结合通配符使用。

%:匹配0个或多个任意字符

_:匹配一个任意字符。

需求:查询刘姓学生信息:

mysql数据库流程语句 mysql数据库sql语句_mysql数据库流程语句_09


需求:查询所有姓刘,名字带有两个字的。

mysql数据库流程语句 mysql数据库sql语句_数据库_10


is null

判断该列是否为空:

需求:查询英语成绩为空的学生:

mysql数据库流程语句 mysql数据库sql语句_mysql数据库流程语句_11


需求:查询英语成绩不为空的学生:

mysql数据库流程语句 mysql数据库sql语句_数据库_12

4.3:distinct:过滤去重元素
语法:select distinict 字段1,字段2 from  表名 where 条件;
4.4 as:别名
1.select  字段 as 别名,字段  as  别名 from 表名 【where  条件】
-- as也可以省略
2.select  字段 别名,字段 别名 from 表名 【where  条件】
4.5 order by:排序
-- 根据字段1进行排序,如果字段1一样,则根据字段2排序
select * from 表名 【where 条件】 order by 字段1(DESC|ASC),字段2(DESC|ASC)....
4.6 关于null 的问题:

和null相加的值结果为null如果想要结果不为null

SELECT `name`,IFNULL(chinese,0)+IFNULL(math,0)+IFNULL(english,0) FROM exam;