zoukankan      html  css  js  c++  java
  • MySQL基本语法

    MySQL所有的代码全部封装,是需要固定的语法去调用即可。因此,下面给出一些常用的语法结构,以供查找调用。
    一:基本操作
      打开运行:  services.msc//最好是管理员模式运行
      启动Mysql:  net start mysql
      启动Mysql:  net stop mysql
      登录本地数据库:  mysql -u root -p
      创建数据库:CREATE DATABASE [IF NOT EXIETS] db_name [create_specification [,create_specification]....] ;
      查询数据库: SHOW DATABASES;
      显示数据库细节: SHOW CREATE DATABASE db_mane;
      查看数据库存放地址:  C:ProgramDataMySQLMySQL Server 8.0Data
      删除数据库:  DROP DATABASE bd_name;
      选择数据表:  use db_name;
      查看当前所选择的数据库:  select database();

    二、数据库中表的操作

    1.创建数据表
        CREATE TABLE table_name
        (
            field1 datetype,
            field2 datetype,
            ......
            fieldn datetype,
        );character set 字符局 collate 校对规则
        //field:指定列名 datatype:指定列类型
        //创建一个员工表
        CREATE TABLE employee
        (    
            id int,
            name varchar(20),
            gender char(1),
            brithday date,
            ebtry_date date,
            job varchar(50),
            salay double,
            resume text
        );
        
    2.查看表结构:
        使用:SHOW TABLES;
        使用:describe:desc table_name;
        查看建表语句:SHOW CREATE TABLE table_name;
    3.修改数据表
        3.1 修改表名
            ALTER TABLE old_table_name RENAME [TO] new_table_name;
        3.2 修改字段名
            ALTER TABLE table_name CHANGE old_field new_field datetype;
        3.3 修改字段的数据类型
            ALTER TABLE table_name MODIFY field datetype;
        3.4 添加字段
            ALTER TABLE table_name ADD field datetype;
        3.5 删除字段
            ALTER TABLE table_name DROP field;
        3.6 修改字段的排列位置
            将field1放到表的最前面:ALTER TABLE table_name MODIFY field1 datetype FIRST;
            将field1放到field2后面:ALTER TABLE table_name MODIFY field1 datetype AFTER field2 ;
        3.7 删除数据表
            DEOP table_name;
        3.8 修改表的字符集编码     
            ALTER TABLE table_name character set XXX;
    4.表的约束
        4.1 主键约束——唯一标识表中的信息,为了快速查找表的信息
            1)单字段主键: 字段名 数据类型 PRIMARY KEY
            2)多字段之间:PRIMARY KEY (字段1,字段名2,...,字段名n)
        4.2 非空约束——非空约束是指字段的值不能用NULL;
            field dataType NOT NULL;
        4.3 唯一约束——保证数据表中的字段的唯一性
            field dataType UNIQUE;
        4.4 默认约束——默认约束用于给数据表中的字段指定默认值
            field dataType DEFAULT 默认值;
    5.设置表的字段值自动增加
        数据表中,若想为表中插入的新记录自动生成唯一的ID,可以使用AUTO_INCREMENT约束实现
        基本语法格式为:field dataType AUTO_INCREMENT;
    6.索引——在MySQL数据库中,允许建立索引加快数据表的查询和排序
        6.1 索引分类
            1)普通索引:由KEY或INDEX定义的索引
            2)唯一性索引:由UNIQUE定义的索引
            3)全文索引:由FULLTXXT定义的索引
            4)单列索引:在表中单个字段上创建索引
            5)多列索引:在表中多个字段上创建索引
            6)空间索引:由SPATIAL定义的索引
        6.2 创建索引
            1)创建表的时候创建索引——简单、方便
                CREATE TABLE table_name(
                    字段名1 数据类型[完整的约束条件],
                    字段名2 数据类型[完整的约束条件],
                    .......
                    字段名n 数据类型[完整的约束条件],
                        字段名 数据类型
                        [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY
                            [别名](字段名x[(长度)]) [ASC|DESC]
                );
            2)使用CREATE INDEX语句在已经存在的表上创建索引
                CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名
                ON table_name(字段名[长度]) [ASC|DESC]
            3)使用ALTER TABLE语句在已经存在的表上创建索引
                ALTER TABLE table_name ADD[UNIQUE|FULLTEXT|SPATIAL] INDEX
                                索引名(字段名[长度]) [ASC|DESC]
        6.3 删除索引
            1)使用ALTER TABLE 删除索引
                ALTER TABLE table_name DROP INDEX 索引名
            2)使用DROP INDEX删除索引
                DROP INDEX 索引名 ON
    三 添加数据
        3.1 为表中所有字段添加数据
            1)INSERT语句中指定所有字段名
                INSERT INTO table_name (字段名1,字段名2,...)
                            VALUES(值1,值2,...);
            2)INSRET语句不指定字段名
                INSERT INSERT INTO table_name VALUES(值1,值2,...);
            //方式2要求插入值的顺序与字段名顺序一致,而方式1无要求
        3.2 为表中的指定字段添加数据
            INSERT INFO table_name(字段名1,字段名2,...)
                        VALUES(值1,值2,...);
        3.3 同时添加多条记录
            INSERT INTO table_name[(字段名1,字段名2,...)]
                VALUES(值1,值2,...),(值1,值2,...),
                .....
                (值1,值2,...);
    四 更新数据
        语法格式:
        UPDATE table_name
            set 字段名1=值1[,字段名2=值2,...]
            [WHERE 条件表达式];
            //WHERE条件表达式时可选择的,可以更新部分数据,也可以更新全部数据;

    五 删除数据
        语法格式:
        DELETE FROM table_name [WHERE 条件表达式];
        //WHERE条件表达式时可选择的,可以更新部分数据,也可以更新全部数据;
    六 单表查询
        6.1 简单查询
            使用SELECT语句
                SELECT [DISTINCT] * |字段名1,字段名2,...
                        FROM 表名
                        [WHERE 条件表达式1]
                        [GROUP BY 字段名 [HAVING 条件表达式2]]
                        [ORDER BY 字段名 [ASC|DESC]]
                        [LIMIT [OFFSET] 记录数];
                /*DISTINCT:可选参数,用于剔除查询结果中的重复数据
                  * |字段名1,字段名2,...:表示二者选择一个
                 GROUP BY:表示对查询的结果进行分组,可选参数;
                 ORDER BY:表示对查询的结果按照指定的字段名进行排序,可选参数;
                 LIMIT:用于限制查询结果的数量,可选参数;
                 OFFSET:偏移量,可选参数;
                */
        6.2 按条件查询
            1)带关系符查询(=,<,>,>=,<=,!=,<>)
                SELECT 字段名1,字段名2,...
                FROM table_name
                WHERE 条件表达式;
            2)带IN关键字查询
                SELECT *|字段名1,字段名2,...
                FROM table_name
                WHERE 字段名 [NOT] IN(元素1,元素2,...)
            3)带BETWEEN AND关键字的查询
                SELECT *|字段名1,字段名2,...
                FROM table_name
                WHERE 字段名 [NOT] BETWEEN 元素1 AND 元素2,
            4)空值查询
                SELECT *|字段名1,字段名2,...
                FROM table_name
                WHERE 字段名 IS [NOT] NULL;
            5)带DISTINCT关键字查询—起过滤作用
                SELECT DISTINCT 字段名 FROM table_name;
            6)带LIKE关键字查询-模糊查询
                SELECT 字段名1,字段名2,...
                FROM table_name
                WHERE 字段名 [NOT] LIKE '匹配字符串';
                /*
                "匹配字符串"指定用来匹配的字符串,可以是普通字符串,也可以是通配符
                a.通配符;
                  百分号(%)://('c%'表示以c开头的字符串)('c%d'表示以c开头、D结尾
                                的字符串)('c%'表示以包含C的字符串)
                  下划线(_):
                */
            7)带AND关键字的多条件查询
                SELECT *|字段名1,字段名2,...
                FROM table_name
                WHERE 条件表达式1 AND 条件表达式2 [...AND 条件表达式n]
            8)带OR关键字的多条件查询
                SELECT *|字段名1,字段名2,...
                FROM table_name
                WHERE 条件表达式1 OR 条件表达式2 [...OR 条件表达式n]
        6.3 高级查询
            1)聚合函数
                a.COUNT()函数——返回某列的函数
                  SELECT COUNT(*) FROM table_name;
                b.sum()函数——求和函数
                  SELECT SUM(字段名) FROM table_name;
                c.AVG()函数——用于求某个字段的平均值
                  SELECT AVG(字段名) FROM table_name;
                d.MAX()函数——用于求某个字段的最大值
                  SELECT MAX(字段名) FROM table_name;
                d.MIN()函数——用于求某个字段的最小值
                  SELECT MIN(字段名) FROM table_name;
            2)对查询结果排序
                SELECT 字段名1,字段名2,...
                FROM table_name
                ORDER BY 字段名1 [ASC|DESC],字段名1 [ASC|DESC],...
            3)分组查询
                SELECT 字段名1,字段名2,...
                FROM table_name
                GROUP BY 字段名1,字段名2,...[HAVIN 条件表达式]
    七.多表操作
        7.1 外键
            1)添加外键
                alter table table_name add constraint FK_ID foreign
                key(外键字段名) REFERNCES 外键表名(主键字段名);
            2)删除外键
                alter table table_name drop foreign key 外键名;
        7.2 连接查询
            1)交叉连接-查询所有可能的数据,包含很多错误
                SELECT * 表1 CROSS JION 表2;
            2)内连接-查询左边表有且右边表也有的数据
                SELECT查询字段 FROM 表1 [INNER] 表2
                ON 表1.关系字段=表2.关系字段;
            3)左外连接-在内连接基础上增加左表有而右表没有的数据
                SELECT查询字段 FROM 表1 LEFT 表2 ON
                表1.关系字段=表2.关系字段 WHERE 条件;
            4)右外连接-在内连接基础上增加右表有而左表没有的数据
                SELECT查询字段 FROM 表1 LEFT 表2 ON
                表1.关系字段=表2.关系字段 WHERE 条件;
            5)全外连接- 在内连接基础上增加右表有而左表和左表有而右表没有的数据
                //MySQL不支持查询
                SELECT查询字段 FROM 表1 LEFT 表2 ON
                表1.关系字段=表2.关系字段 WHERE 条件;
        7.3 子查询
            一个查询语句嵌套在另一个查询语句内部的查询
            在操作符为:IN、EXISTS、ANY、ALL
            //EXIETS查询效率比IN高
    八 事务-要么一起完成,要么同时不完成
        8.1 事务管理
            开启事务:START TRANSACTION;  //这条语句后的SQL处于同一事务中
            提交事务:COMMIT;
            回滚数据:ROLLBACK;
            /*
              1)事务具有原子性、一致性、隔离性、持久性;
              2)事务一定需要进行提交操作,才真正的作用在数据库上;
              3)事务的回滚操作只能作用在未提交的事务上
            */
    九 存储过程——作用类似于JAVA语言中的方法
        9.1 创建存储过程
            CREATE PROCEDURE sp_name([proc_parameter])
            [characteristic...]routine_body
            /*
              CREATE PROCEDURE用来创建存储过程的关键字
              sp_name为存储过程的名称
              proc_parameter为指定存储过程的参数列表
              其列表形式如下
              [IN|OUT|INOUT]param_name type
            */
        9.2 调用存储过程
            CALL SP_name([parameter[,...]])
        9.3 修改存储过程
            ALTER {PROCEDURE|FUNCTION} sp_name[characteristic...]
        9.4 删除存储过程
            DROP {PROCEDURE|FUNCTION} sp_name

  • 相关阅读:
    jQuery.getJSON() – jQuery API
    打造个性化的Select(可编辑)(还不错,有一定实用价值)
    RMAN备份异机恢复并创建新DBID
    输出所有在给定范围内的水仙花数
    使用 ptstalk 诊断 MySQL 问题
    VC6.0 error LNK2001: unresolved external symbol _main解决办法
    Mysql备份
    在从1到n的正数中1出现的次数
    游标sql语句
    linux中如何改IP
  • 原文地址:https://www.cnblogs.com/tianliang94/p/10846768.html
Copyright © 2011-2022 走看看