SQL通用语法

一、DDL(数据定义语言)

1、数据库操作

查询

查询所有数据库:SHOW DATABASES;

查询当前数据库:SELEECT DATABASE();

创建

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

删除

DROP DATABASE [IF EXISTS] 数据库名;

使用

USE 数据库名;

2、表操作

查询

查询当前数据库所有表:SHOW TABLES;

查询表结构:DESC 表名;

查询指定表的建表语句:SHOW CREATE TABLE 表名;

创建

create table 表名(

        字段1 字段1类型 [comment 字段1注释],

        字段2 字段2类型 [comment 字段2注释],

        字段3 字段3类型 [comment 字段3注释],

        ......

        字段n 字段n类型 [comment 字段n注释],

) [comment 表注释];

例如:

create table tb_user(
  id int comment '编号',
  name varchar(50) comment '姓名',
  age int comment '年龄',
  gender varchar(1) comment '性别'
);
表数据类型

 

 

 修改

添加字段:

alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];

修改数据类型:

alter table 表名 modify 字段名 新数据类型(长度);

修改字段名和字段类型:

alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];

删除字段:

alter table 表名 drop 字段名;

修改表名:

alter table 表名 rename to 新表名;

删除:

drop table [if exists] 表名; 删除表

truncat table 表名; 删除指定表,并重新创建该表


二、DML(数据操作语言)

1、添加数据

给指定字段添加数据

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

给全部字段添加数据

insert into 表名 values (值1,值2,...);

批量添加数据

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

insert into 表名 values (值1,值2,...),(值1,值2,...),(值1,值2,...);

2、修改数据

update 表名 set 字段名1 = 值1,字段名2 = 值2,.... [where 条件];

3、删除数据

delete from 表名 [where 条件];


三、DQL(数据查询语言)

执行顺序

1、基础查询

查询多个字段

select 字段1,字段2,字段3,... from 表名;

select * from 表名;

设置别名

select 字段1 [as 别名1], 字段2 [as 别名2] ... from 表名;

去除重复记录

select distinct 字段列表 from 表名;

2、条件查询

语法

select 字段列表 from 表名 where 条件列表;

条件

 例如:

查询年龄为19岁的员工:
select * from table1 where age=19 

查询名字为两个字的员工:
select * from table1 where name like '__';

查询身份证号最后一位是x的员工信息:
select * from table1 where idcard like '%X';

 3、聚合函数

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

常见聚合函数:

语法:

select 聚合函数(字段列表) from 表名;

例如:

统计员工数量:
select count(*) from table1;

统计平均年龄:
select avg(age) from table1;

统计西安地区员工的年龄之和:
select sum(age) from table1 where workadress = '西安';

4、分组查询

语法:
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];

where与having区别:

· where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果过滤。

· where不能对聚合函数进行判断,而having可以。

例如:

根据性别分组,统计男女员工的数量:
select gender,count(*) from table1 group by gender;

根据性别分组,统计男女员工的平均年龄:
select gender,avg(age) from table1 group by gender;

查询年龄小于45的员工,并根据工作地址进行分组,获取员工数量大于等于3的工作地址:
select workaddress,count(*) from table1 where age < 45 group by workaddress having count(*)>=3;

5、排序查询

语法:

select 字段列表 from 表名 order by 字段1 排序方式1 , 字段2 排序方式2;

排序方式:

asc:升序      desc:降序

例如:

根据年龄对公司员工进行升序排序:
select * from table1 order by age asc;

根据年龄对公司员工进行升序排序,年龄相同再按照入职时间进行降序排序:
select * from table1 order by age asc, entrydate desc;

6、分页查询

语法:

select 字段列表 from 表名 limit 起始索引,查询记录数;

注意:

· 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。

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

· 如果查询的是第一页数据,起始索引可以省略,直接简写为limit10。

例如:

查询第一页员工数量,每页显示10条记录:
select * from table1 limit 0,10;

查询第二页员工数据,每页显示10条记录:
select * from table1 limit 10,10;

四、DCL(数据控制语言)

1、管理用户

查询用户

use mysql;

select * from user;

创建用户

create user '用户名'@'主机名' identified by '密码';

修改用户密码

alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';

删除用户

drop user '用户名'@’主机名';

2、权限控制

查询权限

show grants for '用户名'@'主机名';

授予权限

grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';

撤销权限

revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值