前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL常用语句

MySQL常用语句

作者头像
一点博客
发布2019-07-24 11:46:29
7450
发布2019-07-24 11:46:29
举报
文章被收录于专栏:一点博客一点博客

DDL操作数据库、表 1. 操作数据库:CRUD 创建(Create) 创建数据库:

代码语言:javascript
复制
create database 数据库名称;

创建数据库,判断不存在,再创建

代码语言:javascript
复制
create database if not exists 数据库名称;

创建数据库并指定字符集为gbk

代码语言:javascript
复制
create dadabase 数据库名称 character set gbk;

例如: 创建数据库db4,判断是否存在,并指定字符集为gbk

代码语言:javascript
复制
create database db4 if not exists character set gbk;

查询(Retrieve) 查询所有数据库的名称:

代码语言:javascript
复制
show databases;

查询某个数据库的创建语句:

代码语言:javascript
复制
show create dadabase 数据库名称;

修改(update) 修改数据库的字符集

代码语言:javascript
复制
alter database 数据库名称 character set 字符集名称
   

删除(delete) 删除数据库

代码语言:javascript
复制
delete database 数据库名称;

判断数据存在,存在则删除

代码语言:javascript
复制
delete database if exists  数据库名称;

使用数据库: 查询当前正在使用的数据名称:

代码语言:javascript
复制
show database();

使用数据库:

代码语言:javascript
复制
use 数据库名称;

2.操作表 创建(create) 创建表:

代码语言:javascript
复制
create table 表名(
        列名 数据类型,
        列名 数据类型
        );

复制表:

代码语言:javascript
复制
create table 表名 like 被复制的表名;

查询(Retrieve) 查询某个数据库中所有的表名称

代码语言:javascript
复制
show tables;

查询表结构

代码语言:javascript
复制
desc 表名;

修改(update) 修改表名

代码语言:javascript
复制
alter table 表名 rename to 新的表名;

修改表的字符集

代码语言:javascript
复制
alter table 表名 character set 字符集名称;

添加一列

代码语言:javascript
复制
alter table 表名 add 列名 数据类型;

修改列名称、类型

代码语言:javascript
复制
alter table 表名 chanage 列名 新列名 新数据类型;
alter table 表名 modify 列名 新数据类型;

删除列

代码语言:javascript
复制
alter table 表名 drop 列名;

删除(delete)

代码语言:javascript
复制
drop table 表名;
drop table if exists 表名;

DML:增删改表中的数据 添加数据:

代码语言:javascript
复制
insert into 表名(列名1,列名2,列名3) values(值1,值2,值3);

删除数据:

代码语言:javascript
复制
delete from 表名 where [条件]

注:【如果不加条件则删除表中所有记录,如果要删除所有记录, delete from 表名----不推荐使用。有多少条记录就会执行多少次删除操作。 TRUNCATE table 表名----推荐使用。效率更高,先删除表,然后在创建一张一样的表。 】

修改数据:

代码语言:javascript
复制
update 表名 set 列名1 = 值1,列名2 = 值2[where 条件]

注意:如果不加任何条件,则修改表中所有记录;

DQL:查询表中的记录

代码语言:javascript
复制
select * from 表名;

多个字段查询:

代码语言:javascript
复制
select 字段1,字段2 from 表名;

去除重复:

代码语言:javascript
复制
select distinct  字段.. from 表名;

条件查询

代码语言:javascript
复制
-- 查询年龄大于20岁

                SELECT * FROM student WHERE age > 20;
                
                SELECT * FROM student WHERE age >= 20;
                
                -- 查询年龄等于20岁
                SELECT * FROM student WHERE age = 20;
                
                -- 查询年龄不等于20岁
                SELECT * FROM student WHERE age != 20;
                SELECT * FROM student WHERE age <> 20;
                
                -- 查询年龄大于等于20 小于等于30
                
                SELECT * FROM student WHERE age >= 20 &&  age <=30;
                SELECT * FROM student WHERE age >= 20 AND  age <=30;
                SELECT * FROM student WHERE age BETWEEN 20 AND 30;
                
                -- 查询年龄22岁,18岁,25岁的信息
                SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
                SELECT * FROM student WHERE age IN (22,18,25);
                
                -- 查询英语成绩为null
                SELECT * FROM student WHERE english = NULL; -- 不对的。null值不能使用 = (!=) 判断
                
                SELECT * FROM student WHERE english IS NULL;
                
                -- 查询英语成绩不为null
                SELECT * FROM student WHERE english  IS NOT NULL;
    


                -- 查询姓马的有哪些?like
                SELECT * FROM student WHERE NAME LIKE '马%';
                -- 查询姓名第二个字是化的人
                
                SELECT * FROM student WHERE NAME LIKE "_化%";
                
                -- 查询姓名是3个字的人
                SELECT * FROM student WHERE NAME LIKE '___';
                
                
                -- 查询姓名中包含德的人
                SELECT * FROM student WHERE NAME LIKE '%德%';

排序查询 语法:order by 子句 * order by 排序字段1 排序方式1 , 排序字段2 排序方式2… 排序方式: * ASC:升序,默认的。 * DESC:降序。 注意: * 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。 聚合函数:将一列数据作为一个整体,进行纵向的计算。 1. count:计算个数 1. 一般选择非空的列:主键 2. count(*) 2. max:计算最大值 3. min:计算最小值 4. sum:计算和 5. avg:计算平均值 注意:聚合函数的计算,排除null值。 解决方案: 1. 选择不包含非空的列进行计算 2. IFNULL函数 分组查询: 1. 语法:group by 分组字段; 2. 注意: 1. 分组之后查询的字段:分组字段、聚合函数 2. where 和 having 的区别? 1. where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来 2. where 后不可以跟聚合函数,having可以进行聚合函数的判断。

代码语言:javascript
复制
-- 按照性别分组。分别查询男、女同学的平均分

         SELECT sex , AVG(math) FROM student GROUP BY sex;
         
         -- 按照性别分组。分别查询男、女同学的平均分,人数
         
         SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;
         
         --  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组
         SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;
         
         --  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
         SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
         
         SELECT sex , AVG(math),COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;

分页查询 语法:limit 开始的索引,每页查询的条数; 公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数 – 每页显示3条记录

代码语言:javascript
复制
 SELECT * FROM student LIMIT 0,3; – 第1页

            SELECT * FROM student LIMIT 3,3; – 第2页

            SELECT * FROM student LIMIT 6,3; – 第3页

limit 是一个MySQL"方言" 约束 创建表时添加非空约束

代码语言:javascript
复制
create table stu(id int not null    - -  id为非空
);

创建表完后,添加非空约束

代码语言:javascript
复制
alter table stu modify name varchar(20) not null;

删除name的非空约束

代码语言:javascript
复制
alter table stu modify name varchar(20);

创建表时添加唯一约束

代码语言:javascript
复制
create table stu (id int not null,
    name varchar(255) unique;
);

创建表后添加唯一约束

代码语言:javascript
复制
alter table stu modify name varchar(20) unique;

主键约束

代码语言:javascript
复制
create table stu(
    id int not null primary key;
);

删除主键

代码语言:javascript
复制
alter table stu drop primary key;

创建完表后添加主键

代码语言:javascript
复制
alter table stu modify id  int primary key;

自动增长

代码语言:javascript
复制
create table stu (
    id int not null auto_increment primary key;
);

删除自动增长

代码语言:javascript
复制
alter table stu modify  id in;

创建表后添加自动增长

代码语言:javascript
复制
alter table stu modify id int auto_increment;

外键约束 --创建表时,添加外键约束

代码语言:javascript
复制
create table stu(
    id int not null,
    ...
    外键列
    constraint 外键名称 foreign key (外键列名称)
);

删除外键

代码语言:javascript
复制
alter table 表名 drop foreign key 外键名称;

创建表后添加外键

代码语言:javascript
复制
alter table 表名 add constraint 外键名称 foreign (外键字段名称) reference  主表名称(主表列名称);

级联操作

代码语言:javascript
复制
alter table 表名 add constraint 外键名称 foreign key(外键名称)  reference 主表名称(主表列名称) on update cascade on  delete cascade;

级联更新:

代码语言:javascript
复制
on update cascade;

级联删除:

代码语言:javascript
复制
on delete cascade;

数据库的备份和还原 备份:

代码语言:javascript
复制
mysqldump -u 用户名    -p密码  数据库名称>保存的路径

还原

代码语言:javascript
复制
source  文件路径

作者:一点博客 来源:CSDN 原文:https://blog.csdn.net/qq_37740841/article/details/94177295

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一点博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档