欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql常用语句

程序员文章站 2024-01-24 16:03:04
...

SQL语句分为三类:DDL、DML、DCL。

  • DDL:数据定义语句,是对数据库内部对象进行创建、删除、修改等操作的语言。关键字包括create、drop、alter
  • DML:数据操纵语句,用于添加、删除、更新和查询数据库记录,关键字包括insert、delete、update、select等
  • DCL:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句

一般开发人员很少接触DCL语句,本文不涉及DCL语句。
注意:示例中方括号表示可省略关键字

DDL语句

1、连接数据库

mysql -uroot -p

2、显示所有数据库

show databases;

3、创建数据库

create database test;

4、进入指定数据库

use test;

5、显示所有表

show tables;

6、创建表

create table demo (
    id int(10) not null auto_increment primary key ,
    name varchar(20) not null default 'zhangsan' comment '姓名',
    age int(10) not null default 0
);

7、显示表结构

desc demo;

8、查看创建表的sql语句

show create table demo \G;

9、修改表字段

alter table demo modify [column] name varchar(20) not null default '张三' comment '姓名';

10、添加表字段

alter table demo add location varchar(20) default '北京';

11、删除表字段

alter table demo drop [column] location;

12、修改表字段

alter table demo change [column] location address varchar(50) default '北京';

13、添加表字段并指定位置

alter table demo add birthday date default '1970-1-1' after name;

14、修改表字段并指定位置

alter table demo modify id int(10) first;

15、修改表名

alter table demo rename [to] emp;

DML增删改语句

1、插入记录
插入一条:

insert into demo values(10,'张三','男','20','1998-8-8','武汉');

指定赋值的字段插入:

insert into demo(name,age,birthday,address) values('李四','22','1996-8-8','武汉');

插入多条:

insert into demo(name,age,birthday,address) values('赵六','60','1958-8-8','上海'),('王

五','30','1988-8-8','北京');

2、修改记录
单表修改:

update demo set sex='女',address='深圳' where name='张三';

多表修改:

update demo [as] a , role [as] b set a.name=b.roleName ,b.note=b.note*a.id where a.id=b.id;

3、删除记录
单表删除:

delete from demo where name ='james';

多表删除:

delete a,b from demo [as] a,role [as] b where a.name=b.roleName and a.name='youzi';

DML查询语句

1、简单查询
(1)查询整表

select * from demo;

Mysql常用语句

(2)查询指定字段,并给字段添加别名:

select name as '姓名',sex '性别',address '地址' from demo;

Mysql常用语句

(3)查询去重复,distinct关键字

select distinct name '姓名',sex '性别',address '地址' from demo;

Mysql常用语句

2、条件查询 where

select * from demo where name='李四';
select * from demo where name='李四' and age<25;

3、查询结果排序,order by

select * from demo where sex='男' order by age ASC , salary DESC;

Mysql常用语句
语义:优先按age升序排列,年龄相同按salary降序排列。

4、查询结果限制行数,limit
(1)排序并限制只显示两行

select * from demo where sex='男' order by age ASC , salary DESC limit 2;

(2)限制从第2行起,显示两行

select * from demo where sex='男' limit 1,2;

5、聚合,group by,having

select name,sex,address '地区',count(1) '地区人数'  from demo where salary<20000 group by address having sex='男';

Mysql常用语句

having和where的区别在于where是在分组前进行筛选,having是在分组后进行筛选。

6、表连接,left/right join ,on
表连接分为内连接和外连接,内连接仅选出两张表互相匹配的记录,而外连接会选出其他不匹配的记录。外连接又分为左连接和右连接。
(1)内连接

select a.id demo_id,b.id role_id,roleName,note,sex from demo a,role b where a.name=b.roleName;

Mysql常用语句

(2)外连接

  • 左连接:包含所有左边表的记录,甚至是右边表中没有和它匹配的记录
  • 右连接:包含所有右边表的记录,甚至是左边表中没有和它匹配的记录
select demo.id,name,sex,note from demo left join role on demo.name=role.roleName;

Mysql常用语句
右连接与左连接同理
7、子查询,in ,not in,
有时进行查询的时候,需要的条件是另一个查询的结果,这个时候就要用到子查询。

select * from demo where id in(select id from role);

Mysql常用语句
8、联合查询 union all, union

select id,name from demo union all select id,roleName from role;

Mysql常用语句

select id,name from demo union select id,roleName from role;

Mysql常用语句

UNION 和 UNION ALL的主要区别就是UNION ALL会将结果集直接合并在一起,UNION是将UNION ALL的结果进行一次distinct处理。


相关标签: MySQL