数据库之MySql
数据库(Databases)是按照数据结构来组织、存储和管理数据的仓库,主要的数据库有:sqlserver、mysql、Oracle、SQLite、Acess、MS SQL Server等,以下主要记录mysql相关知识
1. mysql安装
mysql是一种开放源代码的关系型数据库管理系统(RDBMS),是使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
(1)下载地址:https://dev.mysql.com/downloads/mysql/
(2)安装过程参考:http://www.cnblogs.com/lonelywolfmoutain/p/4547115.html
2. mysql操作
mysql操作包括数据:
2.1. 库管理
库连接:mysql -u root -p
库退出:quit
创建数据库:create database [IF NOT EXISTS] \’database_name\’;
显示数据库:show database;
选择使用的数据库:use database_name;
删除数据库:drop database [IF EXISTS] database_name;
2.2. 用户管理
创建本地用户
create user \’lizhi\’@\’localhost\’ identified by \’password\’;
创建远程用户
# 从192.168.0.121登录的用户
create user \’lizhi\’@\’192.168.0.121\’ identified by \’password\’;
# 从任意ip登录的用户
create user \’lizhi\’@% identified by \’password\’;
修改用户密码
set password for \’lizhi\’@\’localhost\’ = password(\’lizhi666\’)
或
# 使用update指令,注意这里的password需要进行加密
update user set password=password(\’lizhi666\’) where user = \’lizhi\’
删除用户
delete from user where user = \’lizhi\’ and host = \’localhost\’;
flush privileges;
用户授权
grant all privileges on dxbqr.* to \’lizhi\’@localhost;
flush privileges;
3. mysql表操作
3.1 查看当前数据库中的所有表
show tables;
3.2 创建表
create table [if not exists] table_name(
column_list
) engine=table_list
3.3 查看表内容
desc table_name;
3.4 修改表
添加列:alter table table_name add 列名 类型
删除列:alter table table_name drop column 列名
修改列名:alter table table_name modify column 列名 类型;
alter table table_name change 原列名 新列名 类型;
添加主键:alter table 表名 add primary key(列名);
删除主键:alter table 表名 drop primary key;
alter table 表名 modify 列名 int, drop primary key;
添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
删除外键:alter table 表名 drop foreign key 外键名称
修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
3.4 删除表
drop table table_name;
4. mysql表内容操作
增:insert into table_name (列名,列名…) values(值,值…)(值,值…)
删:delete from table_name;
delete from table_name where id = “1” and name=”2″;
改:update 表 set name = \’zhangyanlin\’ where id>1
查:select * from table_name
select * from table_name where id>1
查这块的条件太多太多:
a. 条件判断where
b. 通配符like
select * from table_name where name like=\’li%\’
c. 限制limit
select * from 表 limit 5; – 前5行
select * from 表 limit 4,5; – 从第4行开始的5行
select * from 表 limit 5 offset 4
d、排序asc,desc
select * from table_name order by 列 asc 根据“列”从小到大排列
select * from table_name order by 列 desc 根据“列”从大到小排列
select * from table_name order by 列1 desc,列2 asc
e. 分组group by
select num from table_name group by num
select num,nid from 表 group by num,nid
select num,nid from 表 where nid > 10 group by num,nid order nid desc
select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid
select num from 表 group by num having max(id) > 10
5. mysql数据类型
INT
DECIMAL(p,d)
BIT
BOOLEAN
CHAR
VARCHAR
TEXT
DATE
TIME
DATETIME
TIMESTAMP
JSON
ENUM
6. mysql表类型
MySql为表提供了各种存储引擎,他们分别如下所示:
- MyISAM
- InnoDB
- MERGE
- MEMORY(HEAP)
- ARCHIVE
- CSV
- FEDERATED
MyISAM
MyISAM扩展了以前的ISAM存储引擎。 MyISAM表针对压缩和速度进行了优化。 MyISAM表也可以在平台和操作系统之间移植。
MyISAM表的大小可达256TB
,这个数据里是非常巨大的。 此外,MyISAM表可以压缩为只读表以节省空间。 在启动时,MySQL会检查MyISAM表是否有损坏,甚至在出现错误的情况下修复它们。MyISAM表不是事务安全的。
在MySQL 5.5之前,MyISAM是创建表但是不用明确指定存储引擎时的默认存储引擎。 从版本5.5起,MySQL使用InnoDB作为默认存储引擎。
InnoDB
InnoDB表完全支持符合ACID和事务。 它们也是性能最佳的。InnoDB表支持外键,提交,回滚,前滚操作。InnoDB表的大小最多可达64TB
。
像MyISAM一样,InnoDB表可以在不同的平台和操作系统之间移植。如果需要,MySQL还会在启动时检查和修复InnoDB表。
MERGE
MERGE表是将具有相似结构的多个MyISAM表组合到一个表中的虚拟表。MERGE存储引擎也被称为MRG_MyISAM引擎。 MERGE表没有自己的索引; 它会使用组件表的索。
使用MERGE表,可以在连接多个表时加快性能。MySQL只允许您对MERGE表执行SELECT,DELETE,UPDATE和INSERT操作。如果在MERGE
表上使用DROP TABLE
语句,则仅删除MERGE
规范。基础表不会受到影响。
Memory
内存表存储在内存中,并使用散列索引,使其比MyISAM表格快。内存表数据的生命周期取决于数据库服务器的正常运行时间。内存存储引擎以前称为HEAP。
Archive
归档存储引擎允许将大量用于归档目的的记录存储为压缩格式以节省磁盘空间。 归档存储引擎在插入时压缩记录,并在读取时使用zlib
库对其进行解压缩。
归档表只允许INSERT和SELECT
语句。 ARCHIVE
表不支持索引,因此需要完整的表扫描来读取行。
CSV
CSV存储引擎以逗号分隔值(CSV)文件格式存储数据。 CSV表格提供了将数据迁移到非SQL应用程序(如电子表格软件)中的便捷方式。
CSV表不支持NULL
数据类型。 此外,读操作需要全表扫描。
FEDERATED
FEDERATED存储引擎允许从远程MySQL服务器管理数据,而无需使用集群或复制技术。本地联合表不存储任何数据。 从本地联合表查询数据时,数据将从远程联合表自动拉出