一 基本操作
1 SQL分类
-
数据库:database
-
表:table,行:row 列:column
-
索引:index
-
视图:view
-
存储过程:procedure
-
存储函数:function
-
触发器:trigger
-
事件调度器:event scheduler,任务计划
-
用户:user
-
权限:privilege
2 SQL 语言规范
-
在数据库系统中,SQL 语句不区分大小写,建议用大写
-
SQL语句可单行或多行书写,默认以 " ; " 结尾
-
关键词不能跨多行或简写
-
用空格和TAB 缩进来提高语句的可读性
-
子句通常位于独立行,便于编辑,提高可读性
查看数据库信息
show databases;
查看数据库中的表信息
use mysql
show tables
显示数据表的结构
mysql> use mysql
mysql> describe user;
Field:字段名称
type: 数据类型
Nu11 :是否允许为空
Key :主键
Type: 数据类型
Null :是否允许为空
key :主键
Default :默认值
Extra :扩展属性,例如:标志符列(标识了种子,增量/步长)1 2
id: 1 3 5 7
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
二 创建数据库和表
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));
查看定义字段
二 使用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)
三 对表中的数据进行管理
INSERT:插入新数据
UPDATE: 更新原有数据
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>
克隆表
第一种方式:迁移表 表的结构 属性 约束 数据
第二种方式:备份数据 表的复制
三 表结构的管理
修改表名和表结构
扩展表结构(增加字段)
修改字段(列)名,添加唯一键
删除表达内容
四 数据库的用户授权
1.新建用户
格式:
create user '用户名'@'来源地址' [identified by [passwd] '密码'];
2 加密密码创建用户:
SELECT PASSWORD('密码'); #先获取加密的密码
CREATE USER 'm'@'localhost' IDENTIFIED BY PASSWORD '加密的密码';
3 查看用户密码的信息
用户信息存放在 mysql
数据库下的 user
表(MySQL 服务下存在一个系统自带的 mysql 数据库)
4 查看用户信息,
创建用户保存在mysql数据库的user表里
use mysql;
select user,authentication_string,Host from user;
5 登录用户用户名的更改
重命名指定
rename user 'mcb550'@'locahost' to 'mcb250'@'localhost';
修改用户密码
set password = password('3721');
删除登录用户
drop user 'mcb550'@'localhost';
修改其他用户密码
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以后版本中用于存储密码的字段名
⑤ 撤销添加的免密码认证设置,重启数据库服务(玩玩就行)
五 管理登录用户的权限
授权操作
[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.44.%' identified by '123';