数据库(Database)是按照数据结构来组织、存储和管理数据的仓库
RDBMS
即关系数据库管理系统(Relational Database Management System)
1.特点:
1.数据以表格的形式出现 2.每行为各种记录名称 3.每列为记录名称所对应的数据域 4.许多的行和列组成一张表单 5.若干的表单组成database
2.术语:
3.关系型数据库:sqllite,db2,oracle,access,sql server MySQL 4.非关系型数据库:MongoDB,redis
5.SQL介绍
SQL是Structured Query Language(结构化查询语言)的缩写 , SQL是转为数据库而建立的操作命令集 , 是一种功能齐全的数据库语言
6.SQL规范
7.Mysql数据库
Mysql是最流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
yum install mysql-server
service mysqld start
Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:
mysqladmin -u root password "123456"
可以通过以下命令来连接到Mysql服务器:
mysql -u root -p123456
[Linux]Service mysql start出错(mysql: unrecognized service)解决方法
service mysql start出错,mysql启动不了,解决mysql: unrecognized service错误的方法如下:
[hitony ~]# service mysql start
mysql: unrecognized service
[hitony ~]# service mysql restart
mysql: unrecognized service
[hitony ~]# rpm -q mysql 查询发现mysql已经正常安装
mysql-5.1.52-jason.1
[hitony ~]# /etc/rc.d/init.d/mysqld start 直接启动没问题
Starting mysqld: [ OK ]
[hitony ~]# ls /etc/rc.d/init.d/mysqld -l
-rwxr-xr-x 1 root root 5509 Dec 18 02:31 /etc/rc.d/init.d/mysqld
[hitony ~]# chkconfig mysqld on 设置mysql开机启动
[hitony ~]# chmod 755 /etc/rc.d/init.d/mysqld 修改mysqld执行权限
[hitony ~]# service mysqld start 搞定
Starting mysqld: [ OK ]
[hitony ~]# service mysqld start
Starting mysqld: [ OK ]
[hitony ~]# service mysqld status
mysqld (pid 9487) is running...
show databases;
默认数据库:
mysql - 用户权限相关数据 test - 用于用户测试数据 information_schema - MySQL本身架构相关数据
create database 数据库名称 default charset utf8 collate utf8_general_ci;
实例:create database derek default charset utf8 collate utf8_general_ci;
drop database derek;
use derek; 进入数据库
show tables; 查看表
select database(); 查看当前使用的数据库
use mysql; #进mysql数据库
SELECT HOST,USER FROM USER; #查看目前的用户
创建用户
create user '用户名'@'IP地址' identified by '密码';
实例:create user 'zx'@'%' identified by '111';
账户名zx,ip地址任意(可以在任意ip下访问),密码‘’111‘’可以使用该用户
删除用户
drop user '用户名'@'IP地址';
修改用户
rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';
修改密码
set password for '用户名'@'IP地址' = Password('新密码')
查看权限: show grants for
'用户'@'IP地址'
授权: grant 权限 on 数据库.表 to '用户'@'IP地址'
取消权限: revoke 权限 on 数据库.表 from
'用户'@'IP地址'
flush privileges 将数据读取到内存中,从而立即生效
实例:
show grants for 'zx'@'%';
grant select on *.* to 'zx'@'%';
grant all privileges on *.* to 'zx'@'%';
revoke select on *.* from 'zx'@'%';
revoke all privileges on *.* from 'zx'@'%';
1 all privileges 除grant外的所有权限
2 select 仅查权限
3 select,insert 查和插入权限
4 usage 无访问权限
5 alter 使用alter table
6 alter routine 使用alter procedure和drop procedure
7 create 使用create table
8 create routine 使用create procedure
9 create temporary tables 使用create temporary tables
10 create user 使用create user,drop user,rename user和revoke all privileges
11 create view 使用create view
12 delete 使用delete
13 drop 使用drop table
14 execute 使用call和存储过程
15 file 使用select into outfile 和 load data infile
16 grant option 使用grant 和 revoke
17 index 使用index
18 insert 使用insert
19 lock tables 使用lock table
20 process 使用show full processlist
21 select 使用select
22 show databases 使用show databases
23 show view 使用show view
24 update 使用update
25 reload 使用flush
26 shutdown 使用mysqladmin shutdown(关闭MySQL)
27 super 使用change master,kill,logs,purge,master和set global,还允许 mysqladmin调试登陆
28 replication client 服务器位置的访问
29 replication slave 由复制从属使用
30 flush privileges 将数据读取到内存中,从而立即生效
# 启动免授权服务端
mysqld --skip-grant-tables
# 客户端
mysql -u root -p
# 修改用户名密码
update mysql.user set authentication_string=password('666') where user='root';
flush privileges;
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
创建新表时如果不指定存储引擎 , 那么系统就会使用默认存储引擎 , MySQL 5.5 之前的默认存储引擎是MyISAM
, 5.5 之后改为了InnoDB
查看当前数据库支持的存储引擎类型;
SHOW ENGINES;
MyISAM适合:(1)做很多count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。
InnoDB适合:(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。
1)MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持
2)myisam表不支持外键
3)在执行数据库写入的操作(insert,update,delete)的时候,myisam表会锁表,而innodb表会锁行
4)当你的数据库有大量的写入、更新操作而查询比较少或者数据完整性要求比较高的时候就选择innodb表。当你的数据库主要以查询为主,相比较而言更新和写 入比较少,并且业务方面数据完整性要求不那么严格,就选择mysiam表。因为mysiam表的查询操作效率和速度都比innodb要快