SQL(结构化查询语言)

SQL

SQL分类

SQL分类 操作对象 操作 关键字
DDL(数据定义语言) 数据库,表,视图和索引 创建,删除,修改 CREATE,DROP,ALTER
DCL(数据控制语言) 数据库 数据库的事务管理
DML(数据操纵语言) 数据内容 增删改 INSERT INTO,DELETE,UPDATE
DQL(数据查询语言) 数据内容 查询 SELECT

DDL(数据定义)

数据定义语言,对数据库/表 的创建修改删除

1)创建数据库
create database db1 charset utf8;
2)删除数据库
drop database db1;
3)修改数据库编码
alter database db1 charset utf8;


1)创建表
create table student(
id int not null ,
name varchar(5) not null,
age int char(2) default 0,
primary key(‘id’)
);

2)删除表
drop table student;

3)修改表
添加表的字段
alter table student add email varchar(20) NOT NULL AFTER name;
(在name字段后加一个字段email)

DCL(数据控制)

数据库是事务管理,比如权限管理等。

密码设置

一开始没有设置密码所以需要设置

MySQL 密码的设置

(建议使用第二种,第一种是坑,莫名其妙有时候不行。。。)

第一种:不用登录进mysql  
	win+Q 搜索cmd 选中命令提示符右击管理员登录。  

	输入指令:mysqladmin -uroot -p password 123456  

	上述命令参数说明:-u 指用户 -p指密码  

	上述指令意思:以root用户登录 设置密码为123456  




第二种:以root用户登录mysql  

	先登录mysql,修改mysql数据库中的表user的用户的密码  

	指令:update user set password=password('123456') where user="root";  

	指令解释:修改表设置user为root的记录的密码为123456  

修改密码

(建议第二种)

	第一种不登陆mysql:  

		修改密码指令:mysqladmin -uroot -p123456 password “123abc”;  

		上述指令意思:以root用户登录将密码123456修改为123abc  



	第二种登录mysql:  

		方法:修改mysql数据库中表user  

		指令:update user set password=password('newmima') where user="root";  

DML(数据操纵)

数据操纵语言,对数据进行增删改

1)插入数据  
insert into student(id,name,age)values(1,"zhangsan",18);  
2)  修改数据  
update student set name=“shuaige” where id=1;  
3)删除记录  
delete from  stu2 where  id=1;

DQL(数据查询)

SQL注释和注意事项

1.简单查询

1)基本的查询语句

where条件查询

select name from student where id=1;

(查询id等于1的学生的名字)


组合where子句

操作符 and

select name from student where id>2 and id<6 and age=18;

(and操作符将条件组合在一起,每增加一个过滤条件就要添加一个and)


操作符or

select * from student where age>8 or name like "zhang%";

(查询年龄大于8岁或者名字是zhang开头的 所有人的 学生)


计算次序 当or与and一起出现的时候 and优先级更高

select * from student where age>8 or age<18 and name like "zhang%";

(查询年龄大于18而且名字是zhang开头的 学生 或者年龄只需要大于8岁的学生)

不过最好用括号()来明确计算次序,括号括起来的先计算


in操作符

select *from student where id in(1,4,2,7);

(in表示指定了条件范围)

过滤查询 关键字distinct(不能有重复的)
SELECT DISTINCT name FROM student; (查询stundent表中所有不重复的名字)
查询多个字段
SELECT id,name from student ; (从student表中查询所有的id和name列,用逗号作为字段之间的分隔符)
别名 as
select id as sid from student;

(查询出来的视图中id字段名变为sid,只是修改视图中的而不会修改原来表中的id名)

连接 concat(" 分隔符",字段1,字段2)
select concat(‘=’id,name) from student;

结果比如就是:2018214491=张三

2)模糊查询

like操作符与%通配符

%通配符(匹配任何字符任意长度,但null不能匹配)

select name from student where name like "张%";

(查询“张”开头的所有student表中的名字; “%”是一个通配符,表示任何字符他都匹配)

应用场景:栈内搜索(效率比较低)


通配符 _

_只能匹配任意单个字符,不能多个字符


正则匹配

关键字regexp

select * from student where name regexp " [z,c]c" ;

regexp表示后面接的是一个正则表达式;

3)排序以及聚合函数

排序关键字order by
select *from student order bt age; 默认是升序

select *from student order bt age desc; 降序
聚合函数

count() 计算数量

sum() 计算和 select sum(age) from student;求student表格中的年龄之和

avg() 求平均 select avg(age)from student; 求年龄的平均

分组 group by
select count(*)as total ,sex from student group by sex;

(按照sex分组,查出男女各自的数量)

group by having

select count(*),sex from student group by sex having sex="女";

按照sex分组查询sex=“女”的数量;

4)字符串模糊查询

2.汇总分析

1)如何汇总分析

2)如何对数据分组

3)如何对分组结果指定条件

4)用SQL解决业务问题的套路

5)对查询结果排序

6)看懂报错信息

3.复杂查询

1)视图(概念,如何使用,作用,注意事项)

2)子查询,标量子查询,关联子查询

3)各种常用函数

4.多表查询

1)表的加法

2)联结查询,交叉连接,内连接,外连接(左连接,右连接),全连接

3)联结应用案列

4)case表达式

sql常见面试题:

版权声明:本文为weixin_43919632原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43919632/article/details/102843160