mysql DDL,DQL,DML的使用(一)

前言:
1.一些mysql的存储引擎在这里插入图片描述
2.mysql的数据类型
在这里插入图片描述

数据库创建成功后使用 SELECT VERSION();查询数据库版本,select user();查询当前的用户

一.DDL语句:

定义:数据库定义语言,库表的创建、删除及字段的增删改查

创建数据库:
create database 数据库名称
删除数据库:
drop database 数据库名称
创建表:
create table 表名(字段名 字段类型)

CREATE TABLE contacts1 (
id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(20) ,
sex tinyint(4) NULL DEFAULT 1,
phone varchar(20)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

添加表字段:
alter table contacts1 add address VARCHAR(255);
修改表字段:
alter table contacts1 modify address int;
删除表字段:
alter table contacts1 drop column address;

删除表:
drop table contacts1 ;

二.DML语句

定义:数据库操作语言,对于数据的增删改

插入语句:
INSERT INTO contacts(name,sex,phone) VALUES (‘老王’, 1, ‘18700000000’);

插入单条语句方式一:INSERT INTO contacts(name,sex,phone) VALUES (1, ‘老王’, 1, ‘18700000000’);
插入单条语句方式二:INSERT INTO contact VALUES (1,‘老王’, 1, ‘18700000000’);
插入多条语句:INSERT INTO contacts1(name,sex,phone) VALUES (‘老王’, 1, ‘18700000000’),(‘老王2’, 1, ‘18700000001’);

修改语句:
update contacts1 set name=“jack”,sex=0 where id=1;
删除语句:
delete from contacts1 where id=4;

清空表:delete from contacts1;
注意清空表之后,再次插入数据的话, 对于主键自增的id来说,会从上一次最后的id值之后进行录入,使用TRUNCATE TABLE contacts1;会使计数归零,但是对于在事务中,不能回滚,谨慎使用

三.DQL语句:

定义:数据库查询语言,主要关键字:Select

1.一般查询:
查询当前表中的所有字段:
select * from contacts1 ;

查询指定的字段:
select id,name from contacts1 ;

2.条件查询:
where子句(单条件查询):

select * from contacts1 where id =1;
select * from contacts1 where id !=1; 或者: select * from contacts1 where id <> 1;
select * from contacts1 where id > 1;
注意:between…and…的使用是闭区间,如下: [1,4]
select * from contacts1 where id between 1 and 4;

在这里插入图片描述
where子句(多条件查询):
or 的使用:
select * from contacts1 where id =1 or id =5;
and的使用:
select * from contacts1 where id =1 and name =“老王”;
or和and结合使用:
select * from contacts1 where (id=1 and name=“老王”) or id=5;

四.内置函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.case when的使用:

case when的使用: SELECT id,name , CASE sex WHEN 1 THEN “男” WHEN 0 THEN “女” ELSE “不男不女” END as 性别 from contacts;

五.排序与分页

1.limit的使用,主要用于分页
limit的后面的第一个代表偏移量,也就是页码(从零开始的),第二个代表每页显示的数量
select sex ,name from contacts limit 0, 5; #查询第一页,显示1,5行
select sex ,name from contacts limit 5; #查询第一页,显示1,5行
select sex ,name from contacts limit 1, 10; #查询第二页,显示11,20行

2.分组的使用,group by常于聚合函数一起使用
select sex, count(*) from contacts group by sex;

3.having的使用:主要是where后面不能跟聚合函数,但是having可以
select sex ,count(*) from contacts group by sex having count(*)>=2;

4.group_concat的使用:将分组后的字段值进行拼接
select sex, count(*),GROUP_CONCAT(name order by name asc SEPARATOR “;”) from contacts group by sex;

在这里插入图片描述

5.distinct的使用:用来过滤整行的重复数据
select distinct name,sex from contacts1;

6.自连接,用于当前表中有层次结构的,例如省和省份都在一张表中
示例如下:

对于如下表:
在这里插入图片描述
select p1.name 省份,p2.name 城市名称 from province p1,province p2 where p1.id=p2.label_id
在这里插入图片描述

六.子查询in和exists

1.IN的使用:用于前表数据量大,而次表数据量小的情况
select p1.name from province p1 where p1.id in (select p2.label_id from province p2);

还有not in则表示的与之相反

2.exists的使用:用于前表数据量小,而次表数据量大的情况
select p1.name from province p1 where exists(select p2.label_id from province p2 where p2.label_id=p1.id);

还有not exists则表示的与之相反

猜你喜欢

转载自blog.csdn.net/qq_43534980/article/details/112426233