当前位置:首页 > 程序 > 正文

MySQL数据库详解:增删改查之DDL、DML和DQL

2019-09-17 10:33 点击:2次 作者:biucz 我来投稿

MySQL数据库详解:增删改查之DDL、DML和DQL

增删改查之DDL、DML和DQL?

DDL:数据定义语言

关于DDL语句我觉得也就是 【create 库/表 名字(表有后续)】,【alter 库/表 你要的操作 对象 】

创建数据库: create database 你要创建的数据库名字 character set 字符集;

修改数据库:alter database 数据库名字 character set 字符集;查看数据库:show databases;

删除数据库:drop database 数据库名;

创建表:create table 表名 (

字段1名 数据类型 是否主键 是否默认,或者不为空 ,

字段2名 数据类型 是否主键 是否默认,或者不为空 ,

............

字段N名 数据类型 是否主键 是否默认,或者不为空

); # 注意字段N结束时没有 “ , ”

删除表:drop table 你要删除的表名;

修改表名:alter table 你要改的表名 to 新表名;

查看表:show tables;

查看表的字段信息:desc 表名;

添加一个字段:alter table 你要改的表 add 字段名 数据类型;

删除一个字段:alter table 你要改的表 drop 你要删的字段名;

删除表:drop table 你要删除的表名;

删除一条记录:delete from 表名 where 字段=值;

DML:数据操作语言

查询表中所有数据:select*from 你要查的表;

插入表中数据:

单个插入

insert into 你要插入的表名 (字段4,字段5,... ,字段N) value (值4,值5,... ,值N);(只要字段写出来可以就可以对应插入值可以不从第一个字段开始)

insert into 你要插入的表名 value(值1,值2,... ,值N);(必须与表中字段一一对应)批量插入

insert into 你要插入的表名 (字段1,字段2,...,字段N) values (值01,值02,...,值0N),( 值11,值12,...,值2N),...,(值N1,值N2,...,值NN);

(只要字段写出来可以就可以对应插入值可以不从第一个字段开始)

insert into 你要插入的表 value (值01,值02,...,值0N),( 值11,值12,...,值2N),...,(值N1,值N2,...,值NN);(必须与表中字段一一对应)

更新操作

update 表名 set 要更新的列名M=要更新的列值M;(把这一列M,列值全改为列值M)

update 你要更新的表名 set 字段n=变值, 字段m=变值 where 不变的字段= 不变的值;update 表名 set 列名M=要更新的列值M(可以再原值基础上操作加减乘除) where 不更新的列名

M'='不更新的字符M'列的值';

删除操作

delete from 表名 where 要删除的列名=要删除的那个值;

delete from 表名;(删除整张表)

truncate table 表名;(删除整张表)

delete与truncate的区别

delete删除表中的数据,表结构还在;

truncate删除是把表直接drop掉,然后在创建一个同样的新表。执行速度比delete快。

有主键的时候truncate(删表)的删除后的数据表序列会从新开始,delete(删值)是接着加。

DQL数据查询语言

MySQL数据库详解:增删改查之DDL、DML和DQL

条件查询(注意值为字符需用 ‘ 值 ’ ,值为数字直接用值 )

条件查询运算符及关键字

= > < != <>(也是不等于) + - * / and or not is null(为空)is

notnull(不为空) betwenn ....and (值在什么范围) in

使用

在表中查询字段1为值1,并且字段为值2的记录。

select*from 表名 where 字段1=值1 and 字段2=值2;

查询字段1为值1或者字段2为值2的记录

select*from 表名 where在 字段1=值 1or 字段2=值2;

查询值在M到N之间的记录

select*from 表名 where 查询值 between 值1 and 值2;

select*from 表名 where 查询值 in(你n,....,m);

select*from 表名 where 查询值>=N and 查询值<=M;

查询P为空

select*from 表名 where P is null;

查询P不为空

select*from 表名 where P is not null;

查询P非m的记录

select*from 表名 where P!=m;

?模糊查询

根据指定的关键字进行查询,使用like关键字后跟通配符

通配符: _ (代表任意一个字符) %(代表0....N个字符)

#####(为了方便表述,以下用到的字段name 是我自己表中字段,如需引用请结合你自己实际)

#####

查询有姓名有五个字符构成的记录

select*from 表名 where name like '____';(五个_)

查询姓名有3个字符构成并且第三个为q的记录

select*from 表名 where name like ‘__q’;

查询姓名以m开头的学生记录

select*from 表名 where name like ‘m%’;

查询姓名第二个为m的记录

select*from 表名 where name like ‘_m%’;

查询表中姓名含有M的记录

select*from 表名 where name like ‘%m%’;

字段控制查询(此处列名就是字段。。。我懒了)

在表中查询列名下的内容

select 列名 from 表名;

在表中查询列名下的内容(去重)

select distinct 列名 from 表名;

在表中查询列名下的内容(多查询)

select 列名1,列名2 from 表名;

在表中查询列名下的内容 (可运算)

select 列名1,列名2, 列名1+列名2 from 表名;(列名1+列名2的值相加)

在表中查询列名下的内容 (可判断)

select 列名1,列名2,if null( 列名1,0)+列名2 from 表名;

(列名1如果为null,则显示0)

在表中查询列名下的内容 (可更改)

select 列名1,列名2,if null( 列名1,0)+列名2 as 新命名 from 表名;

(列名1+列名2 给其命名)

在表中查询列名下的内容 (可更改)

select 列名1 as 新命名,列名2 新命名,if null( 列名1,0)+ 列名2 as 新命名 from 表名;

(列名1 给其命名 其中as可省略,如列2)

推荐阅读:

MySQL数据库详解:什么是数据库?

MySQL数据库详解:mysql的专业术语

MySQL数据库详解:增删改查之DDL、DML和DQL

MySQL数据库详解:聚合函数的使用示例

MySQL数据库详解:多表联查之合并结果集

MySQL数据库详解:多表操作之连接查询

MySQL数据库详解:子查询(升级超强版多表查询)