zoukankan      html  css  js  c++  java
  • mysql数据库常见考点语句

    虽然有一款非常好用的可视化工具NAVICAT FOR MYSQ,但是必要的数据库语句还是要掌握的,

    下面我来介绍一个平时经常用到的一些语句。

    一、用户操作

    1、新建用户:
    
       CREATE USER name IDENTIFIED BY 'srm';
    
    2、更改密码:
    
       SET PASSWORD FOR name=PASSWORD('123456'); 

    二、数据库操作

    1、查看数据库:
    
        SHOW DATABASES;
    
    2、创建数据库:
    
        CREATE DATABASE db_name;  //db_name为数据库名
    
    3、使用数据库:
    
        USE db_name;
    
    4、删除数据库:
    
        DROP DATABASE db_name;                                                

    三、创建表

    1、创建表:
    
        CREATE TABLE table_name(
    
        id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,    //id值,无符号、非空、递增——唯一性,可做主键。
    
        username  VARCHAR(60) NOT NULL
    
        password TINYINT UNSIGNED NOT NULL DEFAULT 0,    //设置默认列值
    
        PRIMARY KEY(id)
    
        )ENGINE=InnoDB    //设置表的存储引擎,一般常用InnoDB和MyISAM;InnoDB可靠,支持事务;MyISAM高效不支持全文检索
    
        DEFAULT charset=utf8;  //设置默认的编码,防止数据库中文乱码
    
       
    2、复制表   

      CREATE TABLE tb_name2 SELECT * FROM tb_name; 或者部分复制: CREATE TABLE tb_name2 SELECT id,name FROM tb_name;
    3、创建临时表:
    
        CREATE TEMPORARY TABLE tb_name(这里和创建普通表一样);
    
    4、查看数据库中可用的表:
    
        SHOW TABLES;
    
    5、查看表的结构:
    
        DESCRIBE tb_name;
    
        也可以使用:
    
        SHOW COLUMNS in tb_name;     //from也可以
    
    6、删除表:
    
        DROP [ TEMPORARY ] TABLE [ IF EXISTS ] tb_name[ ,tb_name2.......];
    
        实例:
    
        DROP TABLE IF EXISTS tb_name;
    
    7、表重命名:
    
        RENAME TABLE name_old TO name_new;
    
        还可以使用:
    
        ALTER TABLE name_old RENAME name_new;

    四、修改表

    更改表结构:
    
        ALTER TABLE tb_name ADD[CHANGE,RENAME,DROP] ...要更改的内容...
    
        实例:
    
        ALTER TABLE tb_name ADD COLUMN address varchar(80) NOT NULL;
    
        ALTER TABLE tb_name DROP address;
    
        ALTER TABLE tb_name CHANGE score score SMALLINT(4) NOT NULL;

    五、插入数据

    1、插入数据:
    
        INSERT INTO tb_name(id,name,score)VALUES(NULL,'张三',140),(NULL,'张四',178),(NULL,'张五',134);
    
        这里的插入多条数据直接在后边加上逗号,直接写入插入的数据即可;主键id是自增的列,可以不用写。
    
    2、插入检索出来的数据:
    
        INSERT INTO tb_name(name,score) SELECT name,score FROM tb_name2; 

    六、更新数据

    1、指定更新数据:
    
        UPDATE tb_name SET score=189 WHERE id=2;
    
        UPDATE tablename SET columnName=NewValue [ WHERE condition ]  

    七、删除数据

    1、删除数据:
    
        DELETE FROM tb_name WHERE id=3;

    八、条件控制

    1、WHERE 语句:
    
        SELECT * FROM tb_name WHERE id=3;
    
    2、HAVING 语句,having字句可以让我们筛选分组之后的各种数据
    
        SELECT * FROM tb_name GROUP BY score HAVING count(*)>2
    
    3、相关条件控制符: 
    
        =、>、<、<>、IN(1,2,3......)、BETWEEN a AND b、NOT
    
        AND 、OR
    
        Linke()用法中      %  为匹配任意、  _  匹配一个字符(可以是汉字)
    
        IS NULL 空值检测

     九、MySQL的正则表达式

    1、Mysql支持REGEXP的正则表达式:
    
        SELECT * FROM tb_name WHERE name REGEXP '^[A-D]'   //找出以A-D 为开头的name
    
    2、特殊字符需要转义。

     十、MySQL的一些函数

    1、字符串链接——CONCAT()
    
        SELECT CONCAT(name,'=>',score) FROM tb_name
    
    2、数学函数:
    
        AVG、SUM、MAX、MIN、COUNT;
    
    3、文本处理函数:
    
        TRIM、LOCATE、UPPER、LOWER、SUBSTRING
    
    4、运算符:
    
        +、-、*、
    
    5、时间函数:
    
        DATE()、CURTIME()、DAY()、YEAR()、NOW().....       

     十一、分组查询

    1、分组查询可以按照指定的列进行分组:
    
        SELECT COUNT(*) FROM tb_name GROUP BY score HAVING COUNT(*)>1;
    
    2、条件使用Having;
    
    3、ORDER BY 排序:
    
        ORDER BY DESC|ASC    =>按数据的降序和升序排列

    十二、键值操作

    # 添加主键
     
    ALTER TABLE n ADD PRIMARY KEY (id);
     
    ALTER TABLE n ADD CONSTRAINT pk_n PRIMARY KEY (id); # 主键只有一个,所以定义键名似乎也没有什么用
     
    # 删除主键
     
    ALTER TABLE n DROP PRIMARY KEY ;
     
    # 添加外键
     
    ALTER TABLE m ADD FOREIGN KEY (id) REFERENCES n(id); # 自动生成键名m_ibfk_1
     
    ALTER TABLE m ADD CONSTRAINT fk_id FOREIGN KEY (id) REFERENCES n(id); # 使用定义的键名fk_id
     
    # 删除外键
     
    ALTER TABLE m DROP FOREIGN KEY `fk_id`;
     
    # 修改外键
     
    ALTER TABLE m DROP FOREIGN KEY `fk_id`, ADD CONSTRAINT fk_id2 FOREIGN KEY (id) REFERENCES n(id); # 删除之后从新建
     
    # 添加唯一键
     
    ALTER TABLE n ADD UNIQUE (name);
     
    ALTER TABLE n ADD UNIQUE u_name (name);
     
    ALTER TABLE n ADD UNIQUE INDEX u_name (name);
     
    ALTER TABLE n ADD CONSTRAINT u_name UNIQUE (name);
     
    CREATE UNIQUE INDEX u_name ON n(name);
     
    # 添加索引
     
    ALTER TABLE n ADD INDEX (age);
     
    ALTER TABLE n ADD INDEX i_age (age);
     
    CREATE INDEX i_age ON n(age);
     
    # 删除索引或唯一键
     
    DROP INDEX u_name ON n;
     
    DROP INDEX i_age ON n;

    十三、联表查询

    # 内联接,*的位置不可以放公共字段,因为不知道要的哪个
     
    SELECT * FROM m INNER JOIN n ON m.id = n.id;
     
    # 左外联接,右边表中不满足指定的条件时,会在结果中以 NULL 呈现
     
    SELECT * FROM m LEFT JOIN n ON m.id = n.id;
     
    # 右外联接
     
    SELECT * FROM m RIGHT JOIN n ON m.id = n.id;
     
    # 交叉联接
     
    SELECT * FROM m CROSS JOIN n; # 标准写法
     
    SELECT * FROM m, n;
     
    # 类似全连接full join的联接用法
     
    SELECT id,name FROM m
     
    UNION
     
    SELECT id,name FROM n;

    十四、聚合函数

    SELECT count(id) AS total FROM n; # 总数
     
    SELECT sum(age) AS all_age FROM n; # 总和
     
    SELECT avg(age) AS all_age FROM n; # 平均值
     
    SELECT max(age) AS all_age FROM n; # 最大值
     
    SELECT min(age) AS all_age FROM n; # 最小值
     

    十五、索引

           索引,在关系数据库中,是一种单独的、物理的对数据库表中的一列或多列的值进行排序的一种存储结构。

    它是某个表中一列或若干列的集合和相应的指向表中物理标识。这些值得逻辑页的逻辑指针清单。索引的作用

    相当于图书的目录,可以根据页码快速找到所找的内容。数据库根据索引找到特定值,然后顺指针找到该值的

    行,这样可以使对应于表的sql语句执行的更快,可以快速访问数据库中的特定信息。

    十六、b+树

         B+树是一种树数据结构,通常用于数据库和操作系统的文件系统中。B+树的特点是能够保持数据稳定有序,

    其插入与修改拥有较稳定的对数时间复杂度。B+树元素自底向上插入,这与二叉树恰好相反。

    参考自:https://blog.csdn.net/c361604199/article/details/79479398?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf

  • 相关阅读:
    函数进阶:闭包、装饰器、列表生成式、生成器、迭代器
    函数基础:内置函数
    Python函数基础---参数、变量
    python函数基础:嵌套函数、作用域、匿名函数、高阶函数、递归函数
    三元运算、文件操作
    Python终端如何输出彩色字体
    文件处理: read、readline、 readlines()
    16进制、编码问题
    JSON 操作与转化
    高并发和大型网站架构相关
  • 原文地址:https://www.cnblogs.com/mvpmvp/p/13604657.html
Copyright © 2011-2022 走看看