数据库管理操作
一、数据库的管理、使用
1、数据库的安装及启用:https://blog.csdn.net/lkolkolkol/article/details/104564291
2、使用mysql数据库客户端命令
3、windows系统上进行远程登录管理
(1)常用软件:phpMyAdmin、Navicat
二、SQL语言
1、SQL与T-SQL
(1)SQL:结构化查询语言,是目前关系型数据库管理系统中使用最广泛的查询语言
(2)T-SQL:SQL 程序设计语言的增强版,它是用来让应用程式与 SQL Server 沟通的主要语言。提供标准 SQL的DDL 和 DML功能,加上延伸的函数、系统预存程序以及程式设计结构(例如 IF 和 WHILE)让程式设计更有弹性。
2、SQL语言组成
(1)DML:数据操纵语言
①插入数据:instert into 表名(字段1,字段2……) values(值1,值2……);
②修改数据:update 表名 set 字段1=值1,字段2=值2…… where 条件
③删除数据:delete from 表名 where 条件
(2)DQL:数据查询语句
①查询数据:select 字段名1,字段名2…… from 表名 where 条件
(3)DDL:数据定义语言
①创建库:create database 库名;
②创建表:create table 表名(字段1 类型,字段2 类型……,PRIMARY KEY(主键名));
③删除库:drop database 库名;
④删除表:drop table 库名.表名;
⑤删除表字段:alter table 表名 drop 字段1;
⑥添加表字段:alter table 表名 add 字段1 类型 [after 指定字段之后];
⑦修改表字段:
1)修改类型:alert table 表名 modify 旧字段 新类型;
2)修改字段:alert table 表名 change 旧字段 新字段 新类型[not null default 值];
3)修改默认值:alter table 表名 alter 字段 set default 值;
4)删除默认值:alter table 表名 alter 字段 drop default;
(4)DCL:数据库控制语言
①grant 权限 on 数据库对象 to 用户
1)grant all on *.* to user@’192.168.1.%’ [identified by ‘111111’];
②revoke 权限 on 数据库对象 from 用户
③权限列表:
权限 | 描述 |
alter any cluster | 修改任意簇的权限 |
alter any index | 修改任意索引的权限 |
alter any role | 修改任意角色的权限 |
alter any sequence | 修改任意序列的权限 |
alter any snapshot | 修改任意快照的权限 |
alter any table | 修改任意表的权限 |
alter any trigger | 修改任意触发器的权限 |
alter cluster | 修改拥有簇的权限 |
alter database | 修改数据库的权限 |
alter procedure | 修改拥有的存储过程权限 |
alter profile | 修改资源限制简表的权限 |
alter resource cost | 设置佳话资源开销的权限 |
alter rollback segment | 修改回滚段的权限 |
alter sequence | 修改拥有的序列权限 |
alter session | 修改数据库会话的权限 |
alter sytem | 修改数据库服务器设置的权限 |
alter table | 修改拥有的表权限 |
alter tablespace | 修改表空间的权限 |
alter user | 修改用户的权限 |
analyze | 使用analyze命令分析数据库中任意的表、索引和簇 |
audit any | 为任意的数据库对象设置审计选项 |
audit system | 允许系统操作审计 |
backup any table | 备份任意表的权限 |
become user | 切换用户状态的权限 |
commit any table | 提交表的权限 |
create any cluster | 为任意用户创建簇的权限 |
create any index | 为任意用户创建索引的权限 |
create any procedure | 为任意用户创建存储过程的权限 |
create any sequence | 为任意用户创建序列的权限 |
create any snapshot | 为任意用户创建快照的权限 |
create any synonym | 为任意用户创建同义名的权限 |
create any table | 为任意用户创建表的权限 |
create any trigger | 为任意用户创建触发器的权限 |
create any view | 为任意用户创建视图的权限 |
create cluster | 为用户创建簇的权限 |
create database link | 为用户创建的权限 |
create procedure | 为用户创建存储过程的权限 |
create profile | 创建资源限制简表的权限 |
create public database link | 创建公共数据库链路的权限 |
create public synonym | 创建公共同义名的权限 |
create role | 创建角色的权限 |
create rollback segment | 创建回滚段的权限 |
create session | 创建会话的权限 |
create sequence | 为用户创建序列的权限 |
create snapshot | 为用户创建快照的权限 |
create synonym | 为用户创建同义名的权限 |
create table | 为用户创建表的权限 |
create tablespace | 创建表空间的权限 |
create user | 创建用户的权限 |
create view | 为用户创建视图的权限 |
delete any table | 删除任意表行的权限 |
delete any view | 删除任意视图行的权限 |
delete snapshot | 删除快照中行的权限 |
delete table | 为用户删除表行的权限 |
delete view | 为用户删除视图行的权限 |
drop any cluster | 删除任意簇的权限 |
drop any index | 删除任意索引的权限 |
drop any procedure | 删除任意存储过程的权限 |
drop any role | 删除任意角色的权限 |
drop any sequence | 删除任意序列的权限 |
drop any snapshot | 删除任意快照的权限 |
drop any synonym | 删除任意同义名的权限 |
drop any table | 删除任意表的权限 |
drop any trigger | 删除任意触发器的权限 |
drop any view | 删除任意视图的权限 |
drop profile | 删除资源限制简表的权限 |
drop public cluster | 删除公共簇的权限 |
drop public database link | 删除公共数据链路的权限 |
drop public synonym | 删除公共同义名的权限 |
drop rollback segment | 删除回滚段的权限 |
drop tablespace | 删除表空间的权限 |
drop user | 删除用户的权限 |
execute any procedure | 执行任意存储过程的权限 |
execute function | 执行存储函数的权限 |
execute package | 执行存储包的权限 |
execute procedure | 执行用户存储过程的权限 |
force any transaction | 管理未提交的任意事务的输出权限 |
force transaction | 管理未提交的用户事务的输出权限 |
grant any privilege | 授予任意系统特权的权限 |
grant any role | 授予任意角色的权限 |
index table | 给表加索引的权限 |
insert any table | 向任意表中插入行的权限 |
insert snapshot | 向快照中插入行的权限 |
insert table | 向用户表中插入行的权限 |
insert view | 向用户视图中插行的权限 |
lock any table | 给任意表加锁的权限 |
manager tablespace | 管理(备份可用性)表空间的权限 |
references table | 参考表的权限 |
restricted session | 创建有限制的数据库会话的权限 |
select any sequence | 使用任意序列的权限 |
select any table | 使用任意表的权限 |
select snapshot | 使用快照的权限 |
select sequence | 使用用户序列的权限 |
select table | 使用用户表的权限 |
select view | 使用视图的权限 |
unlimited tablespace | 对表空间大小不加限制的权限 |
update any table | 修改任意表中行的权限 |
update snapshot | 修改快照中行的权限 |
update table | 修改用户表中的行的权限 |
update view | 修改视图中行的权限 |
3、查询命令详解
(1)用查询内容创建新表:create table A select * from B;(sql server:select into)
(2)条件命令:where
(3)组查询:group by
①不带函数,则直接返回非重复的第一行数据
②函数count():返回相同值的个数——select status,count(*) from user group by status;
(4)排序:order by 条件 [asc/desc];
(5)聚合函数
(6)运算符:
①算术运算符
②比较运算符
③逻辑运算符
④位运算符
(7)多表联合查询
①内连接inner join on
②左外链接left join on
③右外连接right join on
④多表联合查询:select user.姓名 as 学生,teacher.姓名 as 老师,school.校名 as 学校 from school left join user on school.id=user.学校ID left join teacher on school.id=teacher.学校ID;
4、用户管理
(1)新建用户:create user ‘username’@’%’ identified by ‘password’
(2)删除用户:drop user 'zhangsan'@'%'
(3)重命名:rename user 'old_user'@'host' to 'new_user'@'host'
(4)设置密码:set password=password('123456')或set password='username'@'host’=password('123456')
(5)密码破解:
①停止服务 service mysqld stop
②使用mysqld_safe结合skip-grant-tables启动数据
1)mysqld_safe --skip-grant-tables &
③无密码登录数据库,更新root密码
1)update mysql.user set authentication_string=password('123456') where user='root';
④刷新数据库(修改的内容提取到内存马上生效)
1)flush privileges;
5、索引:
(1)什么叫索引
数据库中的索引是某个表中一列或者若干列值的集合,以及物理标识这些值的数据页的逻辑指针清单
(2)创建普通索引
create index 索引名 on tablesname (列名)
(3)唯一索引
create unique index 索引名 on 表名(列名)
(4)主键索引
CREATE TABLE tablename ( [...], PRIMARY KEY (列的列表) );
ALTER TABLE tablename ADD PRIMARY KEY (列的列表);
(5)查看索引
SHOW INDEX FROM tablename;
SHOW KEYS FROM tablename ;