数据库的五个概念
数据库服务器
数据库
数据表
数据字段
数据行
那么这里下面既是对上面几个概念进行基本的日常操作。
数据库引擎使用 这里仅仅只介绍常用的两种引擎,而InnoDB是从MySQL 5.6.版本以后InnoDB就是作为默认启动使用的存储引擎。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (1) InnoDB a,支持ACID,简单地说就是支持事务完整性、一致性; b,支持行锁,以及类似ORACLE的一致性读,多用户并发; c,独有的聚集索引主键设计方式,可大幅提升并发读写性能; d,支持外键; e,支持崩溃数据自修复; InnoDB设计目标是处理大容量数据库系统,它的CPU利用率是其它基于磁盘的关系数据库引擎所不能比的。 它是一个可靠地事务处理引擎,不支持全文本搜索 (2) MyISAM a,不支持 每次查询具有原子性 b,只支持表所 c,强调的是性能,其执行数 度比InnoDB类型更快,但是不提供事务支持 d,如果执行大量的SELECT,MyISAM是更好的选择 e,缺点:就是不能在表损坏后恢复数据。(是不能主动恢复)
既然知道了这俩种引擎的优缺点,那么写一下几个常用的API操作。
1 2 3 4 5 6 7 8 9 show engines ; show table status from myDB; show create table 表名; create table 表名(id int primary key , name varchar (50 )) engine =MyISAM; alter table 表名 Engine = MyISAM;
当然,也可以通过修改配置文件my.ini
在[mysqld]最后添加为上default-storage-engine=InnoDB,重启服务,数据库默认的引擎修改为InnoDB。
Node使用mysql示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 var mysql = require ('mysql' ); var connection = mysql.createConnection({ host : 'localhost' , user : 'root' , password : '123456' , port: '3306' , database: 'test' }); connection.connect(); var sql = 'SELECT * FROM websites' ;connection.query(sql,function (err, result ) { if (err ) { console .log('[SELECT ERROR] - ' ,err.message); return ; } console .log('--------------------------SELECT----------------------------' ); console .log(result); console .log('------------------------------------------------------------\n\n' ); }); connection.end();
query方法第一个参数是sql语句,第二参数是callback
数据库操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 >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('新密码');
数据表操作 1 2 3 4 5 6 7 8 9 10 11 >SHOW TABLES; //列出库中所有的表 >DESCRIBE table1; //查看表结构 >show columns from 数据表; //显示表的所有段名以及类型 >CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1)); //增加数据表和字段名 >DROP TABLE 表名; //删除表 >alter table stu rename as students; //将旧表明stu改为新表明students。
表字段操作 添加字段 1 2 3 4 语法:ALTER TABLE 表名 ADD COLUMN 字段名 字段类型 DEFAULT NULL ; 示例:ALTER TABLE dictionary ADD COLUMN calss VARCHAR (10 ) DEFAULT NULL ;
修改字段名称 1 2 3 语法:ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新字段类型 DEFAULT NULL ; 示例:ALTER TABLE dictionary CHANGE calss class VARCHAR (10 ) DEFAULT NULL ;
删除字段 1 2 3 语法:ALTER TABLE 表名 DROP COLUMN 字段名 示例:ALTER TABLE dictionary DROP COLUMN calss;
批量增加字段 1 2 3 4 5 6 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)键名来定位匹配更好。
查 1 2 var sql = 'SELECT * FROM websites'; --查询整个websites表所有数据 var sql = ' SELECT name FROM websites'; --查询整个websites表name字段数据
增 1 2 3 4 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");
改 1 2 3 4 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字段的值
删 1 2 3 4 var delSql = 'DELETE FROM websites where id =2 '; -- 删除id=2的数据(当然) -- 删除name=lucas的数据(建议使用id,因为每张表只能存在一个主键),因为他会将表中所有name=lucas的值全部删除 delete from websites where name="lucas";