一、数据库基本操作
1.数据库基本操作
查看数据库信息
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
查看数据库中的表信息
mysql> use 数据库名;
mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| info |
+------------------+
1 row in set (0.00 sec)
显示数据表的结构
mysql> describe [数据库名.]表名; ===>可以使用desc [数据库名.]表名;
2.SQL语句概述
SQL语言
Structured Query Language的缩写,即结构化查询语言
关系型数据库的标准语言
用于维护管理数据库 包括数据查询、数据更新、访问控制、对象管理等功能
SQL分类
DDL: 数据定义语言—create(创建数据库,表)、alter(添加表字段)、drop(删除数据库,表)
DML: 数据操纵语言—insert(添加数据)、update(更新数据)、delete(删除数据,可单独删除一条数据)
DQL: 数据查询语言—select(查看)
DCL: 数据控制语言—grant(加权)、revoke(撤权)、commit、rollback
3.创建数据库和表
DDL语句可用于创建数据库对象,如库、表、索引等
使用DDL语句新建库、表
创建数据库
mysql> create database 数据库名;
创建数据表
mysql> create table 表名(字段1 名称类型,字段2 名称类型...,PRIMARY KEY(主键名));
mysql> create table users(user_name char(16) not null, user_passwd char(48)default'',PRIMARY KEY(user_name));
create table 表名 (字段01名称 字段01类型 字段01约束,字段02名称 字段02类型 字段02约束,......)存储引擎,字符集;
字段01名称: 属性名称,自定义
字段01类型:
int(4): 整型 0000-9999
double 浮点型 8字节
decimal(5,2) 有效数字是5位,小数点后面保留2位 100.00 099.50
float 单精度浮点 4字节
char(10) 固定长度字符串
varchar(50) 可变长度字符串 可以超出
字段01约束:
非空约束(not null) 内容不允许为空
主键约束(primary key) 非空且唯一 标识
默认值(default '未知') 加入没有填数据,默认预先设定的值填写
自增特性(auto_increment) id 从1开始
存储引擎: innodb
字符集: UTF-8
4.删除数据库和表
使用DDL语句删除库、表
删除指定的数据表
mysql> drop table [数据库名.]表名;
删除指定的数据库
mysql> drop database 数据库名;
drop table 表名; #删除当前库内的表
5.管理表中的数据
DML语句用于对表中的数据进行管理
包括的操作
insert: 插入新数据
update: 更新原有数据
delete: 删除不需要的数据
向数据表中插入新的数据记录
mysql> insert into 表名(字段1,字段2,字段3,......) values (字段1的值,字段2的值,字段3的值,.....);
修改、更新数据表中的数据记录
mysql> update 表名 set 字段名1=值1[,字段名2=值2] where 条件表达式;
修改数据库密码
update aa.test set authentication_string=PASSWORD('123457') where user='root';
[root@www ~]# mysqladmin -u root -p '123457' password '123456'
在数据表中删除指定的数据记录
mysql> delete from 表名 where 条件表达式;
不带where条件的语句标识删除表中所有记录
mysql> delete from [数据库名.]表名; ===>在当前数据库里面就可以不写数据库名
DQL是数据查询语句,只有select
用于从数据表中查询符合条件的数据记录
查询时可不指定条件
mysql> select 字段名1,字段名2,...... from 表名;
查询时指定条件
mysql> select 字段名1,字段名2,...... from 表名 where 条件表达式;
二、数据库用户授权
1.数据表高级操作
清空表(DML)
mysql> delete from table_name;
mysql> truncate table table_name;
mysql> truncate table test; #清空test表内所有数据
临时表(DDL)
临时建立的表,用于保存一些临时数据,不会长期存在.
#连接断开,临时表被删除
create temporary table mytest (
id int(3) not null auto_increment,
name varchar(10) character set utf8 collate utf8_bin notnull,
score decimal(5,2) not null,
address varchar(50) default '未知',
)
engine=innodb default charset=utf8;
克隆表(DDL)
mysql> create table newtest as select * from test;
# like方法
mysql> create table newtest like test; ===>从test完整复制表的结构涩会给生成到newtest
mysql> insert into newtest select * from test; ===>导入数据
# show create table方法
mysql> show create table test\G; ===>查看表的完整结构 \G===>表示以列显示
# 创建表newtest
mysql> create table newtest(......);
# 导入数据
mysql> insert into newtest select * from test;
2.数据库用户授权
DCL语句进行数据库授权管理
设置用户权限(用户不存在时,则新建用户)
mysql> grant 权限列表 on 数据库名.表名 to 用户名@@来源地址 [identified by '密码'];
#示例
mysql> grant select on auth.* to 'test'@'localhost' identified by '123456';
查看用户的权限
mysql> show grants for 用户名@来源地址;
#示例
mysql> show grants for 'test'@'20.0.0.20';
撤销用户的权限
mysql> revoke 权限列表 on 数据库名.表名 from 用户名@来源地址;
#示例
mysql> revoke all privileges on auth.* from 'test'@'192.168.0.10'; ##撤销用户所有权限
三、忘记数据库密码如何修改
#配置文件里面设置语句进行跳过验证
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
......
skip-grant-tables ===>添加一条代码
#进入mysql数据库
mysql> use mysql;
mysql> update mysql.user set authentication_string=password('123456') where user='tom';
#修改好之后记得将之前添加的代码删除