Mysql分类(DDL,DML,DQL,DCL)及相关语句操作

SQL分类

1)DDL(Data Definition Language)数据库定义语言【操作数据库和表的】
用来定义数据库对象:数据库,表,列等。
关键字:create,delete,update 等

2)DML(Data Manipulation Language)数据操作语言【操作表中数据】
用来对数据库中表的数据进行增删改。
关键字:insert,delete,update 等

3)DQL(Data Query Language)数据查询语言【查询表中数据】
用来查询数据库中表的记录(数据)
关键字: select,where等

4)DCL(Data control Language)数据控制语言【管理用户】
用来定义数据库的访问权限安全级别,及创建用户。
关键字:GRANT,REVOKE 等

1.DDL(Data Definition Language)数据库定义语言

操作数据库CRUD

1.C(create):创建
	
		*创建数据库
			*create database 数据库名字
		
		*事先进行判断要创建的数据库是否存在
			*create database if not exists dbq;
		
		*手动设置字符集
			*cteate database db2 character set gbk;
			
			
	2.R(Retrieve):查询
	
		*查询所有数据库的名称:
			*show databases*查看某个数据库的字符集:查询某个数据库的创建语句
			*show create database 数据库名称
			
		
	3.U(update):修改
		*修改数据库的字符集
			*alter database 数据库名称 character set 字符集名称;
	
	
	
	4.D(delete):删除
		*删除数据库
			*drop database 数据库名称;
			
		*判断数据库是否存在,存在在删除
		drop database if exists 数据库名称;
	
	
	5,使用数据库
		*查询当前正在使用的数据库名称
			*Select database();
		*使用数据库
			*use 数据库名称

操作表

1.C(create):创建
		1.语法:create table 表名(
			列名1 数据类型1,
			列名2 数据类型2.....
			列名n 数据类型n
		);
		*注意:最后一列,不需要加逗号(,)
		
		*数据类型:
			1.int:整数类型
			2.double:小数类型
			3.date:日期,只包含年月日
			4.datetime:日期,包含年月日,时分秒
			5timestamp;时间戳类型,包含年月日时分秒
				*如果不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,
					来自动赋值
			6.varchar:字符串
		
		*复制表
			create table stu like student;
		
	2.R(Retrieve):查询
		*查询某个数据库中所有的表名称;
			*show tables*查询表结构
			*desc 表名
	
	3.U(update):修改
		1.修改表名: 
			alter table 表名 rename to 新的表名
		
		2.修改表的字符集:
			alter table 表名 character set 字符集名称
		
		3.添加一列
			alter table 表名 add 列名 数据类型;
		
		4.修改列名称 类型
			alter table 表名 change 列名 新列名 新数据类型
			alter table 表名 modify 列名 新数据类型
		5.删除列
			alter table 表名 drop 列名
			
	4.D(delete):删除
		*drop table 表名;
		*drop table if exists 表名;

2.DML(Data Manipulation Language)数据操作语言


	1.添加数据
		*insert into 表名(列名1,列名2...列名n)values(值1,值2....,值n);
	
	2.删除数据
		*delete from 表名【where 条件】,若不加具体条件,则删除表中全部数据
		truncate table student; --删除表,然后再创建一个一模一样的空表
	
	3.修改数据
		*update 表名 set 列名1=1,列名2 =2... [where  条件];
		 *如果不加任何条件,将会把表中的所有记录都修改。

3.DQL(Data Query Language)数据查询语言

1:语法:

	select 
		字段列表
	from
		表名列表
	where
		条件列表
	group by
		分组字段
	having
		分组之后的条件
	order by
		排序
	limit
		分页限定
	
	
	去除重复的结果集 
		解决:distinct
		Select Distinct 列名 from 表名;
	
	注意: 
		如果有null参与的运算,列表+列表的值为null
		解决:ifnull()
		select math 数学, english 英语, math + ifnull(english,0) as 总分 from student;
																	//取别名 as 或者空格
	
	条件查询
	1.where子句后跟条件
	
	2.运算符 >,<,<>,!=...
	
	3.between and :两者之间
	
	4.in:集合
	
	5.like:模糊查询
		占位符:
			下划线  _	:单个任意字符
			百分号	%	:多个任意字符
	
	6.is NULLis not null				
			[null值不能使用 =(!=) 判断]
	
	7.and or not

1.排序查询

语法: order by 排序字段1 排序方式1,排序字段2 排序方式2....
			默认 asc(升序)
				Desc(降序)

2.聚合函数:将一列数据作为一个整体,进行纵向计算

1.count:计算个数 
		2.max:最大值
		3.min:最小值
		4.sum:总和
		5.avg:平均值
	【注意:聚合函数的计算,会排除null值】
	  解决:ifnull()

3.分组查询

语法: group by 分组字段;
			注意:1.分组之后查询的字段:分组字段or聚合函数;
				  2.wherehaving 的区别
						a.where在分组之前进行限定,如果不满足条件,则不参与分组
						b.having 在分组之后进行限定,如果不满足结果,则不会被查询出来
						c.)where后不可以跟聚合函数,having可以进行聚合函数的判断。

4.分页查询

语法:limit 开始的索引,每页查询的条数
			Select * from  student limit 0,3; --第一页
			Select * from  student limit 3,3; --第二页
			
		公式:开始的索引 =(当前的页码 - 1*每页显示的条数
		
		分页操作是一个“方言”。limit只能在MySQL里面用

4.DCL(Data control Language)数据控制语言【管理用户】

1.添加用户
			a.语法:create user '用户名'@'主机名' identified by '密码'; 
			
		2.删除用户
			a.语法:drop user '用户名'@'主机名'
		
		3.修改用户密码
			a.update user set password = password('新密码') where user = '用户名';
			b.set password for '用户名'@'主机名' = password('新密码');
			
				*mysql中忘记了root用户的密码
					1.cmd --> net stop mysql(需要管理员权限)
					
					2.使用无验证方式启动mysql服务
					  mysql --skip-grant-tables;
					
					3.大开新的cmd窗口 输入mysql
					4.改用户密码
					5.启动任务管理器结束掉mysqld服务
					6.启动服务 net start mysql(管理员权限)
				
		4.查询用户:
			a.切换到mysql数据库
			use mysql;
			b.查询user表
			select * from user;
			
			*通配符:%表示可以在任意主机使用用户登陆数据库
			

	*权限管理:
		1.查询权限
				show grants for '用户名'@'主机名';
				
		2.授予权限
				grants 权限列表 on 数据库.表名  to '用户名'@'主机名';
				授予所有权限 grants ALL on *.*  to '用户名'@'主机名';
				
		3.撤销权限
				revoke 权限列表 on 	数据库.表名 from '用户名'@'主机名';
 

————————

在这里我要感谢黑马程序员提供的免费学习资料。谢谢!!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值