SQL语句的使用
1、查看数据库结构
1.1、查看当前服务器中的数据库
show databases
1.2、查看某数据库中的所有表
use 数据库名;
show tables;
1.3、查看表的结构(字段)
1、describe 数据库名.表名;
2、use 数据库名; ### describe 可缩写成:desc
describe 表名;
3、show create table 表名\G; ### 以列表方式竖向显示字段(包括键名)
2、创建、删除数据库和库中的表
2.1、创建的新数据库
create database 数据库名;
2.2、创建新的表
create table 表名(字段1 数据类型 [属性],字段2 数据类型 [属性]…);
2.3、删除数据库
drop database 数据库名;
2.4、删除表
drop table 数据库名.表名;
3、表中数据记录的 增删改查
3.1、向表中插入新的数据记录
1):insert into 表名(字段1,字段2,…)values(字段1的值,字段2的值…);
2):insert into 表名 values(字段1的值,字段2的值…); ##values前面字段省略时,注意后面字段的值要跟表中字段一一对应
3.2、查询表中数据记录
1):select * from 表名; ## 查看表中所有数据记录
2):select 字段1,字段2… from 表名; ## 根据给出的字段名查询记录
3):select * from 表名 [where 条件表达式]; ## 根据条件查询记录
4):select * from 表名\G; ## 以列表方式竖向显示数据
5):select * from 表名 limit [数字n]; ## 查询前n行记录
6):select * from 表名 limit [数字n],[数字m]; ## 查询第n行后的前m行记录
4、修改、更新表中记录
update 表名 set 字段名1=字段1的值,字段名2=字段2的值… [where 条件表达式];
5、删除表中数据
delete from 表名 [where 条件表达式];
6、修改表名和表的结构
6.1、修改表名
alter table 旧表名 rename 新表名;
6.2、增加新的字段
alter table 表名 add 字段1 数据类型 [属性];
6.3、修改字段属性
alter table 表名 CHANGE 旧字段名 新字段名 数据类型 [键名];
6.4、删除字段
alter table 表名 drop 字段名;
6.5、添加字段的 键名
1):create table 表名 (字段1,字段2,键名(字段名) ); ## 创建表的时候添加
2):alter table 表名 ADD 键名(字段名);
6.6、删除键名
alter table 表名 DROP 键名;
二、数据库的高级操作
1、复制表的结构和数据(克隆表)
1.1、create 表1 like 表2; ##复制表的结构
1.2、insert into 表1 select * from 表2; #将表2查询的数据导入表1中
1.3、create table 表2 (select * from 表1); ##创建表2的时候,从表1中复制其字段属性和数据
复制代码
2、清空表的内容
1):delete from 表名; ##自增列不会被重置
2):truncate table 表名; ## 自增列会被重置为1
复制代码
三、数据库用户管理
1、新建用户
create user ‘用户名’ @ ‘来源地址’ [identified by ‘密码’];
2、查看用户信息
select User,authentication_string,Host from 表名;
3、重命名用户
rename user ‘旧用户名’@‘localhost’ to ‘新用户名’@‘localhost’;
4、删除用户
drop user ‘用户名’@‘localhost’;
5、修改密码
set password = password(‘新密码’); ##修改当前登录用户的密码
set password for ‘用户名’@‘localhost’=password(新密码); ## 修改其他用户密码
复制代码
6、忘记 root 密码的解决方法
1、修改/etc/my.cnf 配置文件,不使用密码直接登录MySQL
vim /etc/my.cnf
[mysqld] ### 在mysql块添加
skip-grant-tables ### 登录mysql不使用授权
systemctl restart mysqld
mysql ### 使用mysql直接登录
##修改root密码
update mysql.user set authentication_string = password(‘新密码’) where user=‘root’;
plush privileges; ## 刷新权限
quit ## 退出mysql
##注意把/etc/my.cnf 配置文件里的skip-grant-tables一行删除。
##使用新密码登录mysql
四、数据库用户的授权
1、授予权限
Grant语句:用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户:当指定的用户名存在时,GRANT语句用于修改用户信息。
GRANT 权限列表 ON 数据库名.表名 TO ‘用户名’@‘来源地址’ [IDENTIFIED by ‘密码’];
权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如"select,insert,update"使用"all"表示所有权限,可授权执行任何操作。
数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符"" 例如:使用"kgc.“表示授权操作的对象为kgc数据库中的所有表
‘用户名@来源地址’:用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、ip地址,还可以使用”%"通配符,表示某个区域或网段内的所有地址
IDENTIFIED by:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略"IDENTIFIED by"部分,则用户密码为空。
示例:允许zhangsan 用户在本地查询kgc数据库中所有表的数据记录,但禁止查询其他数据库中的表记录
GRANT select ON kgc.* TO ‘zhangsan’@‘localhost’ IDENTIFIED by ‘abc123’;
示例:允许用户lisi 在所有终端远程连接 mysql,并拥有所有权限
GRANT ALL [PRIVILEGES] ON . TO ‘lisi’@‘%’ IDENTIFIED by ‘abc123’;
2、查看权限
show grant for ‘用户名’@‘来源地址’;
例:
show grant for ‘lisi’@‘%’;
3、撤销权限
revoke 权限列表 ON 数据库名.表名 from ‘用户名’@‘来源地址’;
例:
revoke all ON . from ‘zhangsan’@‘%’;