SQL语句 DDL DML DQL DCL的基本操作

四大类:
1、DDL (数据定义) 建库,建表 列等.create,drop,alter等
2、DML(数据操控) 增删改 insert,delete, update等
3、DQL(数据查询)对表中的查询操作 select,where等
4、DCL(授权) GRANT REVOKE等
CRUD :增删改查

一、DDL

C、Create 创建

CREATE DATABASE 数据库名称; //创建数据库 默认字符集UTF-8
CREATE DETABASE IF NOT EXISTS 数据库名 ; //如果数据库不存在才创建,存在不会报错
CREATE DATABASE DB3 CHARACTER SET 字符集(GBK..UTF-8...); // 创建数据库的同时指定字符集
CREATE DATABASE IF NOT  EXISTS DB3 CHARACTER SET GBK ;//判断创建数据库并且指定字符集 

R、Retrieve :查询

SHOW DATABASES;//查询数据库
show crtate database mysql(数据库名);//查询数据库的信息;

U、 (Update:):修改

ALTER DATABASE DB3(数据库名) CHARACTER SET UTF8(字符集); //设置字符集

D、(Delete):删除

 DROP DATABASE DB3(数据库名称);//删除数据库k
 DROP DATABASE IF EXISTS DB3;//如果存在就删除不存在不报错

使用数据库:

use db1(数据库名);//使用数据库
select database();查询当前正在使用的数据库;

表的创建
C、Create 创建
SQL常见数据类型:
在这里插入图片描述在这里插入图片描述

CREATE TABLE student(列名(字段)1 数据类型,列名2(字段) 数据类型,列名3 数据类型,....);//创建表
CREATE TABLE 新表名字  LIKE 被赋值的表名;  //复制表

R、Retrieve :查询

SHOW TABLES;;//查询表
DESC TABLENAME(表名);//查询表的结构

U、 (Update:):修改

ALTER TABLE 表名  RENAME TO 新的表名;//修改表名	
ALTER TABLE 表名 CHRARCTER SET UTF8;//修改字符集
ALTER TABLE 表名 ADD 列名 数据类型;//添加字段
ALTER TABLE 表名 CHANGE 需要修改的字段名  新的字段名 新的数据类型;//修改字段名和类型
ALTER TABLE 表名 MODIFY 字段名  新类型;//修改字段的类型
ALTER TABLE 表明 DROP 字段名//删除字段

D、(Delete):删除

DROP TABLE TABLENAME;

二、DML(数据操作)


添加数据

除了数字类型 其他类型需要引号;
insert into 表名(列名1,列明2,.......列N) values(值1,值2,.......值N)//给表的字段添加数据,这种写法需要前后对应
insert into 表名values(值1,值2,.......值N);//给表的字段添加数据,简化的书写

删除数据

DELETE FROM stu(表名) WHERE id=1;  //删除 id=1的数据,如果不加条件则删除所有记录
TRUNCATE TABLE stu();//删除数据表再创建同名的数据表(效率比较高)

修改数据

如果不加条件则会将表中所有记录全部修改;

UPDATE 表名 SET 列名1 = 值1,列明2=值2,.... WHERE id=1;//更改字段的值,不加where条件判断的话会更改所有

三、3、DQL(数据查询)

查询
1、查询语法:
select 字段列表
from 表明列表
where 条件列表
group by分组字段
having 分组之后的条件
order by 排序
limit 分页限定

基础查询

//创建一个表 
CREATE TABLE student3 (
 id int, -- 编号
 name varchar(20), -- 姓名
 age int, -- 年龄
 sex varchar(5), -- 性别
 address varchar(100), -- 地址
 math int, -- 数学
 english int -- 英语
);
INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES (1,'马云',55,'男','
杭州',66,78),(2,'马化腾',45,'女','深圳',98,87),(3,'马景涛',55,'男','香港',56,77),(4,'柳岩
',20,'女','湖南',76,65),(5,'柳青',20,'男','湖南',86,NULL),(6,'刘德华',57,'男','香港',99,99),(7,'马德',22,'女','香港',99,99),(8,'德玛西亚',18,'男','南京',56,65);

a. 多个字段的查询

SELECT * FROM 表名; // *代表查询所有
SELECT  列名1,列名2,列名3 ...FROM  表明 //select 和FROM 输入需要查询的字段名;

b. 去除重复

//查询的列表称为结果集
//查询的参数后面可以自己取别名
SELECT DISTINCT address FROM student3;//查询

c. 计算列

IFNULL(需要判断的字段,为null后替换的值);
SELECT math,english,math + english FROM student3; //计算 math + english的合(如果有null参加的运算结果为null)
SELECT math,english,math + IFNULL(english,0)FROM student3;//IFNULL()函数,第一个参数是字段名,第2个是赋值)

d. 起别名

SELECT math,english,math + IFNULL(english,0) AS 总分 FROM student3;  //给运算后的结果字段起别名,

条件查询

WHERE 子句后面跟表达式
在这里插入图片描述
在这里插入图片描述

SELECT * FROM student3 WHERE	age > 20;  ///查询表里age>20的;
SELECT * FROM student3 WHERE	age < >20;  ///查询表里不等于20的;

SELECT * FROM student3 WHERE age>20 && age<30;//查询表里大于20小于30的;
SELECT * FROM student3 WHERE age>20 AND age<30;//查询表里大于20小于30的;
SELECT * FROM student3 	WHERE age BETWEEN 20 AND 30;//查询表里大于20小于30的;


SELECT * FROM student3 WHERE age=22 OR age = 18 OR age =25; //or 查询指定数据
SELECT * FROM student3 WHERE age IN (22,18,25);	// IN()//函数指定查询;

SELECT * FROM student3 WHERE english IS NULL;//查询字段值为null的数据要使用is
SELECT * FROM student3 WHERE english IS NOT NULL;//查询不为null的数据
SELECT * FROM student3 WHERE  NAME LIKE '马%';//模糊查询  like '';%任意个字符
SELECT * FROM student3 WHERE  NAME LIKE '_化%';//模糊查询 like''; _单个任意字符

排序查询

	order by 子句;
		order by 排序字段1 排序方式,排序字段2,排序方式2....
		
SELECT * FROM  student3 ORDER BY math ASC; //默认ASC 升序
SELECT * FROM student3 ORDER BY math DESC;//降序
SELECT * FROM student3 ORDER BY math,english ASC;//如果有多个排序条件,当前面条件直一样时,才会判断第二个条件

聚合函数
将一列数据作为一个整体,进行纵向的计算;
聚合函数的计算会排除null值

conut 计算

>>SELECT COUNT(name) FROM student3;
>SELECT COUNT(IFNULL(english,0)) FROM student3;//因为null值是排除的,可以先进行判断赋值在进行计算
>一般选择非空的列(主键)进行计算; 推荐,
>SELECT COUNT(*) FROM student3;//选择所有数据进行计算,不推荐

max 计算最大值

SELECT MAX(math) FROM student3;//math字段的最大值

min 计算最小值

SELECT MIN(math) FROM student3;//math字段的最大小

sum 求和

SELECT SUM(math) FROM student3;math字段的的合

avg 计算平均值

SELECT AVG(math) FROM student3;//计算平均值;

分组查询
语法
1、gourp by 分组字段;
2、分组之后查询的字段 分组字段聚合函数(分组后的聚合函数是处理分组后的数据);

SELECT sex FROM student3 GROUP BY sex;//把字段sex分组;

SELECT sex,AVG(math) FROM student3 GROUP BY sex;//算出 男女的平均分

SELECT sex,COUNT(id) FROM student3 GROUP BY sex;//计算男女人数,

SELECT sex,COUNT(*),SUM(math) FROM student3 GROUP BY sex;//获得男女各自组的人数 和男女各自组的总成绩

//计算男女各自人数 男女各自平均分  低于70的不参加计算;
SELECT sex,AVG(math) 平均分,COUNT(id) FROM student3 WHERE math > 70 GROUP BY sex;
//对分组大于个3个数据的组进行函数计算
SELECT sex,AVG(math),COUNT(id) FROM student3 GROUP BY  sex HAVING COUNT(id) > 3;
//简写方式 使用别名判断
SELECT sex,AVG(math),COUNT(id) 人数 FROM student3 GROUP BY  sex HAVING 人数 > 3;

where 和having区别:
where 在分组之前进行限定 ,不满足条件则不参与分组;
where 不能进行聚合函数的判断;
HAVING 在分组之后进行限定,如果不满足结果,则不会被查询出来;
HAVING 可以进行聚合函数的判断;
//过滤低于N个数据的分组;

分页查询
1 limit 开始的索引,每页查询的条数;

SELECT * FROM student3 LIMIT 0,3;//第一页
SELECT * FROM student3 LIMIT 3,3;//第二页
SELECT * FROM student3 LIMIT 6,3;//第三页 3-2  * 3
公式 - 开始的索引-:(当前的页码 - 1) * 每页的条数
limit 操作是 mysql 的分页语句
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值