MySQL 常用语句

来源:互联网 发布:python web 非阻塞 编辑:程序博客网 时间:2024/05/16 06:29
  • MySQL语言的分类

    • DDL(Data Definition Language):数据定义语言

      • create(创建),drop(移除),alter(改变 )等对数据库,表,索引的数据对象进行定义

        -- 创建数据库/表CREATE DATABASE/TABLE 数据库名/表名;-- 删除数据库/表DROP DATABASE/TABLE 数据库名/表名;
      • ALTER 用法总结
        -- 删除列ALTER TABLE 【表名字】 DROP 【列名称】;-- 增加列ALTER TABLE 【表名字】 ADD 【列名称】 INT NOT NULL  COMMENT '注释说明';-- 修改列的类型信息ALTER TABLE 【表名字】 CHANGE 【列名称】【新列名称(这里可以用和原来列同名即可)】 BIGINT NOT NULL  COMMENT '注释说明';-- 重命名列ALTER TABLE 【表名字】 CHANGE 【列名称】【新列名称】 BIGINT NOT NULL  COMMENT '注释说明';-- 重命名表ALTER TABLE 【表名字】 RENAME 【表新名字】;-- 删除表中主键Alter TABLE 【表名字】 drop primary key;-- 添加主键ALTER TABLE sj_resource_charges ADD CONSTRAINT PK_SJ_RESOURCE_CHARGES PRIMARY KEY (resid,resfromid);-- 添加索引ALTER TABLE sj_resource_charges add index INDEX_NAME (name);-- 添加唯一限制条件索引ALTER TABLE sj_resource_charges add unique emp_name2(cardnumber);-- 删除索引alter table tablename drop index emp_name;
    • DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据)

      • insert(添加),一次添加多条
        语法:

        insert into tablename(col_name1,col_name2,....) values (value1,value2..........value_n),(value1,value2..........value_n),(value1,value2..........value_n);
      • update(修改)
        语法:
        update 表名 set 列名1 = 值1,列名2 = 值2 ... 列名n = 值n
      • delete (删除)
        语法:

        DELETE FROM 表名 [WHERE 从句]
      • select(查询)
        语法:
        SELECT 列名1,列名2... FROM 表名

        • 子查询:

          • 子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从mysql4.1开始引入,在SELECT子句中先计算子查询,子查询的结果作为外层另一个查询条件,查询可以基于一个表或者多个表。

            例如:

            -- FROM 后面括号里的就是子表 a ,该查询结果为 子表a 里的内容SELECT a.* FROM (SELECT * FROM 表名a) AS a
        • 条件查询:where关键字可以显示用户指定的数据

          • 语法
            SELECT 列名 FROM WHERE 逻辑运算条件
          • 逻辑运算符
            = ,>, < , >= ,<= ,!= , <>
          • 模糊匹配(LIKE关键字)
            例如:

            -- 查找 student表name列中 含有 “abc”的数据SELECT name FROM student WHERE name LIKE '%abc%'
        • 其它查询
          • 详见—–》MySQL常用查询语句
    • DCL:数据控制语言

      • 主要是DBA用来管理系统中的对象权限:
      -- 创建用户:-- 语法:`CREATE USER 用户名@地址 IDENTIFIED BY ‘密码’;`CREATE USER user1@localhost IDENTIFIED BY123’;CREATE USER user2@’%’ IDENTIFIED BY123’;-- 给用户授权:-- 语法:GRANT 权限1, … , 权限n ON 数据库.* TO 用户名GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO user1@localhost;GRANT ALL ON mydb1.* TO user2@localhost;-- 撤销授权:-- 语法:REVOKE权限1, … , 权限n ON 数据库.* FORM 用户名REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;   --  查看用户权限-- 语法:SHOW GRANTS FOR 用户名SHOW GRANTS FOR user1@localhost;-- 删除用户-- 语法:DROP USER 用户名DROP USER user1@localhost;-- 修改用户密码UPDATE USER SET PASSWORD=PASSWORD('1234') WHERE User='user2' and Host=’localhost’;-- 新建用户远程连接mysql数据库grant all on *.* to admin@'%' identified by '123456' with grant option; flush privileges;--允许任何ip地址(%表示允许任何ip地址)的电脑用admin帐户和密码(123456)来访问这个mysql server。--注意admin账户不一定要存在。-- 支持root用户允许远程连接mysql数据库grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;flush privileges;