300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > SQL四大基础操作语言DDL DCL DQL DML

SQL四大基础操作语言DDL DCL DQL DML

时间:2024-02-03 20:42:57

相关推荐

SQL四大基础操作语言DDL DCL DQL DML

1.定义

1.DDL data definition language 数据定义语言,用以定义数据库对象(数据库,表,字段)

2.DML data manipilation language 数据操作语言,用来对数据库表中的对象进行增删改

3.DQL data query language 数据查询语言,用来查询数据库表中的记录

4.DCL data control language 数据控制语言,用来创建数据库用户,控制访问权限

2.启动方式

在运行输入 services.msc

net start mysql80 启动

net stop mysql80 停止

3.客户端链接

方式一:打开MySQL 8.0 Command Line Client - Unicode

方式二:mysql [-h 127.0.0.1] [-P 3306] -u root -p

-h : MySQL服务所在的主机IP

-P : MySQL服务端口号, 默认3306

-u : MySQL数据库用户名

-p : MySQL数据库用户名对应的密码

4.SQL通用语法

sql 语句可以单行或多行书写,以分号结尾

sql语句可以使用空格或者缩进来增强语句的可读性

MYSQL数据库的SQL语句不区分大小写,关键字建议大写

注释: 单行注释: --或者# 多行注释: /* */

DDL(data definition language) (数据定义语言)

作用:用以定义数据库对象(数据库,表,字段)

1.查询操作

2.表操作

例如:

REATE TABLE 表名( 字段1 字段1类型 [ COMMENT 字段1注释 ], 字段2 字段2类型 [COMMENT 字段2注释 ], 字段3 字段3类型 [COMMENT 字段3注释 ],...... 字段n 字段n类型 [COMMENT 字段n注释 ] ) [ COMMENT 表注释 ] ;

例如:

create table tb_user( id int comment '编号', name varchar(50) comment '姓名', age int comment '年龄', gender varchar(1) comment '性别' ) comment '用户表';

3.数值类型

MySQL中的数据类型有很多,主要分为三类:

数值类型、

字符串类型、

日期时间类型。

3.1数值类型

3.2字符串类型

char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性能会更高些。

案列

1). 用户名 username ------> 长度不定, 最长不会超过50username varchar(50) 2). 性别 gender ---------> 存储值, 不是男,就是女 gender char(1) 3). 手机号 phone --------> 固定长度为11 phone char(11)

3.3日期类型

案例:

1). 生日字段 birthday birthday date 2). 创建时间 createtime createtime datetime

DML(data anipulation language)(数据操作语言)

作用:用对数据库表中的数据记录进行增删改操作

一,添加数据:insert into

1.给指定字段添加数据

ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];

案列为emp表增加一个新的字段”昵称”为nickname,类型为varchar(20)

ALTER TABLE emp ADD nickname varchar(20) COMMENT '昵称';

2.给全部字段添加数据

INSERT INTO 表名 VALUES (值1, 值2, ...);

3.批量添加数据

INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值 1, 值2, ...) ;

INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...) ;

注意:

插入数据时,指定的字段顺序需要与值的顺序是一一对应的。

字符串的和日期型数据应该包含在引号中。

插入的数据大小,应该在字段的规定范围内。

二,修改数据:updata ... set

1.语法:

UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [ WHERE 条件 ] ;

注意:

修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据;

案列:

修改id为1的数据,将name修改为itheima

update employee set name = 'itheima' where id = 1;

1 修改id为1的数据, 将name修改为小昭, gender修改为 女

update employee set name = '小昭' , gender = '女' where id = 1;

1 将所有的员工入职日期修改为 -01-01

update employee set entrydate = '-01-01';

三,删除数据:delete from

1.语法

DELETE FROM 表名 [ WHERE 条件 ] ;

注意:

delete语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据

delete语句不能删除某一个字段的值(可以使用update)

案例

#添加数据insert into employee(id, work_number, name, gender, age, entry_date) values(1,'1','你好','男',18,'2002-02-02')select * from employee; #展示表格insert into employee values(2,22,'小李','女',36,'-5-1')#添加多行数据insert into employee values (2,22,'芜湖','女',36,'-5-1'),(3,32,'嘿嘿','女',36,'-5-1');#修改数据update employee set name='黑马' where id = 1; #将id=1的名字修改为黑马update employee set name='嘻嘻' where id = 3;update employee set name ='小赵' ,gender = '女' where id ='1'#无条件,修改所有的数据update employee set entry_date = '-5-9';update employee set gender = '男' where id=2;#删除为女的列delete from employee where gender='女';select * from employee;#删除所有数据delete from employee;

DQL(data query language)(数据查询语言)

DQL 语法

select 字段列表

from 表明列表 基本查询

where 条件列表 条件查询

group by 分段后条件列表 分组查询

having 分段后条件列表 聚合函数(count,max,min,average,sum)

opder by 排序字段列表 排序查询

limit 分页参数 分页查询

一,基本查询

1.查询多个字段

SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;

SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;

注意:

*号代表查询所有字段,在实际开发中尽量少用(不直观,影响效率)

2.设置别名

SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;

SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名; 1

注意:

as可以省略

3.去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;

案列

create table emp(id int comment '编号',workno varchar(10) comment '工号',name varchar(10) comment '姓名',gender char(1) comment '性别',age tinyint unsigned comment '年龄',workdress varchar(50) comment '工作地点',entry_date date comment '入职日期')comment '员工表';insert into emp (id, workno, name, gender, age, workdress, entry_date)values (1,'1','小王','男','18','郑州','-5-1'),(2,'2','小利','女','19','新乡','-5-1'),(3,'4','小方','男','13','郑州','2030-5-1'),(4,'4','小狗','男','17','郑州','-5-1'),(5,'5','小媛','女','15','新乡','-5-1'),(6,'6','小艾','女','13','新乡','-5-1');select * from emp;#查询指定字段select name,workno,workdress from emp;#查询所有字段select * from emp;select id, workno, name, gender, age, workdress, entry_date from emp; #上下效果等同,但建议用下面的,下面的更直观#查询所有远东的工作地址,起别名select workdress as '工作地址' from emp; #as起别名,as也可以省#查询公司员工的工作地址 (去掉重复)select distinct workdress '工作地址' from emp;

二,条件查询

1.语法

SELECT 字段列表 FROM 表名 WHERE 条件列表 ;

2.条件

escape: select * from score where name like "/雄" escape "/"; escape"/" 表示/后面的不再是通配符,只是代表符号_.

案列

insert into emp (id, workno, name, gender, age, workdress, entry_date)values (7,'7','湫','男',null,'上海','-8-9');#条件查询# 1.查询年龄等于18的员工select * from emp where age = 18;# 2.查询年龄小于15的员工select * from emp where age<15;# 3.查询年龄小于等于15的员工select * from emp where age<=15;# 4,查询没有年龄的员工select * from emp where age is null;# 5查询有年龄的员工select * from emp where age is not null ;# 6查询性别为女且年龄小于15的员工信息select * from emp where age<15&&gender='女';# 7查询年龄等于18或19或17的员工信息select * from emp where age=17||emp.age=19||emp.age = 18;select * from emp where age in (17,18,19);# 8.查询姓名为一个字的员工select * from emp where name like '_'; #_表示单个字符 %表示无数个字符# 9.查询年龄在15(包含)到18(包含)之间的员工信息select * from emp where age between 15 and 18;select * from emp where age>=15 and age<=18;# 10查询年龄最后以为是7的员工信息select * from emp where age like '%7';select * from emp where age like '_7';

三,聚合函数

1.介绍

将一列数据作为一个整体,进行纵向运算

2.常见聚合函数

3.语法

SELECT 聚合函数(字段列表) FROM 表名 ;

案列

# 聚合函数# 1.统计该企业的员工数量select count(*) from emp;select count(id) from emp; #如果有null值,null值不参与计算# 2.统计员工的平均年龄select avg(age) from emp;# 3.统计企业员工的最大年龄select max(age) from emp;# 4.统计员工的最小年龄select min(age) from emp;#统计新乡地区的员工年龄之和select sum(age) from emp where workdress= '新乡';

四,分组查询

1.语法

SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组 后过滤条件 ]; 1

2.where 和having的区别

执行时机不同:where是分组之前进行,不满足where条件,不参与分组,二having是分组之后对结果进行过滤

判断条件不同:where不能对聚合函数进行判断,而having可以

注意:

执行顺序:where > 聚合函数 having

分组之后:

案列

#分组查询# 1.根据性别分组,分别统计男女员工的数量select gender, count(*) from emp group by gender;# 2.根据性别分组,分别统计男女员工的年龄select gender ,avg(age) from emp group by gender;# 3.查询年龄小于18的员工,并根据工作地址分组,获取员工数量大于等于二的工作地点select workdress,count(*) address_count from emp where age<18 group by workdress having count(*)>=2

五,排序查询

1.语法

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;

2.排序方式

ASC:升序(默认值)

DESC:降序

注意:

如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

案例

# 排序查询# 1.根据年龄队公司的员工进行升序排序select * from emp order by age asc;select * from emp order by age desc;# 2.根据入职时间对员工进降序排序,入职时间相同,则按照年龄进行升序排序select * from emp order by entry_date desc ,age asc;

六,分页查询

1.语法

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;

注意:

起始索引从0开始,起始索引 = (查询页码-1)* 每页显示记录数

分页查询是数据库的方言,不同的数据库有不同的实现,MySQL是limit

如果查询的是第一页的数据,起始索引可以省略,直接简写成 limit 10 (返回第一页的十条数据)

案列

#分页查询# 1.查询第一页的员工数据,每页显示十条数据select * from emp limit 0,10;select * from emp limit 10;# 2查询第二页的员工数据,每页展示10条记录select * from emp limit1,10;

FINALLY总结:

DQL执行顺序:

from>where>group up> having>select>order by>limit

DQL编写顺序:

select>from>where>group by>having >order by>limit

as起别名

DCL(data control language)(数据控制语言)

作用:用来管理数据库用户,控制数据库访问权限

一,管理用户

1,查询用户

use mysql;select from user;

2.创建用户

create user '用户名'@'主机名' identified by '密码'

3.修改用户密码

ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ;

4.删除用户

DROP USER '用户名'@'主机名' ;

案列:

# 创建用户itcast,只能在当前主机localhost访问,密码123456create user 'itcast'@'localhost' identified by'123456';#可在mysql数据库的user表中查看# 创建用户heima可以在任意主机访问数据库,密码123456create user 'heima'@'%' identified by'123456';# 修改用户heima的访问密码为1234;alter user 'heima'@'%' identified with mysql_native_password by '1234';# 删除itcast@localhost用户drop user 'itcast'@'localhost';drop user 'heima'@'%';

注意:

主机名可以使用%统配(%表示任意主机都可以访问该mysql服务器)

这类SQL开发人员操作的比较少,主要是DBA(database administrator 数据库管理员)使用

二权限控制

1.查询权限

show grants

2.授权权限

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'; //如果在后面加上with check option 则被授权的用户,不能将自己的权限再授予他人。

3.撤销权限

REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

案列

create user 'hehe'@'%'; #也可以不设置密码# 查询权限show grants for 'hehe'@'%';#授予权限grant all on emp.* to 'hehe'@'%';# 撤销权限revoke all on emp.* from 'hehe'@'%';

注意

多个权限之间,使用逗号分割;

授权时,数据库名和表名可使用 * 进行统配,代表所有;

创造角色

1)创造角色

格式 create role <角色名>

2)给角色授权

grant<权限>[权限]...

on 对象类型 对象名

to 角色1,角色2...

3)讲一个角色授予其他的角色或用户

grant 角色1,角色2...

to 角色3,用户1 ...

with admin option //此句可不加,加上以后则说明某种权限的角色或用户还可以把这种权限再授予其他用户。

4)角色权限的收回

revoke 权限...

on 对象类型 对象名称

from 角色1,角色2...

5)角色的作用

数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。因此,可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。