MySQL的常见操作

DDL(data definition language)数据定义语句:用来定义数据库对象(数据库、表、字段等)
DDL中的相关操作:
一:数据库操作
1.查询所有数据库:show databases;
2.查询当前数据库:select database();
3.创建数据库:create database [if not exsits] 数据库名;
4.使用数据库:use 数据库名;
5.删除数据库:drop database [if exists] 数据库名;

二:表操作
1.表创建:create table 表名(
                字段1 字段1类型 [comment 字段1(注释)],
                字段2 字段2类型 [comment 字段2(注释)],
                ...
                字段n 字段n类型 [comment 字段n(注释)]
                ) [comment 表注释]
2.查询当前数据库的所有表:show tables;
3.查询表结构:desc 表名;
4.查询指定表的建表语句:show create table 表名;
5.修改数据类型:alter table 表名 modify 字段名 新数据类型(长度);
6.修改字段名和数据类型:alter table 表名 drop 字段名;
7.删除字段:alter table 表名 drop 字段名;
8.修改表名:alter table 表名 rename to 新表名;
9.删除表:drop table [if exists] 表名;
10.清空指定表:truncate table 表名;
DML(date manipulation language)数据库操作语言:用来对数据库表中的数据进行增删改操作

一.添加数据
1.给指定字段添加数据:insert into 表名 (字段名1,字段名2,...) values (值1,值二,...);
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,...);
注意:
(1)插入数据时,指定的字段顺序需要与指定的顺序是一一对应的。
(2)字符串和日期型数据应该包含在引号中。
(3)插入的数据大小,应该在字段的规定范围内。

二.修改数据
update 表名 set 字段名1 = 值1,字段名2 = 值2,...[while条件];
注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

三.删除数据
delete from 表名 [while 条件];
注意:
(1).delete语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
(2).delete语句不能删除某一字段的值(可以使用update)。    
DQL(date query language)数据查询语言:用来查询数据库表中的记录,关键字————select
DQL主要包括:基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询

一.基本查询
1.查询多个字段:select 字段1,字段2,字段3... from 表名;    或者:selct * from 表名;
2.查询并设置别名:select 字段1 [as 别名],字段2 [as 别名]...from 表名;
3.去除重复记录:select distinct 字段列表 from 表名;

二.条件查询
1.语法:select 字段列表 from 表名 where 条件列表;

2.条件

比较运算符 功能 逻辑运算符 功能
> 大于 and或&& 并且(多个条件同时成立)
>=

大于等于

or或|| 或者(多个条件任意一个成立)
< 小于 not或! 非,不是
<= 小于等于
= 等于
<>或!= 不等于
between...and... 在某个范围之内(含最小、最大值)
in(...) 在in之后的列表中的值,多选一
link 占位符 模糊匹配(_匹配单个字符,%匹配多个字符)
is null 是NULL
3.聚合函数:将一列数据作为一个整体,进行纵向计算
1.语法:select 聚合函数 (字段列表) from 表名;
注意:null值不参与所有聚合函数运算

2.常见聚合函数

函数 功能
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和
4.分组查询
1.语法:select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
2.where与having区别
执行时间不同:where是分组之前进行过滤,不满足where条件的不参与分组;而having是分组之后对结果进行过滤。
判断条件不同:where不能对聚合函数进行判断,而having可以。
注意:执行顺序为where>聚合函数>having;分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

为了便于理解和观察,我将之前建好的表展现出来,在后面将对比着举例

5.排序查询
语法:select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
排序方式有两种:asc————升序(默认值)、desc————降序
注意:如果是多个字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

 列1:查询学生年龄,按降序排列:

select * from message order by age desc;

列2:根据班级对学生进行升序排序

select * from messsge order by class;

列3:根据年龄对学生进行降序排列,如果年龄相同的,在按照班级进行升序排序

select * from order by age desc,class asc;

6.分页查询
语法:select 字段列表 from 表名 limit 起始索引,查询记录数;
注意:
起始索引从0开始,起始索引 = (查询页码-1)*每页显示记录数
分页查询是数据库的方言,不同的数据库有不同的实现,mysql中是limit
如果查询的是第一页的数据,起始索引可以省略,直接简写成limit 查询记录数.

 列1:查询第一页学生的数据,每页显示2条记录

select * from message limit 0,2;或者select * from message limit 2;

列2:查询第三页学生的数据,每页展示2条记录

select * from message limit 4,2;

案列,按要求完成如下DQL语句编写
查询年龄为19、20、22、23岁的女生学生信息
select * from message where gender = '女' and age in(19,20,22,23);

查询性别为男,且年龄在20~25岁(含)以内的名字为三个字的学生
select * from message where (age between 20 and 25) and ( gender = '男') and name like '___';

统计学生信息表中,年龄小于23的,男生和女生的人数
select gender,count(*) from message where age <23 group by gender;

查询所有年龄小于等于23岁学生的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按班级降序排列
select name,age from message where age<=23 order by age asc ,class desc;

查询性别为男,且年龄在19~25岁(含)以内的前5个学生的信息,对查询的结果按年龄升序排列,年龄相同的按班级降序排列
select * from message where age between 19 and 25 and gender = '男' order by age,class desc limit 0,5 ;

DCL(data control language)数据库控制语言:主要控制数据库有哪些用户可以访问、控制没一个用户有怎样的访问权限
1.管理用户

查询用户:(1)use mysql;(2)select * from user;

第一个矩形框展示的是用户,第二个矩形框展示的是用户权限

创建用户:create user '用户名'@'主机名'  identified by '密码';

列:创建用户名为wang,可以在本地主机访问数据库,密码为12345

create user 'wanglei'@'localhost' identified by '12345';

验证是否创建用户成功:

修改用户密码:alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';

alter user 'wanglei'@'localhost' identified with mysql_native_password by 'wanglei';

删除用户名:drop user '用户名'@'主机名';

drop user  'wanglei'@'localhost';

 

2.权限控制
mysql中定义了很多种权限,但是常用的就以下几种:
权限                                说明
all,all privileges                所有权限
select                            查询数据
insert                            插入数据
updata                            修改数据
delete                            删除数据
alter                             修改表
drop                              删除数据库/表/视图
create                            创建数据库/表

 这里先创建一个用户,然后查询一下这个用户的权限

create user 'wl'@'localhost' identified by '19971115';

查询权限:show grants for '用户名'@'主机名';

show grants for 'wl'@'localhost';

 

这里表示该用户只有连接并登录mysql的权限而已

授予权限:grant 权限列表 on 数据库名.表名 from '用户名'@'主机名';

grant all on wanglei.message to 'wl'@'localhost';

撤销权限:revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

revoke all on *.* from 'wl'@'localhost';

猜你喜欢

转载自blog.csdn.net/yahid/article/details/123501354