sql语句分类详解

目录

简介

关系型数据库(RDBMS)

概念

特点

SQL

概念

新手语法易错点

主要数据类型

SQL分类

DDL

库操作

1.创建数据库

2.查询所有数据库

3.查询当前数据库

4.删除数据库

5.切换其他数据库

表操作

1.创建表

2.查询当前数据库所有表

3.查看表结构

4.修改表

a.添加字段

b.修改数据类型

c.修改字段名和字段类型

d.删除字段

5.删除表

DML

添加数据

查看数据

修改数据

删除数据

DQL

基本语法

1.基本查询

a.全部查询

b.查询指定列名学生信息

c.别名自定义

d.去重

2.条件查询

3.聚合函数

4.分组查询

a.升序

b.降序

5.分页查询

编写顺序与执行顺序

DCL

管理用户

1.查询用户

2.创建用户

3.修改用户密码

权限管理

1.查询权限

2.授予权限

3.撤销权限


简介

关系型数据库(RDBMS)

概念

建立在关系模型的基础上,又多张相互有所关联的二维表组成的数据库

例如:Leetcode上的一道题中表的构成

类似于Excel表格,有表头、列、行,还可以通过一列关联到另一个表的某一列

上图为经理ID managerID又对应该表的员工ID id,表与表相互关联组成数据库

特点

1.使用表格储存数据,格式统一,便于维护,容易上手(相信大家或多或少都对Excel有所了解)

2.使用SQL语言操作,使用方便,利用Navical、DataDrip等图形化界面工具软件方便查看管理


SQL

概念

SQL全称 Structured Query Language,结构化查询语言,是操作关系型数据库的编程语言,为所有关系型数据库的统一标准。

当代主流关系型数据库管理系统(DBMS)主要为Orcale、MySQL、SQL server等等   

                 

新手语法易错点

1.SQL语句可以单行或多行书写,以分号结尾。

2.SQL语句可以使用空格/缩进来增强语句的可读性。

3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写,避免跟自定义变量混淆。

4.若在定义varchar()变量后添加文字出错,可以在定义时引进utf8编码

name varchar(255) character set utf8

5.注释:

单行注释: -- 注释内容 # 注释内容
多行注释: /* 注释内容 */
6.运行时需要单独选中需运行的SQL语句。

主要数据类型

TINYINT                             小整数值                                        1byte

SMALLINT                         大整数值                                         2byte

MEDIUMINT                      大整数值                                         3byte

INT                                     大整数值                                         4byte

FLOAT                               单精度浮点数值                              4byte

DOUBLE                            双精度浮点数值                              8byte

DECIMAL                           小数值(需传精度跟标度值)        如30.14   DECIMAL(4,2);        CHAR                               定长字符串      (性能比VARCHAR高)

VARCHAR                        变长字符串      (指定长度为最大长度)                               

DATE                                YYYY-MM-DD

SQL分类

SQL语句根据其功能不同主要分为四类:DDL、DML、DQL、DCL

DDL(Data Definition Language):数据定义语言,定义数据库、数据表,对其进行增查删改(CRUD)等操作都属于DDL语句;

DML(Data Manipulation Language):数据操作语言,对数据库中表中数据进行增删改操作;

DQL(Data Query Language):数据查询语言,对数据库中表中数据进行查操作(重点);

DCL(Data Control Language):数据控制语言,对数据库用户、有无权限等操作(用于运维,非运维了解即可)。


DDL

Data Definition Language:数据定义语言,定义数据库、数据表,对其进行增查删改

库操作
1.创建数据库
CREATE DATABASE IF NOT EXISTS Students;
If Not Exists为条件,如果不存在就创建,避免同名数据库错误
2.查询所有数据库
SHOW DATABASES ;
3.查询当前数据库
SELECT DATABASE();
4.删除数据库
DROP DATABASE Students;
5.切换其他数据库
USE mysql;
表操作
1.创建表
CREATE TABLE If Not Exists Student (
    id int,
    name varchar(10) character set utf8,
    gender char(1) character set utf8,
    birth date,
    school varchar(10) character set utf8
) comment '表不存在就创建';

comment为注释关键字,可以在定义完列名、表后注释

2.查询当前数据库所有表
SHOW TABLES ;
3.查看表结构
DESC Student;
4.修改表
a.添加字段
ALTER TABLE Student ADD type varchar(10);
b.修改数据类型
ALTER TABLE Student MODIFY type char(3);
c.修改字段名和字段类型
ALTER TABLE Student CHANGE type email varchar(20);
d.删除字段
ALTER TABLE Student DROP email;
5.删除表
DROP TABLE IF EXISTS Student;

如需保留表,清空表中数据可使用:

TRUNCATE TABLE Student;


DML

Data Manipulation Language:数据操作语言,对数据库中表中数据进行增删改操作;

添加数据
INSERT INTO 表名 ( 字段名 1, 字段名 2, ...) VALUES ( 1, 2,)
不添加字符名默认都有,推荐加入字段名以免混乱
INSERT INTO Student VALUES(1,'一号','男','2004-1-18','清华大学');
INSERT INTO Student(ID, NAME, GENDER, BIRTH, SCHOOL) VALUES (2,'二号','女','2003-4-20','北京大学');
INSERT INTO Student VALUES (3,'三号','男','2003-9-28','上海交通大学'),
                           (4,'四号','男','2005-9-20','上海交通大学'),
                           (5,'五号','男','2004-3-24','天津大学'),
                           (6,'六号','女','2003-4-10','天津大学'),
                           (7,'七号','男','2006-1-28','清华大学'),
                           (8,'八号','女','2001-10-12','天津大学'),
                           (9,'九号','女','2001-7-14','清华大学'),
                           (10,'十号','女','2005-6-21','上海交通大学'),
                           (11,'十一号','男','2006-6-6','北京大学'),
                           (12,'十二号','女','2000-2-22','上海交通大学'),
                           (13,'十三号','男','2003-3-13','北京大学'),
                           (14,'十四号','女','2004-1-24','上海交通大学'),
                           (15,'十五号','男','2003-12-20','北京大学'),
                           (16,'十六号','男','2002-9-20','天津大学')
查看数据

查看该表所有数据

SELECT * FROM Student;
修改数据
UPDATE 表名 SET 字段名 1 = 1 , 字段名 2 = 2 , .... [ WHERE 条件 ] ;
UPDATE Student SET school = '南开大学' where id = 16;
修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据
删除数据
DELETE FROM 表名 [ WHERE 条件 ] ;
DELETE FROM Student WHERE id = 16;

注意:不加条件会全部删除


DQL

Data Query Language:数据查询语言,对数据库中表中数据进行查操作

基本语法
SELECT  字段列表   FROM  表名列表  WHERE  条件列表  GROUP BY  分组字段列表  HAVING  分组后条件列表  ORDER BY  排序字段列表  LIMIT 分页参数;
1.基本查询
a.全部查询
SELECT * FROM Student;
b.查询指定列名学生信息
SELECT id,name FROM Student;
c.别名自定义
SELECT id as '编号',name as '姓名' FROM Student;

as可加可不加

d.去重
SELECT DISTINCT school FROM Student;

查询有哪些学校

2.条件查询
SELECT * FROM Student WHERE birth > '2004-3-12';

查找出生日期大于2004-3-12的学生信息

3.聚合函数

count、max、min、avg、sum

SELECT count(*) as '学生数量' FROM Student;
SELECT avg(id) FROM Student;
4.分组查询
SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组
后过滤条件 ];
where > 聚合函数 > having
对学生男女分组,计数
SELECT gender ’性别‘,count(*) '数量' FROM Student GROUP BY gender;
a.升序
SELECT * FROM Student ORDER BY birth asc ;
b.降序
SELECT * FROM Student ORDER BY birth desc ;

默认为升序,可不加asc ,降序desc可以通过查看表结构联合记忆

5.分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询记录数 ;
起始索引从0开始,起始索引= (查询页码- 1* 每页显示记录数。

查询第 1 页学生数据 , 每页展示 10 条记录
SELECT * FROM Student LIMIT 0,10;

0可以省略不写,查询第一页都可以省略

查询第2页学生数据, 每页展示10条记录

SELECT * FROM Student LIMIT 10,10;

编写顺序与执行顺序

编写顺序:SELECT   FROM   WHERE   GROUP BY   HAVING   ORDER BY   LIMT

执行顺序:FROM   WHERE  GROUP BY   HAVING    SELECT   ORDER BY   LIMT


DCL

Data Control Language:数据控制语言,对数据库用户、有无权限等操作

管理用户
1.查询用户
SELECT * FROM mysql.user;
2.创建用户

CREATE  USER  '用户名'@'主机名'  IDENTIFIED  BY'密码';

create user 'mydaroot'@'localhost' identified by '123456';
3.修改用户密码
ALTER   USER  ' 用户名 ' @ ' 主机名 '   IDENTIFIED  WITH  mysql_native_password   BY ' 新密码 ' ;
alter user 'mydaroot'@'localhost' identified with mysql_native_password by '1234';

4.删除用户

DROP   USER   ' 用户名 ' @ ' 主机名 ' ;
drop user 'mydaroot'@'localhost';
主机名可以使用 % 通配。

权限管理
1.查询权限
show grants for 'mydaroot'@'localhost';
2.授予权限
grant all on test.* to 'mydaroot'@'localhost';
3.撤销权限
revoke all on test.* from 'mydaroot'@'localhost';

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晚睡早起₍˄·͈༝·͈˄*₎◞ ̑̑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值