一 基本操作
1 SQL分类
-  数据库:database 
-  表:table,行:row 列:column 
-  索引:index 
-  视图:view 
-  存储过程:procedure 
-  存储函数:function 
-  触发器:trigger 
-  事件调度器:event scheduler,任务计划 
-  用户:user 
-  权限:privilege 
2 SQL 语言规范
-  在数据库系统中,SQL 语句不区分大小写,建议用大写 
-  SQL语句可单行或多行书写,默认以 " ; " 结尾 
-  关键词不能跨多行或简写 
-  用空格和TAB 缩进来提高语句的可读性 
-  子句通常位于独立行,便于编辑,提高可读性 
3 SQL语句分类
-  DDL: Data Defination Language 数据定义语言 
CREATE,DROP,ALTER
-  DML: Data Manipulation Language 数据操纵语言 
INSERT,DELETE,UPDATE
软件开发:CRUD
-  DQL:Data Query Language 数据查询语言 
SELECT
-  DCL:Data Control Language 数据控制语言 
GRANT,REVOKE
-  TCL:Transaction Control Language 事务控制语言 
COMMIT,ROLLBACK,SAVEPOINT
查看数据库信息
show databases;
 查看数据库中的表信息
查看数据库中的表信息 
 
use mysql
show tables

方法二
# 格式  show  tables  from  库名
 
 show tables from mysql;方法三
纵向查看方式:
desc  表名\G;显示数据表的结构
mysql> use mysql
 mysql> describe user; 

Field:字段名称
type: 数据类型
Nu11 :是否允许为空
Key :主键
Type: 数据类型
Null :是否允许为空
key :主键
Default :默认值
Extra :扩展属性,例如:标志符列(标识了种子,增量/步长)1 2
id: 1 3 5 7
常见的数据类型

二 创建数据库和表
DDL语句可用于创建数据库对象,如库、表、索引等
使用DDL语句新建库、表
创建数据库

 创建数据表
 
create table mcb (id int not null,name char(16) not null,score decimal(4,2),passwd char(45) default'',primary key (id));
或create

 查看定义字段
 查看定义字段
 
select *from mcb250;
select * from where id =2
三 对表中的数据进行管理
1 DDL语句删除库、表
删除指定的数据表
mysql> drop table auth;
usersQuery OK, 0 rows affected (0.01 sec)
方法①
drop table mcb38;

 DROP TABLE[数据库名.1表名
方法②

删除指定的数据库
mysql> drop database auth;
Query OK, 0 rows affected (0.00 sec)

DELETE:删除表指定数据

删除表,还能建;删除库就彻底没有希望了,需谨慎
INSERT:插入新数据
UPDATE: 更新原有数据
2 查询
查询时可不指定条件

查找符合条件的数据记录



清空表
方法一:
格式:
delect from 表名;
# delete 清空表后,返回的结果内有删除的记录条目
# delete 工作时是逐行的删除数据;如果表中有自增长字段,使用 delete from 删除所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录方法二
truncate table 表名;
# truncate 清空表后,没有返回被删除的条目
#TRUNCATE 工作时是将表结构按原样重新建立,因此在速度上 truncate 会比 delete 清空表快;使用truncate table 清空表内数据后,id 会从 1 开始重新记录三种删除命令区别

总结:
- 不再需要一张表的时候,用drop
- 想删除部分数据行时候,用delete,并且带上where子句
- 保留表结构而删除所有数据的时候用truncate
- 删除速度:drop> truncate > delete
- delete 安全性最好
建立临时表
用于保存一些临时数据,不会长期存在
mysql> create temporary table TCL (id int(6) zerofill primary key auto_increment,name varchar(16) not null,cardid int(18) not null unique key,hobby varchar(600),sike int(11));
Query OK, 0 rows affected (0.00 sec)
mysql> select * from TCL;
Empty set (0.01 sec)
mysql> insert into TCL values(2,'mg',01,'huaqian',10);
Query OK, 1 row affected (0.00 sec)
mysql> select * from TCL;
+--------+------+--------+---------+------+
| id     | name | cardid | hobby   | sike |
+--------+------+--------+---------+------+
| 000002 | mg   |      1 | huaqian |   10 |
+--------+------+--------+---------+------+
1 row in set (0.00 sec)
mysql> 



复制表结构
创建新表,导入数据
create table 新表名 like 旧表名;
#通过LIKE方法,复制旧表的结构生成新表
 
insert into 新表名 (select * from 旧表名);     
#再将旧表数据导入新表克隆表
第一种方式:迁移表 表的结构 属性 约束 数据


第二种方式:备份数据 表的复制
总结:克隆表有两种
① 迁移表:表的结构、属性、约束、数据等
② 备份数据:表的属性、内容(数据)
三 表结构的管理

修改表名
格式:
alter table 旧表名 rename 新表名;

扩展表结构(增加字段)
格式:
alter table 表名 add 字段名 数据类型;
 修改字段(列)名,添加唯一键
 修改字段(列)名,添加唯一键

 
删除表达内容
 四 数据库的用户授权
 四 数据库的用户授权
 
1.新建用户
格式:
create user '用户名'@'来源地址' [identified by [passwd] '密码'];
2 加密密码创建用户:
 SELECT PASSWORD('密码');    #先获取加密的密码
 
 CREATE USER 'm'@'localhost' IDENTIFIED BY PASSWORD '加密的密码'; 3 查看用户密码的信息
 3 查看用户密码的信息
 
用户信息存放在 mysql 数据库下的 user 表(MySQL 服务下存在一个系统自带的 mysql 数据库)

 
 

4 查看用户信息,
创建用户保存在mysql数据库的user表里
use mysql;
 
select user,authentication_string,Host from user;
5 登录用户用户名的更改
重命名指定
rename user 'cpu'@'locahost' to 'mcb250'@'localhost';修改用户密码
 set password = password('3721'); 删除登录用户
 删除登录用户
drop user 'mcb550'@'localhost';

修改其他用户密码
 6 忘记root密码的解决方法
 6 忘记root密码的解决方法
 
① 修改 /etc/my.cnf 配置文件,免密登录mysql

② 重启数据库服务

③ 无密码登录之后,修改数据库用户中的 root 密码

update mysql.user set authentication_string = password('250') where user='root';
#用于更新MySQL数据库系统表mysql.user中的用户root的密码。AUTHENTICATION_STRING是MySQL 5.7.0以后版本中用于存储密码的字段名⑤ 撤销添加的免密码认证设置,重启数据库服务(玩玩就行)
五 管理登录用户的权限
在 MySQL 中,用户提权是指将用户的权限从一个级别提升到另一个更高的级别。或者根据需求给予合理的权限。
[NO_AUTO_CREATE_USER], 即在grant语句中禁止创建空密码的账户,使用grant语法创建用户必须带上 “identified by”关键字设置账户密码,否则就被认为是非法的创建语句。 

查看用户已有权限的操作
show grants;
#查看当前用户(自己)的权限
 
show grants for 'NBA'@'localhost';
 
#查看其他用户的权限
对已存在用户授权示
grant select,insert on study.class to 'mcb'@'localhost';
 
show grants for 'mcb'@'localhost';对不存在的用户进行创建并授权
撤销用户权限
 revoke 权限列表/ALL on 库名.表名 from '用户名'@'来源地址';用户的远程登录
 grant all privileges on *.* to 'NBA'@'192.168.11.%' identified by '123';




































