操作数据库

数据库的一些命令

创建/删除数据库

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~~127int # (-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

安装操作数据库的第三方包npm i mysql -S

导入包 const mysql = require('mysql')

创建数据库连接对象:

const conn = mysql.createConnection({
  host: '127.0.0.1', // 要连接到哪个电脑上的数据库
  user: 'root', // 登录数据库的用户名
  password: 'root', // 登录数据库的密码
  database: 'heima_47' // 指定当前这个数据库连接对象,要操作哪个数据库
})

 使用 conn.query('要执行的Sql语句', 要提供的数据, (err, result)=>{ /*回调函数*/ }) 来执行Sql语句

查询数据

// 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)
})

 

posted @ 2019-02-12 17:21  U型枕  阅读(590)  评论(0编辑  收藏  举报