Mysql数据基本操作1

数据库信息相关操作

可以通过 help show显示允许的show语句

mysql -u root -p            #提示输入密码 进入mysql  登录数据库
show databases;             #显示Mysql中所有数据库
use michael;                #选择数据库
show tables;    		    #显示数据库中所有表
show columns from test;     #显示表中列信息
show status;				#显示广泛的服务器状态信息
show grants;				#显示授权用户的安全权限
show errors;				#显示服务器错误信息
show warnings;				#显示服务器警告信息

SQL分为DDL,DML,DCL三种语言
DDL(data definition language) 数据库定义语言:用于定义表,列,索引,存储过程等数据库对象,create,drop,alter等
DML(data manipulation language)数据库操纵语言:负责对数据库对象运行数据访问工作的指令集,增删改查数据库的记录,以insert,delete,update,select为中心
DCL(data control language)数据库控制语言:用来设置或更改数据库用户的访问权限和安全级别。grant,revoke等

DDL语句

create database database1;  			#创建数据库
drop database database1; 				#删除数据库
create table test1(name varchar(10));   #创建表
drop table test1;						#删除表
alter table test1 rename to test2;		#修改表名
alter table test1 add age int;			#增加一列
alter table test1 drop column age		#删除列
alter table test1 modify column age varchar(10);#修改列属性

DCL语句

create user tester identified by '1234';						 #创建用户
use mysql;select user from user; 								 #在mysql数据库中的user表查找tester
show grants for tester;											 #查看权限
grant all privileges on michael.* to 用户名@‘主机名’ identified by 'password' #为用户授权
revoke all  on michael.* from 用户名;							 #收回权限	
set password for tester  = Password("123");						 #修改密码

DML语句

insert into table2(name) values("张三");							#插入一行数据(安全)
insert into table2 values("李四");									#插入一行数据(不安全)
insert into table2(name)values("王五"),("michael");					#插入多行
delete from table2 where name = "张三";								#删除一行
delete from table2;													#删除表的全部内容,不删除表结构
truncate table2;													#删除表重建一个table2表相比与delete速度更快
update table1 set name = "John" where name = "张三";
select * from table1;												#检索全部列,一般不推荐速度慢
select name from table1;											#检索一列

排序检索查询

select name from table1 order by name desc;                              #单个列排序  desc 降序  asc升序(默认)
select name, age from table1 order by name,age; 						 #先以name排序,再以age排序
select name, age from table1 order by age limit 1;              	     #配合limit可以找出最大值/最小值

过滤查询

select name from table1 where name = "001";       						 #使用where子句
select name from table1 where name is Null                               #null不代表0,空格,空字符串。
select name from table1 where age >10 and age <20 or age >				 #and 表示条件全部满足
select name from table1 where age >20  or age <10					     #or表示条件满足一个即可
select name from table1 where sex in('男','女');						 #in表示在指定条件范围内匹配
select name from table1 where sex not in('男','女');					 #not 表示否定它之后跟的条件

   where子句操作符

操作符说明
=等于
>大于
<小于
!=不等于
<=小于等于
>=大于等于
<>不等于
between value1 and value2在指定的值之间

模糊查询,使用通配符
  通配符的查询时间一般较长,需正确使用和不要过度使用

select name from table1 where name like '00%' ; 			# %表示任何字符出现任意次数,筛选以00开头的名字
select name from table1 where name like '_0' ; 				# _下划线表示任意字符只出现一次

聚合函数

select avg(age) from table1;								#查询所有人年龄的平均值
select max(age) from table1;								#查询所有人年龄的最大值
select min(age) from table1;								#查询所有人年龄的最小值
select sum(age) from table1;								#查询所有人年龄之和
select count(age) from table1;								#计算age字段的数据,不计null值
select count(*) from table1;									#记录查询的记录数,包含null值记录
select distinct age from table1;							#distinct 选出年龄不同的数据			

分组函数
  分组使用group by 子句, 过滤分组使用having子句。
  注意事项:1.group by 子句中列出的列都必须是检所列或者有效的表达式但不能是聚合函数,如果select子句中使用表达式,则group by 子句中必须使用相同的表达不能使用别名 。 2.除了聚集函数外,select子句中的列必须在group by 子句中给出。3.如果分组列中存在Null值则null作为一个分组。3.where 在分组前过滤,过滤行;having在分组后过滤,过滤组。having子句中的列是group by 子句的列或者聚合函数列。

select name, age from table1 group by name,age;				#先以name分组,再以age分组
select age from table1 group by age having age > 10;		#having子句作为分组后的条件选出age>10的数据

select语句执行顺序

子句说明是否必要使用
select要返回的列或者表达式
from从中检索数据的表仅在从表中选择数据的时候使用
where行级过滤
group by分组说明仅在按组计算聚集函数时使用
having组级过滤
order by输出排序顺序
limit要检索的行数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值