何小豆儿在此 发表于 2024-11-19 08:59:37

【MySQL】MySQL 利用全教程

MySQL 利用全教程

                           先容

                     MySQL 是一种广泛利用的开源关系型数据库管理系统(Relational Database Management System),它基于 Structured Query Language(SQL)进行数据管理,允许用户存储、检索、更新和删除数据库中的数据。通过提供高性能、可扩展性以及可靠性,MySQL 被广泛应用于各种规模的数据驱动网站和应用,支持多线程、多用户操纵,并能够处置惩罚大型数据库,是构建动态网站和应用步伐的紧张后端组件。
                      一个关系型数据库由一个或数个表格组成,如下所示的一个表格
    name ▼ 键            ▼ 列(col)
┌┈┈┈┈┬┈┈┈┈┈┈┈┈┬┈┈┈┈┈┈┬┈┈┈┈┈┈┈┐
┆ id ┆ name   ┆ uid┆ level ┆◀ 表头header
├┈┈┈┈┼┈┈┈┈┈┈┈┈┤┈┈┈┈┈┈┤┈┈┈┈┈┈┈┤
┆1 ┆ mysql┆ 0    ┆ 3   ┆
├┈┈┈┈┼┈┈┈┈┈┈┈┈┤┈┈┈┈┈┈┤┈┈┈┈┈┈┈┤
┆2 ┆ redis┆ 12   ┆ 1   ┆◀ 行 row
└┈┈┈┈┴┈┈┈┈┈┈┈┈┴┈┈┈┈┈┈┴┈┈┈┈┈┈┈┘
    redis ▲ 值


[*]表头(header) 每一列的名称
[*]列(col) 具有相同数据范例的数据的集合
[*]行(row) 每一行用来描述某个人/物的详细信息
[*]值(value) 行的详细信息,每个值与该列数据范例相同
[*]键(key) 用来识别某个特定的人/物的方法,有唯一性
      登录 MySQL

       # 默认用户名<root>,-p 是密码,
# ⚠️参数后面不需要空格
mysql -h 127.0.0.1 -u <用户名> -p<密码>
mysql -D 数据库名 -h 主机名 -u 用户名 -p
mysql -h <host> -P <端口号> -u <user> -p
mysql -h <host> -u <user> -p
            常用的

         数据库 Database

       :-:-CREATE DATABASE db ;创建数据库SHOW DATABASES;列出数据库USE db;切换到数据库CONNECT db ;切换到数据库DROP DATABASE db;删除数据库 表 Table

:-:-SHOW TABLES;列出当前数据库的表SHOW FIELDS FROM t;表的列表字段DESC t;表现表格结构SHOW CREATE TABLEt;表现创建表sqlTRUNCATE TABLEt;删除表中的所有数据DROP TABLEt;删除表格 Proccess

:-:-show processlist;列出历程kill pid;杀死历程      查看 MySQL 信息

       # 显示当前mysql的version的各种信息
mysql> status;
# 显示当前mysql的version信息
mysql> select version();
# 查看 MySQL 端口号
mysql> show global variables like 'port';
            退出 MySQL 会话

       mysql> exit
    退出 quit; 或 \q; 一样的效果
            备份

       创建备份
    mysqldump -u user -p db_name > db.sql
    导出不带架构的数据库
    mysqldump -u user -p db_name --no-data=true --add-drop-table=false > db.sql
      恢复备份
    mysql -u user -p db_name < db.sql
            MySQL 示例

                      管理表格

         创建一个包含三列的新表
      CREATE TABLE t (
    id    INT,
    nameVARCHAR DEFAULT NOT NULL,
    price INT DEFAULT 0
    PRIMARY KEY(id)
);
      从数据库中删除表 t
      DROP TABLE t ;
      向表中添加新列
      ALTER TABLE t ADD column;
      从表中删除列 c
      ALTER TABLE t DROP COLUMN c ;
      添加束缚
      ALTER TABLE t ADD constraint;
      删除束缚
      ALTER TABLE t DROP constraint;
      将表从 t1 重命名为 t2
      ALTER TABLE t1 RENAME TO t2;
      将列 c1 重命名为 c2
      ALTER TABLE t1 CHANGE c1 c2 datatype;
ALTER TABLE table_name RENAME COLUMN c1 TO c2;
      将列 c1 的数据范例改为 datatype
      ALTER TABLE t1 MODIFY c1 datatype;
      删除表中的所有数据
      TRUNCATE TABLE t;
                        从表中查询数据

         从表中查询列 c1、c2 中的数据
      SELECT c1, c2 FROM t
      查询表 t 中的所有行和列
      SELECT * FROM t
      查询数据并利用条件筛选行
      SELECT c1, c2 FROM t
WHERE condition      查询表中的不同行
      SELECT DISTINCT c1 FROM t
WHERE condition
      按升序或降序对效果集排序
      SELECT c1, c2 FROM t
ORDER BY c1 ASC       跳过行的偏移并返回下 n 行
      SELECT c1, c2 FROM t
ORDER BY c1 LIMIT n OFFSET offset      利用聚合函数对行进行分组
      SELECT c1, aggregate(c2)
FROM t
GROUP BY c1
      利用 HAVING 子句筛选组
      SELECT c1, aggregate(c2)
FROM t
GROUP BY c1
HAVING condition                        从多个表查询

               内部连接 t1 和 t2
      SELECT c1, c2 FROM t
1INNER JOIN t2 ON condition      左连接t1和t1
      SELECT c1, c2 FROM t
1LEFT JOIN t2 ON condition      右连接 t1 和 t2
      SELECT c1, c2 FROM t
1RIGHT JOIN t2 ON condition      执行完全外部连接
      SELECT c1, c2 FROM t
1FULL OUTER JOIN t2 ON condition      生成表中行的笛卡尔积
      SELECT c1, c2 FROM t
1CROSS JOIN t2      执行交叉连接的另一种方法
      SELECT c1, c2 FROM t
1, t2      利用 INNER Join 子句将 t1 连接到自身
      SELECT c1, c2
FROM t1 A
INNER JOIN t1 B ON condition
      利用 SQL 运算符,合并两个查询中的行
      SELECT c1, c2 FROM t
1UNION SELECT c1, c2 FROM t
2      返回两个查询的交集
      SELECT c1, c2 FROM t
1INTERSECTSELECT c1, c2 FROM t
2      从另一个效果会合减去一个效果集
      SELECT c1, c2 FROM t
1MINUSSELECT c1, c2 FROM t
2      利用模式匹配 % 查询行_
      SELECT c1, c2 FROM t
1WHERE c1 LIKE pattern      查询列表中的行
      SELECT c1, c2 FROM t
WHERE c1 IN value_list      查询两个值之间的行
      SELECT c1, c2 FROM t
WHEREc1 BETWEEN low AND high      检查表中的值是否为 NULL
      SELECT c1, c2 FROM t
WHEREc1 IS NULL                        利用 SQL 束缚

         将 c1 和 c2 设置为主键
      CREATE TABLE t(
    c1 INT, c2 INT, c3 VARCHAR,
    PRIMARY KEY (c1,c2)
);
      将 c2 列设置为外键
      CREATE TABLE t1(
    c1 INT PRIMARY KEY,
    c2 INT,
    FOREIGN KEY (c2) REFERENCES t2(c2)
);
      使列 c1 和 c2 中的值唯一
      CREATE TABLE t(
    c1 INT, c2 INT,
    UNIQUE(c1,c2)
);
      确保 c1>0 和 c1>=c2 中的值
      CREATE TABLE t(
c1 INT, c2 INT,
CHECK(c1> 0 AND c1 >= c2)
);
      c2 列中的设置值不为 NULL
      CREATE TABLE t(
   c1 INT PRIMARY KEY,
   c2 VARCHAR NOT NULL
);
                        修改数据

         在表格中插入一行
      INSERT INTO t(column_list)
VALUES(value_list);
      在表格中插入多行
      INSERT INTO t(column_list)
VALUES (value_list),
       (value_list), …;
      将行从 t2 插入 t1
      INSERT INTO t1(column_list)
SELECT column_list
FROM t2;
      更新列 c1 中所有行的新值
      UPDATE t
SET c1 = new_value;
      更新列 c1、c2 中与条件匹配的值
      UPDATE t
SET c1 = new_value,
      c2 = new_value
WHERE condition;
      删除表中的所有数据
      DELETE FROM t;
      删除表中的行子集
      DELETE FROM t
WHERE condition;
                        管理视图

               创建由 c1 和 c2 组成的新视图
      CREATE VIEW v(c1,c2)
AS
SELECT c1, c2
FROM t;
      利用选中选项创建新视图
      CREATE VIEW v(c1,c2)
AS
SELECT c1, c2
FROM t;
WITH CHECK OPTION;      创建递归视图
      CREATE RECURSIVE VIEW v
AS
select-statement -- anchor part
UNION
select-statement; -- recursive part
      创建临时视图
      CREATE TEMPORARY VIEW v
AS
SELECT c1, c2
FROM t;
      删除视图
      DROP VIEW view_name;
                        管理触发器

         创建或修改触发器
      CREATE OR MODIFY TRIGGER trigger_name
WHEN EVENT
ON table_name TRIGGER_TYPE
EXECUTE stored_procedure;
      WHEN

                :-:-BEFORE在变乱发生前调用AFTER变乱发生后调用 EVENT

:-:-INSERT为INSERT调用UPDATE调用UPDATEDELETE调用DELETE TRIGGER_TYPE

:-:-FOR EACH ROW-FOR EACH STATEMENT-      管理索引

       在表 t 的 c1 和 c2 上创建索引
    CREATE INDEX idx_name
ON t(c1,c2);
    在表 t 的 c3、c4 上创建唯一索引
    CREATE UNIQUE INDEX idx_name
ON t(c3,c4)
    删除索引
    DROP INDEX idx_name ON t;
            MySQL 数据范例

                      Strings

                     --CHARString (0 - 255)VARCHARString (0 - 255)TINYTEXTString (0 - 255)TEXTString (0 - 65535)BLOBString (0 - 65535)MEDIUMTEXTString (0 - 16777215)MEDIUMBLOBString (0 - 16777215)LONGTEXTString (0 - 429496­7295)LONGBLOBString (0 - 429496­7295)ENUMOne of preset optionsSETSelection of preset options      Date & time

          Data TypeFormatDATEyyyy-MM-ddTIMEhh:mm:ssDATETIMEyyyy-MM-dd hh:mm:ssTIMESTAMPyyyy-MM-dd hh:mm:ssYEARyyyy      Numeric

          --TINYINT xInteger (-128 to 127)SMALLINT xInteger (-32768 to 32767)MEDIUMINT xInteger (-8388608 to 8388607)INT xInteger (-2147­483648 to 214748­3647)BIGINT xInteger (-9223­372­036­854­775808 to 922337­203­685­477­5807)FLOATDecimal (precise to 23 digits)DOUBLEDecimal (24 to 53 digits)DECIMAL"­DOU­BLE­" stored as string      函数

                      聚合函数

                     函数解释SUM()计算一列值的总和AVG()计算一列值的均匀值COUNT()计算行数,可选择性地忽略NULL值MAX()找出一列的最大值MIN()找出一列的最小值      数学函数

            函数解释示例语法效果ABS(x)返回数值的绝对值ABS(-5)5ROUND(x,y)四舍五入到指定的小数位数,y为小数位数,默认为0ROUND(3.1415,2)3.14FLOOR(x)向下取整至最接近的整数FLOOR(3.7)3CEIL(x)向上取整至最接近的整数CEIL(3.3)4SQRT(x)返回一个数的平方根SQRT(16)4MOD(x,y)返回x除以y的余数MOD(10,3)1RAND()返回0到1之间的随机数,可选种子值RAND() 或 RAND(123)0.345...      日期和时间函数

          函数解释NOW()返回当前日期和时间CURDATE()返回当前日期CURTIME()返回当前时间DATE_FORMAT()格式化日期时间输出DATEDIFF()计算两个日期之间相差的天数STR_TO_DATE()将字符串转换为日期格式      字符串函数

            函数解释示例语法效果CONCAT(s1,s2,...)连接两个或更多字符串CONCAT('Hello, ','World!')'Hello, World!'LOWER(str)转换为小写LOWER('HELLO')'hello'UPPER(str)转换为大写UPPER('world')'WORLD'TRIM(str)去除字符串两端空格TRIM(' Hello ')'Hello'LEFT(str,len)提取字符串左侧的若干字符LEFT('Hello', 3)'Hel'RIGHT(str,len)提取字符串右侧的若干字符RIGHT('Hello', 2)'lo'SUBSTR(str,pos,len)提取字符串中的一部分SUBSTR('Hello', 2, 3)'ell'REPLACE(str,from_str,to_str)替换字符串中的部分文本REPLACE('Hello', 'l', 'L')'HeLLo'      高级函数

            函数解释示例语法效果BIN(x)返回 x 的二进制编码,x 为十进制数。BIN(2)10BINARY(s)将字符串 s 转换为二进制字符串。BINARY 'RUNOOB''RUNOOB'(表现效果,实际存储为二进制)CASE复合条件函数,根据条件返回不同效果。CASE WHEN 1 > 0 THEN '1 > 0' WHEN 2 > 0 THEN '2 > 0' ELSE '3 > 0' END'1 > 0'CAST(x AS type)转换数据范例。CAST('2017-08-29' AS DATE)2017-08-29COALESCE(expr1, expr2, ..., expr_n)返回第一个非空表达式的值。COALESCE(NULL, NULL, 'runoob.com', NULL, 'google.com')'runoob.com'CONNECTION_ID()返回当前连接的唯一ID。CONNECTION_ID()4292835(示例值)CONV(x, f1, f2)将 f1 进制数转换为 f2 进制数。CONV(15, 10, 2)1111CONVERT(s USING cs)转换字符串 s 的字符集为 cs。CHARSET(CONVERT('ABC' USING gbk))gbkCURRENT_USER()返回当前用户。CURRENT_USER()guest@%DATABASE()返回当前数据库名。DATABASE()runoobIF(expr, v1, v2)条件表达式,expr 为真则 v1,否则 v2。IF(1 > 0, '精确', '错误')'精确'IFNULL(v1, v2)假如 v1 不为 NULL,则返回 v1,否则返回 v2。IFNULL(NULL, 'Hello Word')'Hello Word'ISNULL(expression)判断表达式是否为 NULL。ISNULL(NULL)1LAST_INSERT_ID()返回最近生成的 AUTO_INCREMENT 值。LAST_INSERT_ID()6(示例值)NULLIF(expr1, expr2)若 expr1 等于 expr2,则返回 NULL,否则返回 expr1。NULLIF(25, 25)NULL
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【MySQL】MySQL 利用全教程