创建业务数据库
语法:CREATE DATABASE 数据库名;
数据库命名要求:
区分大小写
唯一性
不能使用关键字如create select
不能单独使用数字和特殊符号如-
正常的:用拼音或单词即可
查看所有数据库
SHOW DATABASES;
USE 数据库名
SELECT database(); 调用函数,查询当前库
DROP DATABASE 数据库名;
/var/lib/mysql 数据库的实体,清理备份
整数 int
浮点数 float double
字符系列CHAR和VARCHAR
枚举系列ENUM
集合类型SET
年YEAR
日期DATE
时间TIME
日期和时间DATETIME
创表目的
表是数据库存储数据的基本单位
表由若干个字段(列)组成
主要用来存储数据记录(行)
- 创库 create database haha;
- 使用库 use haha;
- 创建表 create table t1 (id int);
- 查看所有表名 show databases;
- 插入数据 insert into t1 values (1);
- 查询所有数据 select * from t1;
- 删除表 drop table t1;
- 创两列的表格-序号和姓名 create table t2 (id int, name varchar(20));
- 查看表结构 desc t2
- 插入数据 insert into t2 values (1,"zhangsan");
- 查询所有数据 select * from t2;
创建表 create database school; use school;
create table student1(id int,name varchar(20),sex enum('m','f'),age int);
查看表名 show tables;
表中插入内容 insert into student1 values( 1,"zhangsan",'m',18);
查看表内容 select * from student1;
查看表结构 desc student1;
update t1 set id=2 where name="zhangsan";
修改mysql数据库管理员root账户的密码
update mysql.user set authentication_string=password("Root123@") where user="root";
delete from t2 where name="zhangsan";
select * from student;
select id,name,age from student;
四则运算查询
select id,name,age*10 from student;
单条件查询where
select name,post from employee where post="hr";
多条件查询and/or
select name,salary from employee where post='hr' and/or salary>1000;
关键字between and在什么之间
select name,salary from employee where salary between 5000 and 10000;
select name,salary from employee where salary not between 5000 and 10000;
关键字in集合查询
select name,salary from employee where salary in (4000,5000,6000,9000);
select name,salary from employee where salary not in (4000,5000,6000,9000);
关键字is null
select name,salary from employee where salary is null;
select name,salary from employee where salary is not null;
关键字like模糊查询
select * from employee where name like 'a%'; %表示任意多个字符
select * from employee where name like 'a_'; _表示任意一个字符
select * from employee order by salary asc; 升序
select * from employee order by salary desc; 降序
select * from employee order by salary asc limit 5; 前五
Global level | 所有库,所有表的权限 |
Database level | 某个数据库中的所有表的权限 |
Table level | 库中的某个表的权限 |
Column level | 表中某个字段的权限 |
CREATE USER user1@'localhost' IDENTIFIED BY "Root123@"
DROP USER ‘user1’@‘localhost’;
mysqladmin -uroot -p'刚才查出来的密码' password '新改的密码‘
SET PASSWORD=password('new_passwd'); password函数
FLUSH PRIVILEGES 刷新权限
当root用户,忘记了密码,可以使用破解的方式来登录系统,修改密码
原理:使系统在启动时,不加载密码文件
1.修改mysql启动设置
vim /etc/my.cnf
[mysqld]
skin-grant-tables
2.重启mysql,无密码登录
systemctl restart mysqld 重启mysql程序
mysql -uroot 无密码登录
修改自己的密码
UPDATE mysql.user SET authentication_string=password("root") where user='root' and host='localhost';
FLUSH PRIVILEGES;
3.修改mysql启动设置,注释掉,跳过密码
mysql -P 3306 -u root -p 123 mysql -e 'show tables'
语法格式
grant 权限列表 on 库名.表名 to ‘用户名’@‘客户端主机’ [identified by ‘密码’ with option参数];
==权限列表
- all:所有权限(不包括授权权限)
- select,ypdate 查询更新的权限
==数据库.表名
- *.* 所有库下的表
- web.* web库下的所有表
- web.stu_info web库下的stu_info表
- grant SELECT(id),INSERT(name,age) ON mydb.mytbl to 'user8'@'localhost' identified by 'Root123@';
==客户及主机
==with_option参数
GRANT OPTION 授权选项
授予目标:授予admin3对bbs库中的所有表,距有所有的权限(不包含授权)
GRANT ALL ON bbs.* TO admin@‘%’ IDENTIFIED BY 'QianFeng@13812345678'
授权实例
查看权限
查看自己的权限 SHOW GRANTS;
查看别人的权限 SHOW GRANTS FOR admin3@‘%’;
回收权限REVOKE
语法: REVOKE 权限列表 ON 数据库名 FROM 用户名@‘客户端主机’
示例:REVOKE ALL PRIVLEGES ON bbs.* FROM admin3@‘%’; 回收所有权限
删除用户的版本问题
5.6之前,先revoke all privilege 再 drop user
5.7之后,直接 drop user