【MySQL】MySQL 利用全教程

打印 上一主题 下一主题

主题 990|帖子 990|积分 2970

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
MySQL 利用全教程

                             先容

                     MySQL 是一种广泛利用的开源关系型数据库管理系统(Relational Database Management System),它基于 Structured Query Language(SQL)进行数据管理,允许用户存储、检索、更新和删除数据库中的数据。通过提供高性能、可扩展性以及可靠性,MySQL 被广泛应用于各种规模的数据驱动网站和应用,支持多线程、多用户操纵,并能够处置惩罚大型数据库,是构建动态网站和应用步伐的紧张后端组件。
                      一个关系型数据库由一个或数个表格组成,如下所示的一个表格

  1.     name ▼ 键            ▼ 列(col)
  2. ┌┈┈┈┈┬┈┈┈┈┈┈┈┈┬┈┈┈┈┈┈┬┈┈┈┈┈┈┈┐
  3. ┆ id ┆ name   ┆ uid  ┆ level ┆  ◀ 表头header
  4. ├┈┈┈┈┼┈┈┈┈┈┈┈┈┤┈┈┈┈┈┈┤┈┈┈┈┈┈┈┤
  5. ┆  1 ┆ mysql  ┆ 0    ┆ 3     ┆
  6. ├┈┈┈┈┼┈┈┈┈┈┈┈┈┤┈┈┈┈┈┈┤┈┈┈┈┈┈┈┤
  7. ┆  2 ┆ redis  ┆ 12   ┆ 1     ┆  ◀ 行 row
  8. └┈┈┈┈┴┈┈┈┈┈┈┈┈┴┈┈┈┈┈┈┴┈┈┈┈┈┈┈┘
  9.     redis ▲ 值
复制代码



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

      
  1. # 默认用户名<root>,-p 是密码,
  2. # ⚠️参数后面不需要空格
  3. mysql -h 127.0.0.1 -u <用户名> -p<密码>
  4. mysql -D 数据库名 -h 主机名 -u 用户名 -p
  5. mysql -h <host> -P <端口号> -u <user> -p [db_name]
  6. mysql -h <host> -u <user> -p [db_name]
复制代码
           常用的

           数据库 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 信息

      
  1. # 显示当前mysql的version的各种信息
  2. mysql> status;
  3. # 显示当前mysql的version信息
  4. mysql> select version();
  5. # 查看 MySQL 端口号
  6. mysql> show global variables like 'port';
复制代码
           退出 MySQL 会话

      
  1. mysql> exit
复制代码
   退出 quit; 或 \q; 一样的效果
            备份

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

                      管理表格

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

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

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

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

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

                 创建由 c1 和 c2 组成的新视图
     
  1. CREATE VIEW v(c1,c2)
  2. AS
  3. SELECT c1, c2
  4. FROM t;
复制代码
     利用选中选项创建新视图
     
  1. CREATE VIEW v(c1,c2)
  2. AS
  3. SELECT c1, c2
  4. FROM t;
  5. WITH [CASCADED | LOCAL] CHECK OPTION;
复制代码
     创建递归视图
     
  1. CREATE RECURSIVE VIEW v
  2. AS
  3. select-statement -- anchor part
  4. UNION [ALL]
  5. select-statement; -- recursive part
复制代码
     创建临时视图
     
  1. CREATE TEMPORARY VIEW v
  2. AS
  3. SELECT c1, c2
  4. FROM t;
复制代码
     删除视图
     
  1. DROP VIEW view_name;
复制代码
                       管理触发器

           创建或修改触发器
     
  1. CREATE OR MODIFY TRIGGER trigger_name
  2. WHEN EVENT
  3. ON table_name TRIGGER_TYPE
  4. EXECUTE stored_procedure;
复制代码
     WHEN

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

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

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

       在表 t 的 c1 和 c2 上创建索引
   
  1. CREATE INDEX idx_name
  2. ON t(c1,c2);
复制代码
   在表 t 的 c3、c4 上创建唯一索引
   
  1. CREATE UNIQUE INDEX idx_name
  2. ON t(c3,c4)
复制代码
   删除索引
   
  1. 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([seed])返回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企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

何小豆儿在此

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表