放在这里,以备后查。

1. 数据库, 数据库服务器, 数据库语言

数据库,是持久性数据的集合,供给定企业的应用程序系统使用,并且由一个数据库管理系统来管理;

数据库服务器,又称数据库管理系统,用来管理数据库(高效地存储、查询、更新数据库,并维护数据库的完整性状态);
 
                 数据库语言,是应用程序用来向数据库服务器发送命令并从中取出所需要数据的特定语言。

2.  系统变量

查询系统变量: SELECT @@系统变量名 , eg. SELECT @@DATADIR
                 显示所有系统变量: SHOW VARIABLES , SHOW VARIABLES LIKE 'pattern' 
                 设置系统变量: SET @@GLOBAL(LOCAL,SESSION).varname=值 ;

(1) 数据库目录: DATADIR  ;    (2) 日志: LOG_WARNINGS
                 (3) 最大用户连接数: MAX_USER_CONNECTIONS ;    (4) 版本: VERSION

3.   系统数据库和表

(1)  MYSQL.USER : 存放数据库用户登陆信息的表。
                  (2)  INFORMATION_SCHEMA : 存放目录数据的数据库

4.   查看数据库详细信息:   HELP SHOW ;SHOW WARNINGS ; SHOW STATUS ;
       
       5.  mysql 基本语句:

(1) 创建和查看用户、权限、数据库      
 
            创建用户: CREATE USER 'username'@'hostname' IDENTIFIED BY 'password'

创建数据库: CREATE DATABASE database_name ;

授予权限:GRANT 【操作权限,比如,select, update, delete, all】 ON database_name.table_name to 'username'@'host'
                查看权限: SHOW GRANTS ; 查看数据库创建定义:SHOW CREATE DATABASE database_name ;

显示当前用户所拥有的所有数据库: show databases ;    选择要使用的数据库: USE database_name ; 
                显示当前数据中的所有表: show tables ;

(2) 创建表和表操作

创建表: CREATE TABLE table_name ( 属性名1 属性类型1 约束1,...  属性名n 属性类型n 约束n, PRIMARY KEY(属性名i,j,...,p)) ENGINE=引擎名 DEFAULT CHARACTER SET 字符集名 COLLATE 校对名

A. 约束: 是否允许为空值(NOT NULL, 默认允许空值);是否有默认值(DEFAULT 默认值)
           B. 主键值: 若不想指定,则用 NULL 代替, 由系统自动生成相应值进行填充
           C. 多个列作为主键: 使用逗号隔开的多个列名的列表
           D. 引擎类型:InnoDB(可靠事务处理), MyISAM(性能高,支持全文搜索,但不支持事务处理), MEMORY(速度特别快)   
           E. 指明所使用字符集;可以对单个列进行指定。

查看表创建定义: SHOW CREATE TABLE 表名; 查看表的字段定义: desc table_name ;

重命名表:  RENAME TABLE 旧表名 TO 新表名

更改表结构:

ALTER TABLE 表名    (ADD 列名 列名类型) [添加列]   |    (DROP COLUMN 列名) [删除已有列]    |
           (ADD CONSTRAINT 约束名 FOREIGN KEY (外键名) REFERENCES 外键所在表名 (外键所在表的相应主键名))[添加外键]

查看表创建定义: SHOW CREATE TABLE 表名; 查看表的字段定义: desc table_name ;

插入数据:  INSERT INTO table_name values (数据1, 数据2,... 数据n) ; 插入数据必须与对应属性名的属性类型匹配

删除数据:  DELETE FROM table_name WHERE CONDITIONS

更新数据:  UPDATE table_name SET 属性名=新值 WHERE CONDITIONS

创建索引:  ADD (UNIQUE) INDEX 索引名 ON 表名(属性名)

创建视图:  CREATE VIEW 视图名(属性名i, ... 属性名j) AS   SELECT 查询语句

(3) 删除操作

删除数据库: DROP DATABASE database_name ; 
 
             删除视图: DROP VIEW 视图名

删除表:   DROP TABLE 表名

删除索引: DROP INDEX 索引名

6.  查询与过滤数据

表定义[见 mysql 必知必会]:
            a. 客户表 customers: cust_id(PK), cust_name, cust_email, others
            b. 供货商表: vendors: vend_id(PK), vend_name, vend_country, others 
            c. 产品表 products: prod_id(PK), vend_id(FK), prod_name, prod_price, prod_desc
            d. 客户订单表 orders: order_num(PK), order_date, cust_id(FK)
            e. 订单信息表 orderitems: (order_num, order_item)(PK), prod_id(FK), quantity, item_price

(1) 基本查询与过滤: 
 
       SELECT   [DISTINCT]   [OP1]      FROM   [OP2]

WHERE   [COND_CLAUSE]

ORDER BY [  OP3]   <DESC>

LIMIT offset, lineNum

---> OP1: 单个列名或列名表达式,或多个用逗号隔开的列名或列名表达式。
       ---> OP2:一个或多个表名,用逗号隔开 ;
       ---> OP3: 一个或多个列名,用逗号隔开; 
       ---> ORDER BY: 对检索结果排序,按照指定列名顺序依次排序;默认升序排列;DESC 指明降序排列;
       ---> LIMIT offset, lineNum : 从第 offset 行 [下标从零数起] 开始的 lineNum 行; 若行数不足 lineNum, 则检索能够得到的最大行数。
       ---> COND_CLAUSE: 由一个或多个条件子句组成。
            -----> 条件子句结构为 '表名.列名 操作符 值或值集' 
            -----> 空值查询: IS NULL;
            -----> 集合操作符:IN (值的集合) ; 表示仅在括号中给定的值集中取值;
            -----> 通配操作符:LIKE [BINARY] 'text' ; text 为通配符文本。 
                             通配符: % 任意多个任意字符 ; _ 任意单个字符   
            -----> 正则表达式:REGEXP [BINARY] 'regexText' ; regexText 为正则表达式文本  
                        正则表达式: . 匹配任意单个字符 ; OR | 或 ;范围匹配 [0-9], [a-zA-Z] ;

//c , // 转义符,比如匹配字符点号 //. ;
                         * 零个或多个 ; + 一个或多个 ; {n} 恰好 n 个 ;{n,} N>=n ; {n,m}  n<=N<=m
                         ^ 文本开始 ; $ 文本末尾 
            -----> 可以使用逻辑操作符 AND, OR 将多个条件子句连接起来,形成多重过滤条件。

AND 优先级高于 OR ; 为确保正确的次序,尽量多使用括号来表明优先级;

NOT 可对条件字句的结果取反(F->T, T->F)。   
               ---> 关键字: BINARY 搜索区分大小写 ; DISTINCT 去除重复行
    
       (2)   生成新字段: 上述查询语句中,[OP1] 还可以是任何合法的列名表达式:

A. 由多个列名及字符串拼接而成的字段。 例如 SELECT Concat(列名1, ' *** ', 列名2) FROM 表名.
                B. 列名的四则运算。 例如 SELECT (prod_price * quantity) FROM items;

C. 列名的函数。 例如, SELECT Concat(YEAR(order_date), '/', Month(order_date)) FROM orders;                   
                D. AS alias_name: 可以用来给新生成的字段命名。 
       
      (3)   分组数据: 可以在WHERE 字句后加入分组子句 ; WHERE 子句在分组前过滤数据, HAVING 子句在分组后过滤数据。
                 SELECT [OP1]   FROM [OP2]   [WHERE 子句]   GROUP BY   一个或多个列名   HAVING 条件子句

(4)  子查询: 子查询可以用来替代任何有值或值集的地方,尤其是与 in 连用。例如
                  SELECT cust_name FROM customers   WHERE cust_id   IN

( SELECT cust_id FROM orders WHERE Date(order_date) BETWEEN '2005-09-01' AND '2005-09-30') ;

(5) 表联结:

A. 基本的表联结: 主要是使用笛卡尔乘积和 WHERE 子句来进行。 例如,找出所有的产品名称及供货商名称:

SELECT prod_name , vend_name FROM products, vendors Where products.vend_id = vendors.vend_id;  或者
               SELECT prod_name , vend_name FROM products INNER JOIN vendors on products.vend_id = vendors.vend_id; 
          
          B. 多个表联结: 方法不变,为了避免出错,可以先在文本文件把语句写好,再复制粘贴过去以检验。

例如,找出客户所下订单的信息:

SELECT cust_name, orders.order_num, prod_name, vend_name, quantity, prod_price,   item_price*quantity AS order_price
               FROM customers, vendors, orders, products, orderitems 
                     WHERE    products.prod_id = orderitems.prod_id
                          AND    orderitems.order_num = orders.order_num
                          AND    customers.cust_id = orders.cust_id
                          AND    products.vend_id = vendors.vend_id;
   
                技巧: 分三步进行: a. 在 SELECT 中在多个表中选择想要显示的列名或构造列名表达式; 
                                               b. 在 FROM 中列出所有涉及到的表名; 
                                               c. 根据表中的外键及WHERE相等子句条件建立联结。

C. 自联结: 在单个 SELECT中 多次引用和联结同一张表,需要使用表别名来消除歧义性。
 
                例如,查询生产产品ID为 'DTNTR' 的供应商生产的其它产品:

SELECT p1.vend_id, p1.prod_id FROM products AS p1, products AS p2
                   WHERE p1.vend_id = p2.vend_id AND p2.prod_id = 'DTNTR'

D. 外联结:在自然联结的基础上附加没有被关联的行(请自行查阅相关数据库理论书籍)

SQL: SELECT ... FROM 表名1 LEFT[RIGHT] OUTER JOIN 表名2 ON ...
                       
       (6) 组合查询: 将多个 SELECT 查询组合成单个查询结果
          
                   ----> SQL : SELECT ... UNION [ALL] SELECT ... [ORDER BY DESC]
                   ----> UNION ALL: 包含多个查询结果中重复出现的行;默认是不包含重复行的;
                   ----> ORDER BY: 必须在最后一个 SELECT 语句之后,对整个组合查询的结果进行排序。

7.  数据库维护:

(1)  执行SQL文件: /. <filename> 或者 source <filename> ; mysql -u username -p database_name < xxx.sql

(2)  备份和恢复数据表: select * into outfile '/var/lib/mysql/user.bak' from tblname;

load data infile '/var/lib/mysql/user.bak' replace into table tblname ;

(3)  备份和恢复数据库或表:

             mysqldump -uxtools -h127.0.0.1 -pxtool dbname tablename > /tmp/tbl.bak.sql

MySQL基础语句【学习笔记】的更多相关文章

  1. mysql基础操作学习笔记(一)

    1前期准备: SQL语言包涵以下4个部分: (1)数据定义语言(DDL):包括DROP, CREATE, ALTER等语句 (2)数据操纵语言(DML):包括INSERT, UPDATE, DELET ...

  2. mysql基础操作学习笔记(2)----索引

    为什么要创建索引?     在此本人也带着相同的疑问,能够解释的仅仅是:为了减少数据库查询时所需要的速度.如果正常查询和索引查询所需时间相差很多倍时我们自然是需要索引的了. 想要知道结果,只能等我学得 ...

  3. MYSQL视图的学习笔记

    MYSQL视图的学习笔记,学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆 课程笔记的综合. 视图及图形化工具   1.       视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚 ...

  4. mySQl数据库的学习笔记

    mySQl数据库的学习笔记... ------------------ Dos命令--先在记事本中写.然后再粘贴到Dos中去 -------------------------------- mySQ ...

  5. MySQL 基础语句

    MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...

  6. MySQL基础语句与其在Python中的使用

    一.MySQL基础语句 $ mysql -u root -p (有密码时) $ mysql -u root     (无密码时) QUIT (or \q)  退出 查看当前所有数据库 show dat ...

  7. linux基础命令学习笔记(二)

    linux基础命令学习笔记(二) 1.kill :终止进程  kill pid (唯一标示一个进程) kill -9  强制终止  kill -15 命令未结束不能终止 # ps aux 查看所有进程 ...

  8. Objective-c基础知识学习笔记

    Objective-c基础知识学习笔记(一) 一直有记录笔记的习惯.但非常久没分享一些东西了,正好上半年開始学习IOS了,如今有空写点.因开发须要,公司特意为我们配置了几台新MAC.还让我们自学了2周 ...

  9. Python基础教程学习笔记:第一章 基础知识

    Python基础教程 第二版 学习笔记 1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入“p ...

随机推荐

  1. java中定义一个CloneUtil 工具类

    其实所有的java对象都可以具备克隆能力,只是因为在基础类Object中被设定成了一个保留方法(protected),要想真正拥有克隆的能力, 就需要实现Cloneable接口,重写clone方法.通 ...

  2. android 仿QQ手机版

    千人2群开启,欢迎大家围观打酱油,群号145667827     您当前位置 : JavaApk-安卓应用游戏源码服务专家 » QQ » Android项目源码界面超级华丽的仿QQ最新版本 Andro ...

  3. MVC Route路由

    由于某些原因,需要默认区域,所以需要对路由进行设置 具体实现如下: using System.Web; using System.Web.Mvc; using System.Web.Routing; ...

  4. JS对象添加新的字段

    var test={name:"name",age:"12"}; test.id = "12345"; 直接定义添加就成了

  5. MQTT协议笔记之消息流

    前言 前面的笔记已把所有消息类型都过了一遍,这里从消息流的角度尝试解读一下. 网络故障 在任何网络环境下,都会出现一方连接失败,比如离开公司大门那一刻没有了WIFI信号.但持续连接的另一端-服务器可能 ...

  6. ruby+gem常用命令

    gem是一种文件组织的包,一般的ruby的很多插件都有由这种各种的包提供.我们来看看gem的用法     ruby -v #查看ruby 版本 ruby -e ''require"watir ...

  7. 使用synchronized(非this对象)同步代码块解决脏读问题

    首先通过示例来学习验证多个线程调用同一个方法时随机的. package syn_out_asyn; import java.util.ArrayList; import java.util.List; ...

  8. mouseover&mouseout和mouseenter&mouseleave

    mouseenter&mouseleave: 进入被选元素触发,进入被选元素的子元素不会重复触发. mouseover&mouseout: 进入被选元素触发,从被选元素进入其子元素会再 ...

  9. 微信小程序 --- Image组件

    Image组件可以在小程序中展示图片,支持外链. Image组件可以调用API,进行三种缩放,九种裁剪. Image组件有默认值:300*225 属性: src:图片资源地址. mode:图片裁剪缩放 ...

  10. [Haskell]解决hslua unknown symbol `___s trtod'的问题

    用cabal编译libpandoc时遇到这样的错误: HShslua-0.3.12.o: unknown symbol `___s trtod' ghc.exe: unable to load pac ...