您的位置:首页 > 数据库 > MySQL

MySQL中的DDL、DML、DCL、DQL

2017-07-19 23:39 495 查看
SQL分类:

DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;

DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);

DCL(Data Control Language): 数据控制语言,用来定义访问权限和安全级别;

DQL(Data Query Language): 数据查询语言,用来查询记录(数据);

注意:sql语句以;结尾

DDL:关键字:CREATE 、ALTER、DROP

1.对数据库操作:

创建

create database mydb;创建数据库

create database mydb character set utf8; 创建数据库并设置编码为utf-8;

create database mydb character set gbk collate gbk_chinese_ci  创建数据库,并设置编码为gbk,增加校验

删除

drop database mydb; 删除数据库

修改

alter database mydb character set utf8;  修改数据库编码为utf-8;

查询

show databases; 查看所有数据库

show create database mydb; 查看创建mydb数据库的定义信息

other:

sselect database(); 查看当前使用数据库

use mydb; 使用mydb数据库

2. 对数据表操作:

create table  myemp(id int,name varchar(50));创建数据库表

show tables; 当前数据库中的所有表

desc myemp; 查看表的字段信息

alter table myemp add image blob; 在表中增加一个image列,数据类型是blob:字节

alter table myemp modify job varchar(60); 修改job列的数据类型为varchar(60) ;

alter table myemp change name username varchar(100); 修改列名name为username,必须带数据类型;

alter table myemp drop image; 删除image列,一次只能删除一列;

alter table myemp character set utf8; 修改表的字符集为utf-8;

rename table myemp to youremp; 修改表名;

show create table myemp;  查看表格的创建细节

drop table myemp; 删除表;

DML操作: 对表中的数据进行增删改操作;

关键字  insert  、 update、 delete

insert into myemp(...) values(...);

update myemp set username = 'adb' where id=2;

delete from myemp where ....

在mysql中,字符串类型和日期类型都要用单引号括起来。

小知识:查看数据库编码具体信息: show variables like 'character%'; 

临时更改客户端和服务器结果集的编码

set character_set_client=gbk;

set character_set_results=gbk;

delete from myemp; 删除表中记录,表结构还在,删除后数据可以找回(日志会记录)

truncate table myemp;  删除是把表直接droop掉,然后在创建一个同样的新表。删除的数据不能找回,执行速度比delete快。

DQL操作 : 数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。

模糊查询 like    通配符: _任意一个字母   % 任意0-n个字母。

select distinct sal from emp;  去除sal重复的记录。

select distinct sal,comm from emp;  去除sal和comm都重复的记录。

asc 升序 默认的    desc降序

select * from emp order by sal desc, empno asc; 按月薪降序排列,月薪相同时,按编号升序排列。

count : 统计指定列不为null的记录行数;

sum(), avg() 如果指定列类型不是数值类型,计算结果为0;

select count(comm),count(mgr) from emp; 查询有佣金的人数,查询有领导的人数

ifnull(..,0)  为空的话置为0;

select sum(sal+ifnull(comm,0)) from emp; 查询所有雇员月薪和佣金和;

注意: having和where 的区别:

1.having是在分组后对数据进行过滤

   where 是在分组前对数据进行过滤

2.having后面可以使用分组函数(统计函数)

    where 后面不可用使用分组函数

where 是对分组前记录的条件,如果某行记录没有满足where字句的条件,那么这行记录不会参加分组,而having是对分组后数据的约束。

limit : 用来限定查询结果的起始行,以及总行数。

select * from emp limit 0,5;  查询5行记录。  注意: 起始行从0开始,即第一行;

重点:  查询语句书写顺序: select  -  from  -  where  -  group by  --  having  --  ordre by --  limit;

查询语句执行顺序: from -  where -- group by -- having -- select  -- order by -- lilmit;

约束与多表::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 数据库 数据 sql