MySQL必知必会

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pbyang_love/article/details/81182848

1、InnoDB引擎:增加事务处理、并改进全文搜索等的支持。

2、登录控制台命令:mysql -u username -p password -h myserver -p port ,或者帮助命令:mysql --help

3、命令输入在mysql>之后,命令用;或\g结束,仅按Enter不执行命令。

4、选择数据库:USE testDatabase;

     SHOW DATABASES;   返回可用数据库的一个列表。

     SHOW TABLES; 获取一个数据内的表的列表

    SHOW  COLUMNS FROM customers,快捷方式为DESCRIBE customers, 快捷方式为DESC customers 显示表列

    SHOW STATUS, 用于显示广泛的服务状态信息。

    SHOW CREATE DATABASES +数据库 和 SHOW CRATE TABLE + 表, 分别用来显示创建特定数据库或表的MySQL语句。

    SHOW GRANTS;用来显示授予用户(所有用户或特定用户)的安全权限。

     SHOW ERRORS和SHOW WARNINGS; 用来显示服务器错误或告警信息。

5、尽量对所有SQL关键字使用大写,而对所有列和表名使用小写,这样做使代码更易与阅读和调试。在处理SQL语句时,尽量将SQL语句分成多行更容易阅读和调试。

6、如果使用通配符(*)检索所有列,但检索不需要的列通常会降低检索和应用程序的性能。

7、检索不同的行并限制结果
    SELECT DISTINCT vend_id FROM products LIMT 5,5;   开始行和行数  LIMT 5;只显示5条

8、SELECT prod_name FROM products ORDER BY prod_name;   排序数据,也可以多个列排序 ,指定排序方向:默认排序是升序:ASC   降序:DESC

9、在创建表时,其中的列是否可以不包含值。在一个列不包含值时,称其为包含空值NULL。
 
10、NULL 无值(no value),它与字段包含0、空字符串或仅仅包含空格不同。   eg: SELECT prod_name FROM products WHERE prod_price IS NULL;

11、SQL在处理OR操作符前,优先处理AND操作符。

12、IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单,全都括在圆括号中。

13、为什么要使用IN操作符,而不优先使用OR? 其优点具体如下:
      (1)在使用长的合法选项清单时,IN操作符的语法更清楚且更直观。
     (2)在使用IN时,计算的次序更容易管理(因为使用的操作符更少)。
     (3)IN操作符一般比OR操作符清单执行更快。
     (4)IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。

14、WHERE子句中的NOT操作符有且只有一个功能,那就是否定它之后所有的任何条件。
      NOT WHERE子句中用来否定后跟条件的关键字。  SELECT prod_name, prod_price FROM products WHERE wend_id NOT IN (1002, 1003) ORDER BY prod_name;

15、在搜索串中,%表示任何字符出现任意次数。

      下划线(_)通配符的用途与%一样,但下划线只匹配单个字符而不是多个字符。

16、SQL支持别名。别名(alias)是一个字段或值的替换名。别名用AS关键字赋予。

17、计算字段的常见用途是对检索出的数据进行算术计算。

18、MySQL算术操作符
      操作符       说明
       +              加
       -               减                 
       *               乘
       /               除

19、SELECT 3*2;返回6
      SELECT Now();返回当前日期和时间

20、MySQL数据处理函数。

21、MySQL日期和时间处理函数


22、汇总数据
       (1)SQL聚集函数
            AVG()  返回某列的平均值 ,  AVG()函数忽略列值为NULL的列。
           COUNT() 返回行的数目和符号特定条件的数目, 使用COUNT(*)对表中行的数目进行计数
                                                                                     使用COUNT(column)对特定列中具有值的进行计数,忽略NULL值。
           MAX()返回指定列中的最大值
           MIN()返回指定列中的最小值
           SUM()返回指定列值的和。

23、分组数据
      创建分组:SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY vend_id;
    
                      vend_id    num_prods
                      1001          1
                      1002         2
                      1003         3
                      1004         4
                      1005         5


24、HAVING和WHERE的差别:
       HAVING在数据分组后进行过滤。
       WHERE在数据分组前进组过滤。


25、作为计算字段使用子查询
      (1)、从customers表中检索客户列表
      (2)、对于检索出的每个客户,统计其在orders表中的订单数目。
        SELECT cust_name, 
                    cust_state, 
                    (SELECT COUNT(*) 
                    FROM orders 
                    WHERE orders.cust_id = customers.cust_id) AS orders
      FROM customers
      ORDER BY cust_name;

26、联结表:SQL能在数据检索查询的执行中联结(join)表,分布等值联结和内部联结。

27、没有联结条件的表关系返回的结果为笛卡儿积。检查出的行的数目将是第一个表中的行数乘以第二个表中的行数。

28、组合查询可以利用UNION操作符将多条SELECT语句组合成一个结果集。

29、UNION从查询结果集中自动去除了重复的行(换句话说,它的行为与单条SELECT语句中使用多个WHERE子句条件一样)。

30、全文本搜索
      MyISAM引擎支持全文搜索,而InnoDB引擎不支持全文搜索。

31、创建数据表的时候启动全文搜索: ENGINE=MyISAM

32、使用两个函数Match( )和Against( )执行全文搜索,其中Match( )指定被搜索的列,Against( )指定要使用的搜索表达式。

33、插入数据INSERT INTO XXX( XX, XX) VALUES( XX, XX);

34、插入多行数据:INSERT INTO XXX( XX, XX) VALUES( XX, XX);INSERT INTO XXX( XX, XX) VALUES( XX, XX);   每条语句用一个分号结束。
                     
       或使用           INSERT INTO XXX( XX, XX) VALUES( XX, XX),
                                                                                ( XX, XX);其中单条INSERT语句有多组值,每组值用一对圆括号括起来,用逗号分隔。

36、更新数据:更新表中特定行   UPDATE customes SET cust_email = "aaa@bbb.com" WHERE cust_id = 10005;
                       更新表中所有行

37、删除数据:删除特定行:DELETE FROM customers WHERE cust_id = 10006
                       删除所有行:

38、使用UPDATE或DELETE所遵循的习惯:
      (1)除非确实打算更新和删除每一行,否则绝对不要使用不带WHERE子句的UPDATE或DELETE语句。
      (2)保证每个表都有主键,尽可能像WHERE子句那样使用它。
      (3)在对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的时正确的记录,以防止编写的WHERE子句不正确。

39、视图不能索引,也不能有关联的触发器或默认值。   视图可以和表一起使用。

40、使用视图:
     (1)视图用CREATE VIEW语句来创建。
     (2)使用SHOW CREATE VIEW viewname; 来查询创建视图的语句。
     (3)用DROP删除视图,其语法为DROP viewname;
       (4) 更新视图时,可以先用DROP再用CREATE。

41、视图的作用:
      (1)重用SQL语句
      (2)简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节。
      (3)保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。
      (4)更改数据格式和表示,视图可以返回与底层表的表示和格式不同的数据。

42、视图的最常见的应用之一是隐藏负责的SQL,通常都会涉及联结。

43、视图极大地简化了复杂SQL语句的使用。利用视图,可一次性编写基础的SQL,然后根据需要多次使用。

44、视图是虚拟的表。与包含数据的表不一样,视图只包含使用动态检索数据的查询。

展开阅读全文

没有更多推荐了,返回首页