DDL:(定义库)
创建数据库:create database 数据库名;
数据库名的要求:区分大小写,唯一性,不能使用关键字,如create,select,不能数字或特殊符号
查看所有数据库:show databases;
选择进入数据库:use 数据库名;
select database(); 调用函数,查询当前数据库
删除数据库:drop database 数据名;
系统中的位置:/var/lib/mysql //数据库的实体
数据类型:
1.数值类型:整数类型 int , 浮点数类型float(小数)
2.字符串类型
3.时间和日期类型
创表:创建 表格 表名tl (列名id 类型int)
create table tl (id int);
查看所有表名:show tables;
删除表:drop table tl;
创表格:create table t2 (id int,name varchar(20));
创建 表格 表名tl (列名id 类型int, 第二列名 字符类型(长度))
描述表t2:desc t2;
DML:通过SQL语句中的DML语言来实现数据的操作(insert,update,delete)
一、插入:1.完整插入:语法:insert into 表名 values(值1,值2.....值n);
操作:insert into t2 values(1,"zhangsan");
2.部分插入:语法:insert into 表名(列名)values(值1);
操作:insert into t2(name) values("lisi");
二、更新:update:语法:update 表名 set 列名=值 where condition;
操作:update t2 set name="wangwu" where id=1;
三、删除:delete:语法:delete from 表名 where condition;
操作:delete from t2 where id=1;
DQL:目的:在MySQL管理软件中,可以通过SQL语句中DQL语言来实现数据的查询:select查询
在teacher下创建student表
MySQL查询:一、简单查询:select * from 表名
查部分列:select 列1,列2,列3 from 表名
四则运算查询:select name,age,age*3 from student;
二、条件查询:1.单条件查询:查询性别为男的学生
2. 多条件查询:查询性别为女且年龄大于20的学生(and)加了一些学生一起查询
查询所有学生,并且年龄是18或20的学生(or)
3.关键字BETWEEN AND在什么之间
查询年龄在15-20岁之间的学生;
不在18-20岁之间的学生;使用NOT
4.关键字in集合查询:年龄可能18,可能20,也可能16
5.关键字like模糊查询,好像有个学生是li开头 ;
“%”代表多个任意字符,“_”代表一个任意字符
三、查询排序:列如:以年龄升序排列
select * from 表名 order by 工资 列名 ASC;
以年龄降序排列
select * from 表名 order by 工资 列名 DESC;
年龄最小的两个人
DCL:
一、权限级别:1.Global level:所有库,所有表的权限
2.Database level:某个数据库中的所有表的权限
3.Table level:库中的某个表的权限
4.Column level:表中某个字段的权限
二、MySQL用户管理:1.创建用户
create user 'zhangsan'@'localhost' identified by 'Zhangsan@123';
创建 用户 ‘用户名称 ’ 身份认证 ‘用户密码’
@:分隔符
‘localhost’:允许localhost登录,‘%’允许除localhost以外其他主机登录
2.删除用户:drop user 'zhangsan'@'localhost';
3.修改用户密码:(1)root修改自己的密码:
set Password=Password('new_Password');
flush privileges;//刷新权限
mysqladmin -uroot -P'Zz@123456' Password 'Ll@123456'
(2)丢失root用户密码:1* 修改MySQL启动配置
vim /etc/my.cnf
[mysqld]
#skip-grant-tables//有的去掉注释,没有的加上,之后可以不需要密码,直接进入数据库
2* 重启数据库,无密码登录
(1*)重启数据库:systemctl restart mysqld
(2*)无密码登录:mysql -uroot (3*)修改密码:
update mysql.user set authentication_string=password('Zz@123456') where user='root' and host='localhost';
(4*)刷新权限:flush privileges;
3*退出数据库,进入vim /etc/my.cnf,注释 #skip-grant-tables
三、mysql权限管理
grant 权限列表 on 库名.表名 to '用户名'@'客户端主机' [identified by '密码' with option 参数];
权限列表:all:所有权限(不包括授权权限)
select ,update 授予查询更新权限
数据库.表名:*.* //所有库下的所有库
web.* //web库下的所有表
web.stu_info //web库下的stu_info表
grant select(id),insert(name,sex,age) on teacher.student to 'zhangsan'@'localhost' identified by 'ZhangSan@123';
四、MySQL权限示例:1.赋予权限:
(1)授予目标:授予zhangsan对teacher库下所有表,具有所有权限
grant all on teacher.* to 'zhangsan'@'localhost' identified by 'ZhangSan@123';
2.回收权限:
(1)查看权限:查看自己权限:show grants;
查看别人权限:show grants for 'zhangsan'@'localhost';
(2)回收Revoke权限:
语法:revoke 权限列表 on 数据库名 from ‘用户名’@‘客户端主机’
revoke all on teacher.* from 'zhangsan'@'localhost';
删除用户的版本问题:5.6版本以前,先revoke all privilege 再 drop user
5.7之后,直接drop user