一、数据库的基本概念:
1、数据库发展史
Sybase-->Microsoft(SQL Server)
Informix-->被IBM收购(DB2)
Oracle-->
MySql-->MariaDB
2、DBA工作内容:
(1)、开发:
A、数据库设计
B、代码设计:存储过程、存储函数、触发器
(2)、管理:
A、连接管理以及优化
B、备份和还原
C、数据库设计
D、基本语句优化
E、用户以及权限管理
F、安全管理
G、数据库软件安装及升级
H、配置优化
2、事务(ACID):事务是多个操作组合的一件事情,保证数据要么都完成,要么都失败。
(1)、A:原子性
(2)、C:一致性
(3)、I:隔离性
(4)、D:持久性
3、事务的隔离级别:
(1)、读未提交:read uncommited
(2)、读提交:read commited
(3)、可重读:repeatable read
(4)、串行化:serializable
自上而下,级别越来越高。MySql的默认隔离级别为“可重读”。
MySql常用的存储引擎MyISAM和InnoDB;注意MyISAM不支持事务,InnoDB支持事务。
4、SQL(Struct Query Language):
(1)、DCL(Data Control Language):
Grant/Revoke
(2)、DDL(Data Defination Language):
Create/Alter/Drop
(3)、DML(Data Manipulation Language):
Insert/Delete/Select/Update
5、数据库结构示意图:
6、学习MySQL的内容概述:
(1)、MySql基本知识
(2)、Mysql事务、隔离、并发控制、锁
(3)、用户和权限
(4)、监控
(5)、索引:优化sql
(6)、备份和恢复
(7)、复制功能
(8)、集群
7、MySQL 版本(Community/Enterprise):
(1)、Community社区版
(2)、Enterprise企业版
二、Linux上安装MySql:
1、安装mysql的方式:
(1)、操作系统自带的rpm包
(2)、Mysql官方提供的rpm包
(3)、通用的二进制格式
(4)、源码编译安装
2、通用的二进制格式安装Mysql:
(1)、tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local
(2)、ln -sv mysql-5.5.33-linux2.6-x86_64 mysql
(3)、groupadd -r mysql
useradd -g mysql -r -s /sbin/nologin mysql
cd /usr/local/mysql
chown -R mysql.mysql ./*
(4)、mkdir /data/mydata
chown -R mysql.mysql /data/mydata
(5)、MySql初始化:
/usr/local/mysql/scripts/mysql_install_db --datadir=/data/mydata --user=mysql
(6)、初始化完成后,要将/usr/local/mysql/下的组改为root
cd /usr/local/mysql/
chown -R root ./*
(7)、mysql配置文件:
cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf
因在安装时,datadir进行了调整,所以/etc/my.cnf的[mysqld]段要加上=/data/mydata
说明:/usr/local/mysql/support-files/下可用的mysql配置文件有很多,
如my-large.cnf 、my-innodb-heavy-4G.cnf、my-medium.cnf、my-small.cnf
(8)、配置mysql服务:
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld:添加到服务中
chkconfig --list mysqld:查看服务
(9)、启动mysql:service mysqld start
三、linux上mySql的客户端:
1、安装:
(1)、vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
. /etc/profile.d/mysql.sh
(2)、命令行执行mysql即可。
(3)、处理root用户和匿名用户:
A、删除匿名用户:
mysql> drop user ''@'localhost'或者 delete from user where user='' and host='localhost';
B、给所有的root用户设置密码:
a、第一种方式:
mysql> SET PASSWORD FOR username@host =PASSWORD('your_password');
mysql> FLUSH PRIVILEGES;
b、第二种方式:
mysql> update user set password =PASSWORD('your_password') where user='root';
mysql> FLUSH PRIVILEGES;
2、mysql客户端的使用:
(1)、-u UserName或者--user=UserName,用户省略表示管理员
(2)、-p 或者--password=,密码省略表示空密码
(3)、-h hostName或者--host=hostName,主机省略表示本机。
四、MySql的存储引擎:
1、mysql的存储引擎是插件化的存储引擎。
2、MySql常用的存储引擎MyISAM和InnoDB;MyISAM不支持事务,InnoDB支持事务。
五、MySql管理:
1、Mysql的基本命令:
(1)、显示所有数据库命令:
show databases;
(2)、设置默认数据库:
use 数据库名,如use mysql;
(3)、显示某库下的所有表:
show tables;
(4)、查看某表的表结构:desc 表名,如desc user;
(5)、为了安全,一般要删除表user中的匿名用户,删除的命令为:
drop user 用户账号,如drop user ''@'localhsot'
(6)、查看当前打开的数据库:select database();
(7)、查看当前登录的用户:select user();
(8)、几个查询语句的重要参数:
A、\G:是结果集不在以行展示。
B、\c:取消当前sql的语句的执行。
(9)、执行sql脚本即批处理:
mysql -uroot -p密码<a.sql,其中a.sql的内容如下:
show databases;
select user();
(10)、显示创建表的语句:show create table 表名;
如show create table students;
(11)、显示mysql支持的存储引擎(注:存储引擎是表类型) show engines;
结果如下:Transactions:事务, XA :分布式事务。
+--------------------+---------+------------------------------------------
| Engine | Support | Transactions | XA | Savepoints|
+--------------------+---------+------------------------------------------
| MyISAM | YES | NO | NO | NO |
| CSV | YES | NO | NO | NO |
| MRG_MYISAM | YES | NO | NO | NO |
| BLACKHOLE | YES | NO | NO | NO |
| MEMORY | YES | NO | NO | NO |
| FEDERATED | NO | NULL | NULL | NULL |
| ARCHIVE | YES | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | NO | NO | NO |
| InnoDB | DEFAULT| YES | YES | YES |
+--------------------+-----------+-----------------------------------------
(12)、显示mysql表状态数据:
A、查看所有表:show table status;
B、查看某个表:show table status like '表名';
如show table status like 'students'\G;
*************************** 1. row ***************************
Name: students
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 6
Avg_row_length: 2730
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 10485760
Auto_increment: 7
Create_time: 2015-08-24 01:28:58
Update_time: NULL
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
2、MySql账户管理:
(1)、用户账号=用户名@主机名
(2)、创建用户账号
(3)、修改用户账号密码:
set password for 'root'@'localhost.localdomain'=password('123456');
六、约束、键、字段类型、字段类型的修饰符、创建/删除表、增删改查、sql条件:
1、约束constraint:
(1)、主键约束:
惟一,不能为NULL,对于一张表来说主键有且只能有一个。
(2)、外键约束:
(3)、惟一键约束:
惟一,可以为NULL,对于某个惟一键来说值不能重复出现,对于一张表来说惟一键可以有多个。
(4)、检查式约束:
用户自定义有效取值范围,如:人的年龄不能大于200
(5)、非空约束:
not null
2、键key:
(1)、主键:能够惟一标识表中每一个记录的字段或者字段的组合。
(2)、外键:
(3)、惟一键
3、字段类型:
(1)、字符型:
char(#)
varchar(#)
text
blob
(2)、数值型
精确数值型:
int
tinyint
smallint
mediumint
int
biginit
decimal(常用于金融系统中)
近似数值型
float
double
(3)、日期型
date
time
datetime
timestamp:自1970年到现在的秒数。
(4)、布尔型(mysql无布尔型):
(5)、NULL
(6)、内置类型:
A、ENUM,枚举,如定义性别 ENUM('F','M'),只能是其中一个。
B、SET,集合,只能是集合内一个或几个值的组合。
4、字段或字段类型的修饰符:
(1)、not null:不能为空
(2)、null:可以为空
(3)、unsigned:无符号类型,即>1
(4)、default:默认值
(5)、auto_increment:自动增长,自动增长类型的字段必须为主键或者惟一键。
(6)、primary key:标记某字段为主键
(7)、unique key:惟一键
5、创建表:
create table tbl_name (col1_name col1_type,col2_name col2_type...);
如:create table students (sid bigint,sname varchar(30),sex enum('F','M'));
如:create table students (sid bigint auto_increment primary key,sname varchar(30) not null,age tinyint unsigned not null,sex enum('F','M') default 'M');
6、删除表:
drop table table_name;
如:drop table students;
7、增删改查:
(1)、增:insert into tbl_name (col1,col2...) values (val1,val2...)
(2)、删:delete from tbl_name where col1=条件1 and col2=条件2
(3)、改:update tbl_name set col1=val1,col2=val2 where col1=条件1 and col2=条件2
(4)、查:select col1,col2... from tbl_name where col1=条件1 and col2=条件2
8、sql条件:
(1)、比较条件:=、>=、<=、>、<
(2)、组合条件:and 、or、not
(3)、模糊条件:like ,其中%匹配任意长度任意字符,_:匹配任意单个字符。