1.登录MySQL
进入数据库的方法一:
mysql -uroot -pmysql # mysql 数据库密码(显示)
进入数据库的方法二:
mysql -uroot -p # 隐藏密码输入
2.数据库的基本操作
显示数据库版本(记得加;):
select version();
显示当前的时间:
select now();
查看所有数据库:
show databases;
创建数据库:
create database 数据库名 charset=utf8;
创建淘宝数据库:
create database taobao;
创建淘宝数据库并指定编码:
create database taobao charset=utf8;
查看创建数据库的语句:
show create database school
3.使用数据库taobao数据库
使用数据库:
use school;
显示数据库中所有的表:
show tables;
删除数据库:
drop database school;
4.数据表的基本操作
• auto_increment :自动增长
• not null :表示不为空
• primary key :表示主键
• default :默认值
查看当前的数据库中所有的表:
show tables;
创建students数据表:
create table students(
id int unsigned not null auto_increment primary key,
name varchar(50) not null default ‘张三’,
age tinyint unsigned not null default 18,
high decimal(5,2) not null,
gender enum(‘男’, ‘女’, ‘保密’)default ‘保密’,
cls_id int unsigned not null
);
插入一条数据到students表中:
insert into students values(0, ‘mike’, 18, 145,‘保密’,2)
查询students表中的所有的数据:
select * from students;
查看创建表的语句:
show create table students;
删除表:
drop table students;
查看表的字段:
desc students;
添加表的字段:
alter table students add birth datetime;
修改字段:不改变字段名字:
alter table students modify birth date;
修改字段:不重命名版:
alter table students change birth birthday date default ‘2020-01-01’;
删除字段:
alter table students drop cls_id;
插入数据 insert into 表名 value(…):
主键可以用 0 null default来占位
insert into students values(null, ‘lily’, 22, 168, 2, ‘1990-01-01’);
部分插入:
insert into students(high) values(172);
多行插入:
insert into students(name, high) values(‘李四’, 178),(‘老王’, 1.44);
多行插入全部数据:
insert into students values(null, ‘lily’, 23, 173, 2, ‘1990-01-01’), (null, ‘xiao’, 22, 189, 2, ‘1990-02-03’);
修改表:
修改全部年龄:
update students set age= 30;
修改指定id的年龄:
update students set age=28 where id=1;
查询表的内容:
select * from students;
定条件查询:
select * from students where id=2;
select * from students where id>=1 and id<=3;
查询指定的列:
select id, name from students where id>=1 and id<=3;
select name, id from students where id>=1 and id<=3;
可以用as来为列表指定别名(显示出来的名字就是指定的名字):
select name as 姓名, id as 学号 from students where id>=1 and id<=3;
物理删除 (删除表里的内容):
delete from student where id=6;
逻辑删除(用新的字段作为条件限制显示信息):
alter table students add is_delete bit default 0;
把id=1的is_delete改为1:
update students set is_delete=1 where id=1;
查询然后条件限制为is_delete=0 就可以隐藏数据:
select * from students where is_delete=0;
5.数据表的查询操作
查询指定字段:
select name, age from students;
利用distinct字段消除重复行:
select distinct gender from students;
模糊查询:
查询以"李"开头的所有名字:
select * from students where name like ‘李%’;
查询以"王"字结尾的所有名字:
select * from students where name like ‘%王’;
查询有"三"的所有名字:
select * from students where name like ‘%三%’;
查询有两个字的名字:
select * from students where name like ‘__’;
查询有三个字的名字:
select * from students where name like ‘___’;
查询至少有两个的名字:
select * from students where name like ‘%__%’;
6.清空表
清空表:
只是清空表中信息,但是表还是存在。drop是删除表。
• delete from tablename
• truncate table tablename
7.克隆表
方法一:筛选身高大于174的数据存放到新表tmp 中:
mysql> create table tmp as select* from students where high>174;
方法二:like (只能复制表的结构属性,数据无法复制):
mysql> create table test like students; //like 方法
8.用户权限设置
1.授予权限
GRANT 语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时, GRANT 语句将会创建新的用户;当指定的用户名存在时,GRANT 语句用于修改用户信息。
格式:
GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 [ IDENTIFIED BY ‘密码’ ]
mysql>grant select on studengts.* to 'zhangsan' @ ' localhost 'identified by '123';
• 权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,
update”。使用“all”表示所有权限,可授权执行任何操作。
• 数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符“”。例 如,使用“auth.”表示授权操作的对象为 auth数据库中的所有表。
• 用户名@来源地址:用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP 地址,还可以使用“%”通配符,表示某个区域或网段 内的所有地址,如“%.bdqn.com”“192.168.1.%”等。
• IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。在新建用户时, 若省略“IDENTIFIED BY”部分,则用户的密码将为空。 执行以下操作可以添加一个名为“xiaoqi”的数据库用户,并允许其从本机访问,对 auth 数据库中的所有表具有查询权限,验证密码为“123456”。使用 GRANT 语句授权的用户 记录,会保存到 mysql 库的 user、db、host、tables_priv 等相关表中,无须刷新即可生效。
2.查看权限 SHOW GRANTS 语句
格式:
SHOW GRANTS FOR 用户名@来源地址
执行以下操作可以查看用户 'root’从主机 192.168.5.39 访问数据库时的授权信息。
mysql> mysql>SHOW GRANTS FOR 'root' @'192.168.5.39';
3.撤销权限 REVOKE 语句
格式如下所示:
REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址
以下操作可以撤销用户 root从本机访问数据库 auth 的所有权限。
mysql> REVOKE all ON auth.* FROM 'root' @'localhost';
欢迎留言讨论。