SQL(结构化查询语言)

1,sql定义

SQL:Structure Query Language(结构化查询语言)

被国际化标准组织(ISO)采纳为关系型数据库语言的国际标准,也就是说所有关系型数据库都支持SQL。各个数据库厂商都支持SQL标准,但是每个数据库厂商都在标准上做了扩展。被誉为第四代开发语言,你只需要告诉他"做什么",而不必指明"怎么做"。

各个数据库厂商都支持SQL,在此基础上也都有自己的扩展功能。扩展功能是指特定的关键字及语句。

2,sql的分类 

DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库,表,列等;

DML(Data Manipulation Language):数据操作语言,用来操作(增删改)表中的记录;

DQL(Data Query Language):数据查询语言,用来查询记录;

DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;

3,sql通用语法

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

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

3,MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。

4,注释:

               单行注释:-- 注释内容 或 # 注释内容(MySQL特有)

               多行注释: /*注释内容*/

4,mysql常用sql语句

(1)常用DDL语句

查询所有数据库

SHOW DATABASES();

查询当前数据库

SELECT DATABASE();

创建数据库

CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];

删除数据库

DROP DATABASE [IF EXISTS] 数据库名;

使用数据库

USE 数据库名;

查询当前数据库所有表

SHOW TABLES;

查询表结构

DESC 表名;

查询指定表的建表语句

SHOW CREATE TABLE 表名;

创建表

CREATE TABLE 表名{

字段1 数据类型 [约束条件] [COMMENT 字段注释],

字段1 数据类型 [约束条件] [COMMENT 字段注释],

}[表注释];

删除表

DROP TABLE [IF EXISTS] 表名;

删除表再重新创建该表

TRUNCATE TABLE 表名;

添加字段

ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];

修改数据类型

ALTER TABLE 表名 字段名 新数据类型(长度);

修改字段名和字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];

删除字段

ALTER TABLE 表名 DROP 字段名;

修改表名

ALTER TABLE 表名 RENAME TO 新表名;
(2)常用DML语句

添加数据INSERT

给指定字段添加数据

INSERT INTO 表名 (字段名1,字段名2,...) VALUES(值1,值2...);

给全部字段添加数据

INSERT INTO 表名 VALUES (值1,值2,...);

批量添加数据

INSERT INTO 表名 (字段名1,字段名,...) VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...);

PS:

插入字段顺序应当与值的顺序是对应的。

字符串和日期类型的数据应该包含在单引号中。

插入的数据大小应该在字段的规定范围内。

删除数据DELETE

DELETE FROM 表名 [WHERE 条件];

更新数据UPDATE

UPDATE 表名 SET 字段名1 = 值1,字段名2 = 值2, ...[where 条件];
(3)常用DQL语句

基本语法

SELECT

        字段列表

FROM

        表名列表

WHERE

        条件列表

GROUP BY

        分组字段列表

HAVING

        分组后条件列表

ORDER BY

        排序字段列表

LIMIT

        分页参数

基本查询        

查询多个字段

        SELECT 字段1,字段2,字段3... FROM 表名;

设置别名

        SELECT 字段1 [AS 别名],字段2 [AS 别名] ... FROM 表名;

去除重复记录

        SELECT DISTINCT 字段列表 FROM 表名;

条件查询

 聚合函数

将一列数据作为一个整体,进行纵向计算。

count 统计数量

max 最大值

min 最小值

avg 平均值

sum 求和

注意null值不参与所有的聚合函数运算。

分组查询

SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];

排序查询

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;

ASC 升序 (默认);DESC 倒序;

分页查询

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;

注意:

起始索引从0开始

分页查询是数据库方言,不同 数据库有不同的实现,Mysql是LIMIT

如果查询第一页的数据,起始索引可以省略,直接简写成 LIMIT 10;

DQL语句的执行顺序

(4)常用DCL语句

查询mysql用户

USE mysql;

SELECT * FROM user;

创建用户

CREATE USER '用户名'@'主机名' identified by '密码';

主机名是控制这个用户从哪个主机才能访问数据库,任意主机都可以访问可以配置为%;

修改用户密码

ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';

删除用户

DROP USER '用户名'@'主机名';

用户权限项(这里仅包含一部分常用的权限)

ALL           所有权限

SELECT        查询权限

INSERT        插入权限

UPDATE        修改权限

DELETE        删除权限

ALTER         修改表权限

DROP          删除数据库、表、视图权限

CREATE        创建数据库、表权限

 查询当前用户的权限

SHOW GRANTS;

查询指定用户的权限

SHOW GRANTS FOR '用户名'@'主机名';

 该用户权限为USAGE,只能登录mysql,无法进行任何操作。

授予权限

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

 赋予wjl用户对于test1数据库所有表的查询权限

 

撤销权限

REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

 撤销wjl用户对test1数据库所有表的查询权限

 

 修改用户权限后需要刷新一下权限信息

 flush privileges;

 

PS:

多个权限使用逗号分割

授权时,数据库名和表名可以使用*进行通配,代表所有。

赋予wjl用户所有的表的所有权限

grant all on *.* to 'wjl'@'%';

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值