• MYSQL的操作命令


    一、御前

    1 win+R  DOS 输入 net start mtsql 和 net stop mysql 启动和停止Mysql 服务,也可通过计算机——管理——服务和应用程序——服务——MYSQL——右击

    启动mysql服务出现服务名无效的原因及解决方法【失败】

    问题原因:mysql服务没有安装。

    解决办法: 在 mysql bin目录下 以管理员的权限 执行 mysqld -install命令

    以管理员的权限 mysqld -remove ,卸载mysql服务

    2 登录和退出

    路径: DOS:mysql -uroot -p

    输入密码

    exit; 退出

    show databases; 查看数据库

    Command Line Client登录和退出

    3 常见操作

    h 或者 help;

    source D: est.sql 即执行test.sql文件

    4 图形 MYSQL Workbench

    另外介绍第三方 SQLyog

    二、数据库和表的基本操作

    1、MySQL支持的数据类型

    1)数值类型 字符串类型 日期和时间类型

    2)数据库基本操作

    CREATE DATABASE 数据库名称;

    SHOW DATABASE;

    SHOW CREATE DATABASE 数据库名称;    查看已经创建的数据库的创建信息

    CREATE DATABASE 数据库名称 CHARACTER SET gbk;    在创建数据库时指定编码方式

    USE 数据库名;

    ALTER DATABASE 数据库名称 DEFAULT CHARACTER SET 编码方式 COLLATE 编码方式_bin;编码方式为修改后的

    DROP DATABASE 数据库名称;

    3) 数据表的基本操作

    CREATE TABLE stu( stu_id INT(10),stu_name VARCHAR(50) );

    SHOW CREATE TABLE 表名;

    SHOW CREATE TABLE 表名G;格式化显示创建信息

    DESCRIBE 表名; 表的列相关信息

    ALTER TABLE 原表名 RENAME [TO] 新表名;

    ALTER TABLE 表名 CHANGE 原字段名 新字段名 新数据类型;

    ALTER TABLE 表名 MODIFY 字段名 新数据类型;

    ALTER TABLE 表名 ADD 新添字段名 数据类型;

    AlTER TABLE 表名 DROP 字段名;

    ALTER TABLE 表名 MODIFY 字段名1 数据类型 FIRST|AFTER 字段名2; 调整字段位置

    DROP TABLE 表名;

    三、表中数据的基本操作

    INSERT INTO 表名 (字段1,字段2)VALUES{值1,值2);

    INSERT INTO 表名 VALUES(值1,,值2); 为所有的字段都填上数据

    INSERT INTO 表名(字段名1,字段名2)VALUES(值1,值2);为指定字段添加数据

    INSERT INTO 表名[(字段名1,字段名2,…)]VALUES(值1,值2,…),…,(值1,值2,…);

    UPDATE 表名 SET 字段名1=值1 [字段名2=值2,…] WHERE ;

    DELETE FROM 表名 WHERE;删除指定的全部数据

    TRUNCATE [TABLE] 表名;删除表中的所有数据

    四 单表查询

    SELECT 字段名1,…字段名n FROM 表名;

    SELECT * FROM 表名;

    SELECT * FROM 表名 WHERE ;

    SELECT * FROM 表名 WHERE 条件表达式1 AND|OR 条件表达式2 ;

    SELECT * FROM 表名 WHERE 字段名 [NOT] IN (元素1,元素2,…,元素n) ;

    SELECT * FROM 表名 WHERE 字段名 IS [NOT] NULL ;

    SELECT * FROM 表名 WHERE 字段名 [NOT] BETWEEN 值1 AND 值2 ;

    SELECT * FROM 表名 WHERE 字段名 [NOT] LIKE '匹配字符串';其中%表示n个字符,_表示一个

    SELECT DISTINCT 字段名 FROM 表名 ;去重复

    SELECT * FROM 表名 WHERE 字段1 [ASC|DESC],字段2 [ASC|DESC] ;ASC升序

    2)聚合函数

    SELECT COUNT (*|1|列名) FROM 表名;

    SELECT SUM (字段名) FROM 表名;

    SELECT AVG (字段名) FROM 表名;

    SELECT MAX (字段名) FROM 表名;

    SELECT MIN (字段名) FROM 表名;

    3)分组

    SELECT 字段名1,…字段名n FROM 表名 GROUP BY 字段名1,字段名2,…[HAVING 条件表达式];

    4)分页

    SELECT 字段名1,字段名2,…FROM 表名 LIMIT [m,]n;【m代表起始数目,n代表个数】

    五 数据的完整性

    ALTER TABLE 表名 ADD PRIMARY KEY(列名);主键 不空 不重

    或者 CREATE TABLE 表名 (字段名 数据类型 PRIMARY KEY);

    ALTER TABLE 表名 ADD UNIQUE(列名);唯一约束

    或者 CREATE TABLE 表名 (字段名 数据类型 UNIQUE);

    ALTER TABLE 表名 ADD PRIMARY KEY AUTO_INCREMENT(列名);自增

    或者 CREATE TABLE 表名 (字段名 数据类型 AUTO_INCREMENT);

    2)索引

    AlTER INDEXE 索引名 ON  表名(字段名[(长度)]);

    或者 CREATE TABLE 表名 (字段名 数据类型 ,INDEX [索引名] (字段名[(长度)]));

    唯一索引:【不可有重复值】

    在普通的INDEX 前加 UNIQUE

    3)域完整性

    ALTER TABLE  表名 MODIFY 字段名 数据类型 NOT NULL,…;非空约束

    或者 CREATE TABLE 表名 (字段名 数据类型 NOT NULL,);

    ALTER TABLE  表名 MODIFY 字段名 数据类型 DEFAULT 默认值;默认值约束

    或者 CREATE TABLE 表名 (字段名 数据类型 DEFAULT 默认值,);

    4)引用完整性

    ALTER TABLE 表名 ADD FOREIGN KEY(外键字段名) REFERENCES 主表表名(主键字段名);

    CREATE TABLE 表名 (字段名 数据类型,FOREIGN KEY(外键字段名) REFERENCES 主表表名(主键字段名));

    ALTER TABLE 表名 DROP FOREIGN KEY 外键名;

    六、多表查询

    1)合并结果集

    SELECT * FROM test1 UNION SELECT * FROM test2;会过滤重复数据

    SELECT * FROM test1 UNION ALL SELECT * FROM test2;不会过滤重复数据

    2)连接查询

    SELECT 查询字段 FROM 表1 CROSS JOIN 表2 WHERE ;笛卡尔积

    SELECT 查询字段 FROM 表1 [INNER] JOIN 表2 ON 表1.关系字段=表2.关系字段 Where  ;内连接

    SELECT 查询字段 FROM 表1 LEFT [OUTER] JOIN 表2 ON 表1.关系字段=表2.关系字段 Where ;左外连接

    SELECT 查询字段 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 表1.关系字段=表2.关系字段 Where ;右外连接

    SELECT 查询字段 FROM 表1 [别名] JOIN 表2 [别名] ON 表1.关系字段=表2.关系字段 JOIN 表 m ON…;多表

    SELECT 查询字段 FROM 表1 [别名] NATURAL JOIN 表2 [表名];自然连接 列名和数据类型相同的字段自动匹配

    SELECT 查询字段 FROM 表1 [别名] NATURAL [LEFT|RIGHT] JOIN 表2 [表名];

    SELECT 查询字段 FROM 表名 [别名1],表名[别名2] WHERE 查询条件;自连接

    3)子查询

    SELECT * FROM emp WHERE sal>(SELECT sal FROM emp WHERE ename='JONES');子查询做条件

    SELECT e.ename,e.sal,d.dname,d.loc FROM emp e,(SELECT dname,loc,deptno FROM dept)d Where

    e.deptno=d.deptno AND e.empmo=7788;子查询做表

    七、常用函数

    1)字符串函数

    ASCII();

    CONCAT();

    INSERT();

    LEFT();

    RIGHT();

    LENGTH();【占用字节】

    2)数学函数

    ABS();

    MOD();

    PI();

    RAND();

    ROUND();

    TRUNCATE();【保留指定位数的结果】

    3)日期和时间函数

    DAY();

    WEEK();

    MONTH();

    YEAR();

    NOW();

    4)格式化函数

    FORMAT();

    DATE_FORMAT();

    5)系统信息函数

    DATABASE();

    USER();

    SYSTEM_USER();

    VERSION();

    八、视图

    SELECT Drop_priv FROM mysql.user WHERE User='root';查询用户对视图权限

    CREATE VIEW view_emp(id,name,sex,age,department) AS SELECT id,name,sex,age,department FROM emp;还有一些可选的权限条件,用到再百度吧

    DESCRIBE 视图名;视图字段信息

    DESC 视图名;

    SHOW TABLE STATUS LIKE '视图名';视图的基本信息

    SHOW CREATE VIEW 视图名;视图详细信息

    CREATE OR REPLACE VIEW view_emp_detail(id,name,sex) AS SELECT id,name,sex FROM emp;修改

    ALTER VIEW view_emp AS SELECT name,age FROM emp;修改

    UPDATE 视图名 SET 字段名1=值1 [字段名2=值2,…] [WHERE 条件表达式];

    INSERT INTO view_emp VALUES (值1,值2,……);

    DELETE FROM 表名 [条件表达式];删除数据

    DROP VIEW [IF EXISTS] 视图名 [,视图2]… [RESTRICT|CASCADE];删除视图

    九、存储过程

    1 查看用户是否拥有创建存储过程的权限

    SELECT Create_routine_priv FROM mysql.user Where User='root';

    CREATE PROCEDURE sp_name ([proc_parameter[…]]) [characteristic…] routine_body;创建

    SHOW PROCEDURE STATUS [LIKE 'pattern'];查看存储过程的状态

    SHOW CREATE PROCEDURE sp_name;查看存储过程的创建信息

    SELECT * FROM information_schema.Routines WHERE ROUTINE_NAME='SP_SEARCH' AND ROUTINE_TYPE='PROCEDURE'G;

    SELECT Alter_routine_priv FROM mysql.user Where User='root';查看修改权限

    ALTER PROCEDURE sp_name [characteristic…];修改

    DROP PROCEDURE [IF EXISTS] sp_name;删除

    具体的  局部变量 定义条件 处理程序 光标的使用 流程控制(IF CASE WHILE) 自己看吧

    2事件调度器

    数据库安自定义的时间周期来出发某种操作,可以理解为时间触发器。

    SELECT @@event_scheduler;查看是否已经开启时间调度器

    SET GLOBAL event_scheduler=ON;开启

    使用:

    CREATE
    [DEFINER = { user | CURRENT_USER }]
    EVENT
    [IF NOT EXISTS]
    event_name
    ON SCHEDULE schedule
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE | DISABLE ON SLAVE]
    [COMMENT 'comment']
    DO event_body;

    schedule:
    AT timestamp [+ INTERVAL interval] ...
    |EVERY interval
    [STARTS timestamp [+ INTERVAL interval] ...]
    [ENDS timestamp [+ INTERVAL interval] ...]
     

    interval:
    quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
    WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
    DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

    来自 <https://www.cnblogs.com/geaozhang/p/6821692.html>

    十、触发器

    1 创建触发器

    CREATE TRIGGER trigger_name【触发器名称】

     triggername_time【BEFORE|ALTER】

    trihher_event【INSERT|UPDATE|DELETE】 on tablename

    FOR EACH ROW

    trigger_stmt;

    2查看触发器

    SHOW TRIGGERSG【查看所有触发器】

    DESC information_schema.triggers;【查看触发器表】

    SELECT * FROM information_schema.triggers WHERE trigger_name='t_afterdelete_on_test1'G;【查看某一个触发器具体信息】

    DROP TRIGGER [IF EXISTS] [schema_name.].trigger_name;删除触发器

    十一、数据库事务

    START TRANSACTION;开启事务

    中间写语句

    COMMIT;提交事务

    ROLLBACK;事务回滚——在提交之前

    2事务的属性——数据库是多线程并发访问的

    ACID:原子性 一致性 隔离性 持久性

    事务的隔离级别:

    READ UNCOMMITTED【脏读 读未提交】-所有事务都可看到其他未提交事务

    READ COMMITTED【不可重复读 读已提交】—一个事务只能看到已经提交事务改变

    REPEATABLE READ 【幻读 可重复度】——同一事务多个实例并发执行同样数据

    SERIALIZABLE 【可串行化】-强制事务排序使之不可能互相冲突

    SELECT @@tx_isolation;查看当前会话隔离级别

    SET SESSION TRANSACTION ISOLATION LEVEL (READ UNCOMMITTED)|(READ COMMITTED)|(REPEATABLE READ)|(SERIALIZABLE);设置会话隔离级别

    3 分布式事务

    XA {START|BEGIN} xid [JOIN|RESUME] 开始一个分布式事务

    XA END xid [SUSPEND [FOR MIGRATE]] 操作分布式事务

    XA PREPARE xid 准备提交事务

    XA COMMIT xid [ONE PHASE] 提交事务

    XA ROLLBACK xid 回滚事务

    XA RECOVER [CONVERT XID] 查看处于PREPARE状态的事务

    十二、MYSQL 高级操作

    1 数据的备份

    mysql -uusername -ppassword dbname>path:filename.sql;

    SQLyog 图形界面sql文件形式转储

    2 数据的还原

    mysql -uusername -ppassword dbname<path:filename.sql;

    SQLyog 图形界面 执行SQL脚本

    3 权限管理【百度去吧】

    MYSQL的权限与user表

    授予权限:

    查看权限:SHOW GANTS FOR ‘username’@‘hostname’

    收回权限:

    4 MYSQL分区【具体自己看书去吧】

    RANGE分区 LIST分区 HASH分区 KEY分区

  • 相关阅读:
    定义通用类型,便于移植和32位、64位的编译
    映射密码的加密,解密以及暴力破解
    位移密码的加密,解密以及暴力破解
    TCP三次握手和四次挥手通俗理解
    git常用命令
    pip及npm换源
    win10安装Docker并换国内源
    搜索引擎工作原理
    wsgi_uwsgi_nginx理论知识
    课程全文检索接口
  • 原文地址:https://www.cnblogs.com/weimingai/p/11458591.html
Copyright © 2020-2023  润新知