前言
开始学习数据库了呢, 这篇文章就是作个备忘录 =V=
ps: 使用的系统是Ubuntu 14.04
安装
首先安装MySQL:
sudo apt-get install mysql-server
在安装过程中会要求输入root用户的密码.
然后安装图形界面workbench:
sudo apt-get install mysql-workbench
这样就大功告成啦, 不过在安装前最好先要执行
sudo apt-get update
sudo apt-get upgrade
用户管理
使用workbench可以很方便的进行用户管理, 这里主要写用命令行来进行用户管理.
首先使用命令行执行
mysql -uroot -*****
以root用户进入Mysql交互界面,其中-u后面的是用户名, -p后面的是相应的密码. 进入交互界面后, 查看一下当前有哪些用户. MySQL的用户信息存放在Mysql.user这个表中, 因此可以通过列出表中信息来查看有哪些用户. 但是直接使用 select * from mysql.usr 的话格式会很乱, 因此一番学习后使用了
select distinct concat('User: ''',user,'''@''',host,''';') as query from mysql.user;
这样就可以输出一个美观的表啦.
接下来我想要修改root用户的密码, 输入:
set password for 'root'@'localhost'=password('123456');
就将root用户的密码修改成了123456.
如果要创建用户则可以使用create user 指令, 但是用这个指令无法设置用户的具体权限. 所以想要创建用户并分配权限, 可以使用grand命令. 其用法是:
grant 权限 on 应用范围(数据库表,方法等) to 用户(用@隔开,前面是用户名后面是主机名’用户名’@’主机名’) identified by 密码 require 要求什么的 with 对用户的进行的执行sql的条数控制。
例如我现在要创建一个test用户, 其权限是对MySQL数据库下user表有查找权限, 密码是111111. 那么我执行以下语句:
grant select on mysql.user to 'test'@'localhost' identified by '111111';
再次查看用户信息, 于是可以看到test用户已经创建好了. grant命令的具体用法可以通过help grant;命令来查询, 在后文再进行描述.
如果要查看刚才创建的用户的权限, 则可以通过输入命令
show grants for test@localhost;
的方法来查看. 如果要删除这个用户, 则可以输入命令
delete from mysql.user where user='test';
然后再刷新一下系统权限表即可
flush privileges;
帮助系统
http://dev.mysql.com/doc/ 在这个网站上有在线帮助系统(说明手册), 如果对哪些东西或哪条命令有不懂的就可以到这里来查找. 通过在命令行输入指令 mysql -V 即可知道自己的MySQL版本, 然后在这个网站上对应查找想要的内容即可.
MySQL Reference Manuals非常的全, 想要查什么东西都查得到. 但是有时候我只是想查找某个命令的用法, 大张旗鼓的上网去搜显得太慢又太麻烦了一些, 于是可以进入mysql交互界面通过help指令来快速查找自己想要查的东西. 如果不知道怎么查, 在mysql交互界面可以输入
help contents
命令来获取help的目录. 之后再输入help xx 即可查询xx所对应的具体条目了.
数据定义
首先执行以下命令来查看当前有哪些数据库:
show databases;
然后可以执行以下命令来创建一个名为test的数据库:
create database test;
再输入以下命令就可以进入这个数据库:
use test;
表的操作
接着就来做一些关于表的建立\删除\修改操作吧!
可以使用create table命令来创建表, 其命令格式为: create table <表名> (<字段名1> <类型1> [,..<字段名n> <类型n>]); 于是我建立一个命为testTable的表:
create table testTable(
id int(4) primary key,
name char(20) not null,
sex char(4) default 'F',
GPA numeric(4,2));
执行show tables;就可以查看是否成功创建了这个表, 在执行以下语句就可以查看表的字段名了:
desc testTable;
其中test为我的数据库名, testTable为表名.
检查正确后, 打算进行修改操作, 首先添加一项grade, 类型为int(2).
alter table testTable add grade int(2);
然后将GPA这一项删除
alter table testTable drop GPA;
最后 将原来的sex修改为 gender, 并重新指定其类型为char(1).
alter table testTable change sex gender char(1);
完成以上的三个操作后, 再次执行desc testTable; 来查看一下当前表中的字段是否如预期一样已经完成了修改. 最后把这个表给删除了:
drop table testTable;
索引的操作
接下来尝试进行索引的建立\删除. 所用的表依旧是一开始创建的那个testTable. 首先在name字段上建立一个索引, 执行
create index i_00 on testTable(name);
其中i_00 即创建的索引名字, testTable即我要创建索引的表, name是所要创建索引的字段. 然后执行
show index from testTable;
来查看testTable下的所有索引. 同时注意到, id也有了一个索引, 当然这个索引不是我手动添加的, 而是由于id是primary key.然后执行
drop index i_00 on testTable;
把刚才添加在name上的索引删除
视图的操作
在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。
注释:数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。
建立视图的语法如下:
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
然后使用drop view XXXX; 就可以删除对应的视图了.