mysql数据库是一个很不错,适合中小型企业的数据库,实用性很高,而且是开源免费的。
希望大家好好学, 我在声明一下,一下的所有内容都是我之前一个字一个字记录下来的,希望大家好好看,没有抄袭。
mysql的内容
库管理: 建库 查库 删除库
表管理: 建表 查表 删除表
sql查询
数据的导入导出
用户的授权和权限的撤销
数据库的备份与恢复
binlog日志 实现增量备份
AD
读写分离
mysql集群
LAMP
service mysqld status 查看服务是否启动
-------------------------------
mysql
vim /etc/my.cnf 配置文件
ps aux |grep mysqld 查看mysql的安装信息
cd /var/lib/mysql/ rpm包的mysql 目录
REFERENCES
登录mysql -h那个地址的主机 (必须授权之后才可以远程地址登录)
mysql -hlocalhost -uroot -p123
数据库名字要唯一性
数据库名区分大小写
不能用纯数字创建库名
不能用特殊符合创建库名
不能用关键字创建库名
\c 结束sql的命令 但是一定要在没有分号的前提下
mysql里的库和在系统里的文件权限是一致的
为了安全起见 我们可以把mysql用户的shell改成sbin/nologin 只把他当成一个属组省得有人用mysql用户删除mysql目录更危险
-------------------------------------
查看库
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| discuz |
| farm |
| mysql |
| test |
| ucenter |
+--------------------+
test 库 是公共库 随意授予权限
mysql 授权库 验证用户信息 (这个不能删出)
information_schema 架构信息库 虚拟库 (这里的表不占用你的磁盘空间 内容存放在内存里)
[root@xu db1]# vim yg5.
yg5.frm 表结构
yg5.MYD 表中数据文件
yg5.MYI 表中索引信息
-----------------------------------
创建库
create database studb;
切换库 使用那个库
use studb;
查看当前所在的库
select database();
查看当前登录的帐号是
select user();
查看用户的权限
show grants;
ll -d /var/lib/mysql/ 库的文件夹必须有写的权限
----------------------------------
删库 (直接删文件,是否是空的)
drop database studb;
删出表
drop table yg11;
进库查看表
show tables;
---------------------------
创建表 (一列 在数据库里叫做字段) 字段名 类型 (类型就是比如男女 姓名) 兼值 (约数条件)
create teble db1.xu(
<字段名字> <类型> (宽度) [约束条件],
<字段名字> <类型> (宽度) [约束条件],
<字段名字> <类型> (宽度) [约束条件]
);
---------------------------------------
mysql下的常见类型
数值类型 分为 ×××(int) 浮点型(float)
字符类型 char(固定长度) varchar(变化的长度) 最大能存255个字符
日期时间类型 year data time datetime
枚举类型 menu 单选 set 多选
int (3 )这里的数值 是显示宽度 和char 的限制不一样 (显示宽度不限制字符的长度)
整数位 是小数的是四舍五入保存的
浮点型 是 单单精度浮点数值和双精度浮点数值
---------------------------------
创建表里的字段
mysql> create table db1.game(
-> name char(4),
-> level tinyint(3)
-> );
show tables; 查看表
1字节=8位
----------------------------------
desc game; 查看表结构
create table a (id int); 创建表
show create table a; 查看创建表过程
---------------------------
字段中插入内容
mysql> insert into db1.game(name,level)
-> values
-> ("ts",0),("swk,300");
查看表里的内容
select * from game;
创建有约束条件的表
create table game2(level tinyint unsigned);
----------------------------
create table f(id int(4) zerofill); 用0补位
数字不用框起来
单引号 和双引号区别
单无所谓
双里面有符号或者空格的
----------------------------
浮点型
创建 小数点共7位 小数点是2位
create table gz(gz float(7.2));
----------------------
创建表结构!
显示现在的日期和时间
select now();
日期时间类型
mysql> create table yg4(
-> name varchar(10),
-> wrok year,
-> birthday date,
-> worktime time,
-> metting datetime
-> );
通过函数 保存现在的时间 到yg4表里
insert into yg4 values ("jim",now(),now(),now(),now());
查看
select * from yg4;
手动插入
mysql> insert into yg4 values ("tom",1998,17560101,100000,20130218103000);
查看
mysql> select * from yg4;
插入值
mysql> insert into yg4(name,wrok)values("lucy",98);
01-69 是以20开头的
70-99 是以19开头的
插入00是错误的
---------------------------------------
枚举类型 (单选,多选)
name char(4)not null,
age tinyint (2)unsigned default 24,
sex enum(“boy”,“gril“,“no”)default “boy”,
loves set (“a”,“b”,“c”,“d”) default “a,b”
---
创建表结构
mysql> create table yg5(
-> name char(4) not null,
-> age tinyint(2) default 24,
-> sex enum("boy","gril") default "boy",
-> loves set("a","b","c","f") default "a,b"
-> );
添加jim
insert into yg5(name)values("jim");
查看
mysql> select * from yg5
-> ;
+------+------+------+-------+
| name | age | sex | loves |
+------+------+------+-------+
| jim | 24 | boy | a,b |
+------+------+------+-------+
1 row in set (0.00 sec)
插入lili
mysql> insert into yg5 values("lili",21,"gril","a");
查看
mysql> select * from yg5
-> ;
+------+------+------+-------+
| name | age | sex | loves |
+------+------+------+-------+
| jim | 24 | boy | a,b |
| lili | 21 | gril | a |
+------+------+------+-------+
2 rows in set (0.00 sec)
-----------------------------------
删除表中的记录
delete from a; 这个代表 把a表中所有的内容删掉(慎用)
加条件的 删除匹配NULL的值
mysql> delete from yg5 where name="NULL";
删除NULL值的字段
mysql> delete from yg5 where age is null;
--------------------------------
查看表结构
mysql> desc yg5;
修改表结构
alter table 数据名,表名 动作;
动作:
add 字段名 类型 (宽度) 约束条件
添加
mysql> alter table yg5 add stu_id char(8) not null,
-> add mail varchar(30) default "tea@uplooking.com";
删出字段
mysql> alter table yg5 drop sex;
添加到第一行
mysql> alter table yg5 add stu_id char(8) not null first;
把QQ添加到sex下
mysql> alter table yg5 add QQ varchar(8) not null after sex;
---------------------------------
修该字段类型
modify
查看表结构
desc game;
修改类型
mysql> alter table yg5 modify loves set("muisc","football")not null defalut "muisc";
--------------------------
修改字段名
change
修改字段名 把mail 改为email
mysql> alter table yg5 change mail email varchar(30) default "tea@uplooking.com";
------------------------------
修改ro更新表中的记录 (一定要加上条件)
uptate 表名 set 字段列表 where 条件
修改
mysql> update yg5 set stu_id="88888888" where name="lucy";
修改多个记录
mysql> update yg5 set stu_id="99999999",QQ="2348444",loves="book,film" where name="lili";
------------------------------------
复制表 (在复制表的时候,原表key字段不会复制到新表)
mysql> create table yg6 select * from yg5;
复制原表结构(空表) 错误的查询 显示的是空值
mysql> create table yg7 select * from yg5 where name is null;
-----------------
表改名
mysql> alter table yg7 rename txt;
-------------------------