Mysql 数据库 常用语法功能

173 阅读4分钟

数据库

mysql数据库

创建表

    - 数据类型

        + 整数类型 int

        + 浮点类型 double

        + 日期类型 date/timestamp

        + 字符串类型 char varchar

            * 可变varchar(n)  必须要给字符最大长度n 使用:用户名,密码,身份证号码。 n= 40 40 个字节,20个字符

            * 不可变是char 不需要给字符长度,使用;商品描述、歌词...

            * 空间换时间

            * text 长度不限

    - 首先足够用,其次尽量小


    create table 表名(

        id int,

        name varchar(20)

    );

    - 查看创建表的语句

        + show create table 表名

    - 查看表的明细

        + desc 表名

删除表

    - drop table 表名

插入数据

    - 第一种:全表字段插入

        + insert into 表名 values (val1,val2...)

        + 插入的字段类型和顺序必须与表的字段类型与顺序保持一致,个数是针对全表字段的插入

    - 指定表字段的插入

        + insert into 表名 (字段1,字段2...) values (val1,val2...)

        + 插入的数据的顺序要与声明的字段名的顺序一致

        + 类型也要一致,个数也要一致

总结

sql 语句 结尾必须要有  分号

  • 启动:到安装的bin文件下 或者用可视化工具
  • 1: 登录:

    - mysql   -u root -p

    - 密码

    - mysql 连接 -u用户名root -p

    - mysql  -hlocalhost -uroot -p

    - mysql yanqi -uroot -p

  • 2: 查看有哪些数据库

    - show databases;

  • 3: 切换数据库

    - use 数据库名;

  • 4: show tables;  

    - 没有表: 必须创建表 create table ceshi(id int,name varchar(20));  

  • 5: 查看表字段明细

    - desc 表名;

    - desc user;

  • 6: 插入数据

    - insert into 表名 (字段1,..) values (值1...)

    - 插入的是数据,表中字段;以及字段的类型;是在创建表示决定的

  • 7 更新操作

    - UPDATE 表名 SET 字段1 = 表达式,[,字段2 = 表达式] [WHERE express布尔值]

    - update student set tmp = 20+1,sex = sex where 1=1;

  • 8 删除操作

    - DELETE FROM 表名 [,WHERE exr布尔值]

    - delete from student where name = '马蓉';

  • 9 truncate和delete的区别

    - truncate table 表名

    delete会一条一条的删 自增id保留

    truncate先摧毁整张表,再创建一张和原来的表结构一模一样的表

    truncate在效率上比delete高

    truncate只能删除整表的数据,也就是格式化。

    truncate会把自增id截断恢复为1

查询语句

  • DISTINCT 去重,尽量不要根据* 来去重

    - select distinct name,age from student;

    - select * name,age fromo student

  • 查询语句可以指定多个字段查询,也可以使用* 查询

    - 在企业中,使用SQL查询* 是会拉低查询效率的 ,建议少用* 查询

条件查询

  • select * from student where math > 66.6 or math < 66.6;

  • 语法:select * from 表 查询条件


> < <= >= = <>    大于、小于、大于(小于等于)、不等于

between...and 显示在某一区间的值

in(set) 显示在in列表中的值,例:in(100,200)

like ‘张pattern’ 模糊查询%

is null 判断是否为空

and 多个条件同时成立

or  多个条件任一成立

not 不成立,例:where not(salary>100)

模糊查询

    - 包含关select * from student where name like '%关%';

    - 以关开头select * from student where name like '关%';

    - 以关结尾select * from student where name like '%关';

  • 判断为空

    - select * from student where sex is not null;

聚合函数

  • 统计数量

    - count(星号)

  • 求和

    - sum(math+english+chinese)

  • 平均值

    - avg(math+english+chinese)

  • 找最值

    - max(列)/min(列)/max(math+english+chinese)

排序(order by)

  • select * from student where 1= 1 order by chinese desc,math desc,english desc;

分组(group by)

  • 如果聚合函数只有一行,需要对于不同的集合做聚合运算就加上分组

    - select zu,count(*) from student group by zu;

分页(limit)


    - `select * from student limit 10,5;`

    - limit offset(起始位置) count(显示多少个)

    - limit 使用的时候,offset0开始

    - 豆瓣: offset (当前页-1* 页显示数

        + count : 页显示数

默认端口(数据库汇总)

  • oracle:1521

  • sqlserver :1433

  • mysql :3306

  • mongodb :27017

  • DB2 : 50000

mysql中间使用

使用步骤

  • 1:导入mysql 中间件  const mysql = require('mysql');

  • 2: 创建连接池  const pool =mysql.createPool()

  •  3: 取出链接  pool.getConnection()

  • 4:操作数据 pool.query()

  •  5:释放链接  release()

  • 6:操作数据库完毕(err/success) 做什么(交给外部处理函数)

mysql中间件操作mysql 数据库方法封装





const pool  = mysql.createPool({

  connectionLimit : 10,// 一次性

  host            : 'localhost',

  user            : 'root',

  port            : '3306',

  password        : '123456',

  database        : 'yanqi'

});

 

var db = {};




db.p = function (sql,parm,callback) {

    // getConnection() 从连接池中获取链接

    // 回参一:抛出错误

    // 回参二:获取到的链接

    pool.getConnection(function(error,connection){

        if(error){

            callback(error);// 错误异常处理

            return // 获取链接池失败 以下不执行了

        }

     // query()  往数据库发送请求的

     // 参一:sql语句

     // 参二:回调函数:处理数据库的响应

     // 回参一:抛出错误异常(错误优先原则)

     // 回参二:数据库响应的正确结果  

         connection.query(sql,parm,function(error,results){

             console.log(`${sql}===>${parm}`);

             //  --> 释放链接

             connection.release();

            //  ----> 将操作数据库结果发送给外界让外处理

             callback(error,results);// callback 是对查询结果的处理

         })

    })

}

getConnection()
query()

作用:通过连接池去操作去操作数据库

 参一: sql 语句   换句话,如果想对数据是增删改查操作,就写对应的sql 语句

 参二: 回调函数:sql 语句执行的结果

——>  回参一: 返回的是错误信息

——>  回参二:sql 执行成功 输出的结果