当前位置:  开发笔记 > 编程语言 > 正文

MySQL知识总结

数据库发展历程:层次模型-->网状模型(耦合度高)-->关系模型(对象-关系模型)DBMS数据库管理系统RDBMS关系数据库管理系统managingstorage存储管理managingsecurity安全管理managingmetad SyntaxHighlig

数据库发展历程:
 层次模型-->
 网状模型(耦合度高)-->
 关系模型(对象-关系模型)
 
  DBMS数据库管理系统
  RDBMS关系数据库管理系统
  managing storage 存储管理
  managing security 安全管理
  managing metadata 元数据管理
  managing trasactions 事务管理
  supporting connectivity 支持扩展
  optimizing performance 性能优化
  providing back-up and recovery mechanisms 备份和恢复
  processing requests for data retreval an modifaction 数据检索和修改
 
 DataBase发展方向:
  开发DBA
    数据库设计
    存储过程,存储函数,触发器(SQL)
  管理DBA
    软件安装,卸载,升级
    数据导入和导出
    数据的备份和恢复
    用户管理,权限管理
    安全管理
    架构设计
  
 SQL(Structure query langue)结构化查询语言
 内建的语句:
   select ,update,drop,update ...
 查询语句:select ,update , delate
 
常见数据库管理系统
 大型的:
 oracle
 sybase
 informix
 DB2
 
 小型的:
 sql server
 
 开源的:
 Mysql
 postgreSQL-->EnterpriseDB(除了崩溃后恢复不如mysql,其他的性能是相当优越的)
 
mysql的安装和升级:
 mysql是基于线程工作
DML 数据操作语言
DDL 数据定义语言
存储引擎:将逻辑结构转化成物理结构
Mysql版本:
  GA (general availability)稳定版本
  RC 发行版
  beta 测试版
  alpha 测试版
mysql的软件包
rpm包:
mysql-client 客户端*
mysql-debuginfo 调试信息
mysql-devel开发库*
mysql-embedded 嵌入式mysql
mysql-ndb-management mysql的集群
mysql-server 服务器的端口,提供mysqld*
mysql-shared 共享工具*
mysql-shared-compat 提供老版本库的
mysql-test 测试组件

Linux上的启动查找配置的次序
/etc/my.cnf-->/etc/mysql/my.cnf-->$MYSQL_HOME/my.cnf-->/path/to/file when default-extra-file=/path/to/file is specifid-->~/.my.cnf
启动查找顺序,如果有冲突以最后找到的为准,如果没冲突就综合考虑
从头到尾都要查询
安装完成以后mysql会自动生成5个帐号,而且密码为空
3个管理员帐号:root@localhostroot@127.0.0.1root@hostname
2个匿名帐号:''@localhhost''@hostname
#mysql
>use mysql 使用mysql
>SHOW TABLES; 显示表
>DESC TABLE_NAE;显示表格式
>SELECT Host,User,Password FROM user; 显示表中指定列
>SELECT * FROM user \G; 按照列的方式显示
>DORP DATABASE db_name; 删除数据库
装完mysql的第一步工作是为root设置密码,删除匿名用户,提高安全性
设置密码:
方法1:
#mysqladmin -uroot -hlocalhost password'redhat' 设置密码:-u用户名,-h主机名
方法2:
#mysql
>UPDATE user SET Password=PASSWORD('redhat') WHERE User='root' and Host='127.0.0.1';
只要原密码相同,加密后的密码就一样
>FLUSH PRIVILEGES;通知mysql把修改的内容加载到内存
方法3:
#mysql
>SET PASSWORD FOR  'root'@'host_name'=PASSWORD('new_password');
>FLUSH PRIVILEGES;
删除匿名用户
>DROP USER ''@localhost;
>DROP USER root@'::1';
>DROP USER ''@hostname;
>FLUSH PRIVILEGES;
授权:
>GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'redhat';
>FLUSH PRIVILEGES;
这个时候就可以是window客户端连接进来
mysql AB工具:
mysql
mysqladmin
mysqldump
Options for user:
--user==-u  用户
--password==-p  密码
Options for host:
--protocol
  tcp  客户端和服务端不在同一个主机上
  socket    客户端和服务端在同一个主机上且是Linux或unix上
  pipe    mysql-server 在window上
  memory    mysql-server 在window上
--host==-h   主机
--port
--socket
-D db_name
--database db_name
mysql 的应用:
eg;mysql -uroot -h192.168.1.101 -D mysql -p
>SELECT DATABASE();显示当前默认数据库
>SELECT USER();显示当前默认用户
#cd ~
#vim .my.cnf
[client]
user=root
password=redhat
然后在使用
#mysql 就不用输入密码了,但是你要注意这个文件的权限

#vim test.sql
 CREATE DATABASE test;
批处理方法:
方法一:
#mysql -uroot -p < test.sql
方法二:
#mysql
>SOURCE /etc/test.sql;

送到服务器端的要在后面加上“;”
而客户端执行的不需要加
>STATUS
mysql提示符:
-> 命令未执行完
'> 缺少对应的"’”
"> 缺少对应的“””
/*> 缺少对应的注释符号
 
数据库对象:
 表,二维关系
 索引
 视图
 触发器
 存储过程
 存储函数
 事件调度器
 游标
 用户
物理
 文件
存储引擎
 插件式的存储引擎
 
 
mysql 会记录下命令历史,放在用户家目录下的.mysql_history
开启命令补全
>\#
>rehash
\c 取消命令
\d 定义结束符号
  eg:\d // 就是以//结束
\g 忽略默认定义的结束符,直接送到服务器端执行
\G 以列的方式显示
-E or --veri
HELP  COMMAND 查看命令帮助
-e
mysql -e "SHOW DATABASE" 直接在shell中执行mysql语句,在脚本中很常用
mysql  -e "SELECT User,Host,Password FROM mysql.user;" 如检索某个表

mysqladmin的使用:
mysqladmin [option] command [arg] [command]
#mysqladmin ping 探测服务器是否处于运行状态
#mysqladmin -h 172.16.100.1 ping
#mysqladmin create sampledb 创建数据库
#mysqladmin  drop 删除
#mysqladmin  debug 调试信息(mysql的数据目录下的)
#mysqladmin extended-status== >SHOW STATUS;
#mysqladmin flush-hosts
#mysqladmin flush-logs
#mysqladmin flush-privileges
#myaqladmin flush-status 
#mysqladmin flush-tables  清空表
#mysqladmin flush-thread
#mysqladmin processlist 查看当前用户连接进来,并做什么操作
            reload
            refresh
            shutdown
            start-slave 启动从服务器
            status 显示全局状态信息
            variables
            version 显示版本号
            status 显示
#mysqladmin status --sleep 3 --count 2
#top -d 2 -n 2 两秒刷新一次,显示两次退出
>show variables like '%datadir%';查看数据文件的目录

mysql图形化工具:
SQLyog
MySQLFront
phpMyAdmin
MySQL Query Browser
MySQL Administrator
MySQL Workbench
 
mysql开发知识:
 >use sampledb;
 >CREATE TABLE stus (Name CHAR(18),GENDER CHAR(1));
NO NULL
 
>SHOW CHARACTER SET; 查看支持字符集
>SHOW COLLATION;查看排序方式
SELECT CURRENT_DATE();
SELECT CURRENT_TIME();
SELECT CURRENT_DATETIME();
CREATE TABLE user (ID UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,Name VARCHAR(100) NO NULL,Gender ENUM('M','F') NO NULL DEFAULT 'M',Age TINYINT UNSIGNED);
INSERT INTO user (Name,Age) values ('luowei',18); 插入
SHOW WARNINGS;查看错误警告
SET sql_mode='ansi'设置sql的模型
SHOW VARIABLES LIKE "%sql_mode%";查看模型
SHOW VARIABLES LIKE '%sql_mode%';
常用的模式:
 ansi
 ignore_space
 strict_all_tables
 strict_trans_tables
 traditional
mysql变量类型
 全局变量:对每一个新建立的会话都有效
 会话变量:只对当前会话有效
 SHOW VARIABLES
  SHOW GLOBAL VARIABLES;显示全局变量
  SHOW SESSION VARIABLES; 显示会话变量
   LIKE ''
         %任意长度的字符串
         ?匹配一个
   SELECT @@global.sql_mod; 明确知道变量名字
  修改变量值:
     SET sql_mode='TRADITIONAL'
     SET GLOBAL sql_mode='TRADITIONAL'
     设置的会话变量立即生效,但是只对当前会话有效
     设置全局变量不会立即生效,重新登录对所有的有效
大小写:
 关键字和函数名不区分大小写,如select
 表名,数据库名在window上不区分大小写,在Linux上区分
 存储过程和存储函数不区分大小写
 触发器区分大小写
 mysql的别名区分大小写
database:
 CREATE DATABASE db_name; 创建
 CREATE DATABASE IF NOT EXISTS mydb; 脚本中常用,如果不存在就创建
 CREATE DATABASE CHARACTER SET 'gbk' COLLATE 'gbk_bin' mydb;
 SHOW CREATE DATABASE db_name;显示使用什么语句创建的数据库
 DROP DATABASE db_name;
 DROP DATABASE IF EXISTS db_name; 删除数据库
 SHOW WARDINGS;显示警告
 ALTER DATABASE db_name COLLATE chartset 修改数据库
 
tables && Index
  key(键),index
    候选键
    主键 primary key
    唯一键 unique key
    外键  foreign key  表和表之间用的
  范式
 
 SHOW ENGINES;显示系统默认引擎,default是默认的
 对于mysql,如果使用外键,就要有支持事务的引擎
 索引能加快查询速度,但是对数据库的修改会降低速度
 
 《warn:未完,待续。。。》
作者“IT梦-齐-分享”

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有