Mysql(一)
一、DDL 数据定义语言
作用:操作数据库结构与表结构的
1.1 操作数据库
1.1.1 查询所有的数据库
show databases;
1.1.2 查看创建数据库的sql语句
show create database 数据库名;
1.1.3 增加数据库
create database 数据库名称;
// 如果数据库名称不存在就创建数据库,存在的话就不创建
create database if not exists 数据库名称;
1.1.4 删除数据库
drop database 数据库名称;
1.1.5 修改数据库
//修改数据库名字
//5.05~5.23有这个sql语句,存在安全的问题其他版本就去掉了
alter database 数据库旧的名字 rename to 新名字;
1.1.6 修改数据库默认码表
alter database 数据库名称 character set 码表(注意:utf8)
1.2 操作表(use 数据库名称;)
1.2.1添加表
//创建表的格式
create table 表名(
字段名称1 数据类型1,
字段名称2 数据类型2,
...
);
1.2.2 查询表结构
//查看当前数据库里面所有表名称列表
show tables;
//查看指定表的详细信息与结构
desc 表名;
1.2.3 修改表
增加一个字段
格式: alter table 表名 add 字段名 数据类型;
代码:alter table emp2 add name varchar(100);
删除一个字段
格式:alter table 表名 drop 字段名;
代码:alter table emp2 drop name;
修改一个字段类型
格式:alter table 表名 modify 字段名 数据类型;
代码:alter table emp2 modify age double;
修改一个字段名称
格式:alter table 表名 change 旧字段名称 新的字段名称 数据类型
代码:alter table emp2 change age nianling double;
修改表名
格式:alter table 表名 rename 新表名;
代码:alter table emp2 rename emp3;
1.2.4 删除表
drop table 表名;
二、DML数据操作语言
作用是对表里面的数据増、改、删
2.1 增
insert into 表名 (字段列表) values(插入指定字段值列表);
//values中的值需要跟表中的字段一一对应,若主键id为自动增长,可赋值为null
insert into 表名 values(插入指定字段值列表);
2.2 改
update 表名 set 字段1=字段值1,字段2=字段值2... where 条件;
2.3 删
//算法实现原理:这里是一条数据一条数据删除的(速度慢)
delete from 表名 where 条件;
//算法实现原理,直接摧毁表结构进行删除所有数据的(速度快)
truncate 表名;
三、DQL数据查询语言
作用就是查询数据库表里面的数据
//查询
SELECT * FROM WHERE 条件 ORDER BY 字段名 DESC GROUP BY 字段名 HAVING 条件;
where & having 的区别:
①having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
②having后面可以使用分组函数(统计函数)
where后面不可以使用分组函数。
3.1 排序(order by)
默认:asc(升序)
desc(降序)
3.2 聚合
- count:统计指定列不为NULL的记录行数
- sum:计算指定列的数值和,如果指定列
- max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串类型不是数值类型,那么计算结果为0排0序运算
- min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算
- avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0
3.3 分组(group by)
SELECT 字段1,字段2… FROM 表名 GROUP BY 字段 HAVING 条件;
四、多表查询
- JOIN & INNER JOIN 查询的效果是一样的,只有有一张表没有数据那么这条数据就不会显示
- LEFT JOIN 以左表为基准,左表有数据,右表没数据,这条数据也会显示,没数据的那张表用NULL填充
- RIGHT JOIN 与LEFT JOIN 相反
- Mysql中没有FULL JOIN,Oracle中才有
五、DCL数据控制语言
作用:进行权限控制的;主要对用户操作,并且给用户授予与解除权限
5.1 用户操作
5.1.1增加用户
//格式
create user 用户名@ip/域名 identified by 密码;
//代码
create user zhaosan@localhost identified by '123456';
5.1.2 查询用户
select * from mysql.user;
5.1.3 删除用户
drop user 用户名@主机地址;
5.2 操作权限
5.2.1 授予权限
//格式
grant 权限1,权限2… on 数据库.表 to 用户@ip;
//代码
//将所有的数据库里面所有的表的所有权限给到zhaosan用户
grant all on *.* to zhaosan@localhost;
//权限列表关键字select ,update ,insert ,delete
//将dbshop.emp表的查询权限给到zhaosan用户
GRANT SELECT ON dbshop.emp TO zhaosan@localhost;
5.2.2 查询权限
//格式
SHOW GRANTS FOR 用户名@ip;
//代码
//查询当前用户的权限
SHOW GRANTS;
5.2.3 解除权限
//格式
revoke 权限1,权限2.. on 数据库.表 from 用户名@ip;