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 = "[email protected]" 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、视图是虚拟的表。与包含数据的表不一样,视图只包含使用动态检索数据的查询。