数据库的五个概念
- 数据库服务器
- 数据库
- 数据表
- 数据字段
- 数据行
那么这里下面既是对上面几个概念进行基本的日常操作。
数据库引擎使用
这里仅仅只介绍常用的两种引擎, 而 InnoDB 是从 MySQL 5.6. 版本以后 InnoDB 就是作为默认启动使用的存储引擎。
(1) InnoDB
a, 支持 ACID,简单地说就是支持事务完整性、一致性;b, 支持行锁,以及类似 ORACLE 的一致性读,多用户并发;c, 独有的聚集索引主键设计方式,可大幅提升并发读写性能;d, 支持外键;e, 支持崩溃数据自修复;InnoDB 设计目标是处理大容量数据库系统,它的 CPU 利用率是其它基于磁盘的关系数据库引擎所不能比的。它是一个可靠地事务处理引擎,不支持全文本搜索
(2) MyISAM
a, 不支持 每次查询具有原子性
b, 只支持表所
c, 强调的是性能,其执行数 度比 InnoDB 类型更快,但是不提供事务支持
d, 如果执行大量的 SELECT,MyISAM 是更好的选择
e, 缺点:就是不能在表损坏后恢复数据。(是不能主动恢复)
既然知道了这俩种引擎的优缺点,那么写一下几个常用的 API 操作。
show engines; -- 显示所有可用的引擎
show table status from myDB; -- 查看 myDB 数据库下的所有表使用的引擎
show create table 表名; -- 指定查看表名的所有段名以及引擎
create table 表名(id int primary key, name varchar(50)) engine=MyISAM; -- 建表的时候指定引擎
alter table 表名 Engine= MyISAM; -- 建完表后修改引擎为 MyISAM
当然,也可以通过修改配置文件 my.ini
在[mysqld]最后添加为上 default-storage-engine=InnoDB,重启服务,数据库默认的引擎修改为 InnoDB。
数据库操作
>net start mysql // 启动数据库和停止 net stop mysql
>mysql -u root -p // 默认登陆本机(- h 是主机地址)
>SELECT USER(); // 显示当前用户
>create database 数据库名; // 创建数据库
>SELECT DATABASE(); // 显示当前使用数据库
>SHOW DATABASES // 显示所有数据库列表
>USE DATABASE 库名; // 使用该数据库
>DROP DATABASE 库名 // 删除数据库
>CMD 终端:mysqladmin - u 用户名 - p 旧密码 password 新密码 // 修改密码
>mysql 语句:set password for 用户名 @localhost = password('新密码');
数据表操作
>SHOW TABLES; // 列出库中所有的表
>DESCRIBE table1; // 查看表结构
>show columns from 数据表; // 显示表的所有段名以及类型
>CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1)); // 增加数据表和字段名
>DROP TABLE 表名; // 删除表
>alter table stu rename as students; // 将旧表明 stu 改为新表明 students。
表字段操作
添加字段
语法:ALTER TABLE 表名 ADD COLUMN 字段名 字段类型 DEFAULT NULL;
示例:ALTER TABLE dictionary ADD COLUMN calss VARCHAR(10) DEFAULT NULL;
-- dictionary 是表名
修改字段名称
语法:ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新字段类型 DEFAULT NULL;
示例:ALTER TABLE dictionary CHANGE calss class VARCHAR(10) DEFAULT NULL;
删除字段
语法:ALTER TABLE 表名 DROP COLUMN 字段名
示例:ALTER TABLE dictionary DROP COLUMN calss;
批量增加字段
bagin; // 事务开始
alter table em_day_data add f_day_house7 int(11);
alter table em_day_data add f_day_house8 int(11);
alter table em_day_data add f_day_house9 int(11);
alter table em_day_data add f_day_house10 int(11);
commit; // 提交事务,事务结束
数据增删改查
MySQL 语句忽略大小写的。每张数据表只能存在一个主键。
Tip: 由于数据表的首个字段名 (就是主键, 假如是 id) 是不能重复命名的 (建议使用 id, 因为每张表只能存在一个主键), 所以建议删除的时候使用(where id=1) 键名来定位匹配更好。
查
var sql = 'SELECT * FROM websites'; -- 查询整个 websites 表所有数据
var sql = 'SELECT name FROM websites'; -- 查询整个 websites 表 name 字段数据
增
-- websites 表必须存在 (Id,name,url,alexa,country) 这些字段名
var addSql = 'INSERT INTO websites(Id,name,url,alexa,country) VALUES(2,"taobao","http://wwww.taobao.com","3","CN")';
insert into table1(id,name,url,country) values(6,"lucas","https://wwww.lucas.com","CN");
改
-- where 是定位到上面的增加数据(可以使用任何 "字段名 = 值" 来匹配), 并更改俩个数据
var modSql = 'UPDATE websites SET name ="facebook",url ="http://www.facebook.com"WHERE Id = 2';
var modSql = 'update websites SET alexa="12"where name="taobao"'; -- 定位 name 字段为 taobao 并更新了 alexa 字段的值
删
var delSql = 'DELETE FROM websites where id=2'; -- 删除 id= 2 的数据(当然)
-- 删除 name=lucas 的数据(建议使用 id, 因为每张表只能存在一个主键), 因为他会将表中所有 name=lucas 的值全部删除
delete from websites where name="lucas";