• 操作数据库


    数据库的一些命令

    创建/删除数据库

    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)
    })
  • 相关阅读:
    html04
    html03
    html02
    html01
    通过脚本获取form表单的数值而不是submit
    myeclipse自带的数据库查看文件
    如何实现数组和List之间的转换?
    Array和ArrayList有何区别?
    ArrayList和LinkedList的区别是什么?
    如何决定使用HashMap还是TreeMap?
  • 原文地址:https://www.cnblogs.com/houfee/p/10366050.html
Copyright © 2020-2023  润新知