操作数据库
数据库的一些命令
创建/删除数据库
create database test; # 创建test数据库 drop database test; # 删除test数据库
创建数据表
DROP TABLE IF EXISTS `article`; # 如果存在article,删除原来的article数据库 CREATE TABLE `article` ( # 列名 数据类型(长度) 完整性约束条件, `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `author` varchar(255) NOT NULL, `content` varchar(255) NOT NULL, `category` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; SET FOREIGN_KEY_CHECKS = 1;
注意:列名、数据类型(长度)必须有; 完整性约束条件可以没有。
CREATE TABLE `hf` ( `sno` int(10) unsigned NOT NULL AUTO_INCREMENT, `sname` varchar(30) NOT NULL, `sage` tinyint(3) unsigned NOT NULL, `sgender` enum('男','女') DEFAULT '男', `semail` varchar(30) DEFAULT NULL, `stel` char(11) DEFAULT NULL, PRIMARY KEY (`sno`) ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
数据类型介绍
# 整型: int tinyint #(微整型 -128~~127) int # (-2,147,483,648 ~~ 2,147,483,647) # 字符串: varchar # 可变长度 varchar(30) 存储abc,varchar会占用3位长度 char # 固定长度 char(30) 存储abc,char会占用30位长度 # 区别:char 的执行速度比 varchar 快,所以能用char就用char # 枚举: enum (单选) set('多选') ) enum('男','女') set('古装','喜剧','警匪','恐怖','穿越') # 日期: date # 年-月-日 datetime # 年-月-日 时:分:秒 time # 时:分:秒) int # 存储时间戳 # 文本: text # 大文本
完整性约束条件介绍
unsigned # 无符号,只用在整型字段上。 tinyint unsigned # 无符号微整型 0~~255 auto_increment # 自增长,只用在整型字段上。 primary key # 主键。 # 特点: 唯一 、 非空 、经常和auto_increment结合使用。 # 主键和自增长配合就能确定唯一的一条数据了。 主键一般都会选择整型字段。 unique # 唯一。 该列中不能出现重复值 not null # 非空。 该列中不能有 NULL 数据。
插入数据
insert into hf(sno,sname,sage,sgender,semail,stel) values(1,'张三',18,'男','1001@qq.com',12345678911);
查询数据
# where 查询条件 select * from hf where sno=1; # in关键字查询 select * from hf where sage in (17,19) and sgender="男"; # 模糊查询: # %: 代表任意长度(包括0)的任意字符 # _: 代表1位长度的任意字符 select * from hf where stel like '1%9_3'; # order by 排序 可以对查询结果按某个字段的升降进行排序 # 升序asc(默认) 降序desc 随机排序rand() select * from hf order by sno desc; # limit 用来限制查询结果的起始点和长度 # 格式: limit var1, var2 # var1: 起始点。 查询结果的索引,从0开始。 0代表第一条数据 # var2: 长度 # 查询年龄最大的2名男性的信息: select * from hf where sgender="男" order by sgender desc limit 0,2; # 多表查询 # select * from 表1 # join 表2 on 链接条件(表1的某个字段=表2的某个字段) select * from table1 join table2 on table1.sname=table2.sname join table3 on table1.sname=table3.sname where sgender="男" order by sgender desc
修改数据
# 格式: # update 表名 set 字段1=值1,字段2=值2,... where 修改条件 # 修改表中的哪一条(几条)数据的 字段1=值1... update hf set sname="王五五" where sno="3";
删除数据
# 格式: delete from 表名 where 删除条件 delete from hf where sname="张三";
在node中操作mysql
导入包 const mysql = require('mysql')
创建数据库连接对象:
const conn = mysql.createConnection({ host: '127.0.0.1', // 要连接到哪个电脑上的数据库 user: 'root', // 登录数据库的用户名 password: 'root', // 登录数据库的密码 database: 'heima_47' // 指定当前这个数据库连接对象,要操作哪个数据库 })
查询数据
// 1.导入操作数据库的包 const mysql = require('mysql') // 2.创建数据库对象 const conn = mysql.createConnection({ host:'127.0.0.1', user: 'root', password: 'root', database: 'heima47' }) // CRUD // -------- 查询数据 ---------- conn.query('要执行的Sql语句') const sql1 = 'select * from users' conn.query(sql1, (err, result) => { if(err) return console.log(err.message) console.log(result) })
添加数据
// 1.导入操作数据库的包 const mysql = require('mysql') // 2.创建数据库对象 const conn = mysql.createConnection({ host:'127.0.0.1', user: 'root', password: 'root', database: 'heima47' }) // CRUD // -------- 添加数据 ---------- const user = {username: '宝贝1', address: '美国'} const sql2 = 'insert into users(username, address) values ("' + user.username + '","' + user.address + '")' conn.query(sql2, (err, result) => { if(err) return console.log(err.message) console.log(result) })
或者
/* const user = {username: '欧松', address: '唐山'} const sql2 = 'insert into users set ?' conn.query(sql2, user, (err, result) => { if(err) return console.log(err.message) console.log(result) }) */
修改数据
// 1.导入操作数据库的包 const mysql = require('mysql') // 2.创建数据库对象 const conn = mysql.createConnection({ host:'127.0.0.1', user: 'root', password: 'root', database: 'heima47' }) // CRUD // -------- 修改数据 ---------- // conn.query('要执行的Sql语句') const user = {id: 13, username: '美丽', address: '济南'} const sql3 = 'update users set ? where id=?' conn.query(sql3, [user, user.id], (err, result) => { if(err) return console.log(err.message) console.log(result) })
删除数据
// 1.导入操作数据库的包 const mysql = require('mysql') // 2.创建数据库对象 const conn = mysql.createConnection({ host:'127.0.0.1', user: 'root', password: 'root', database: 'heima47' }) // CRUD // -------- 删除数据 ---------- // conn.query('要执行的Sql语句') const sql4 = 'delete from users where id=?' conn.query(sql4, 6, (err, result) => { if(err) return console.log(err.message) console.log(result) })