MySQL技术内幕-第一章读书笔记

一般大写字母表示SQL关键字和函数,小写字母表示数据库、表和列的名字

连接MySQL数据库:mysql -h example.com -p -u user_name

一般大写字母表示SQL关键字和函数,小写字母表示数据库、表和列的名字

连接MySQL数据库:mysql -h example.com -p -u user_name        如果连接本地数据库则无需-h

mysql -psecret -u sampadm sampdb这样可以指定数据库,而无需进入mysql后使用USE

创建用户:CREATE USER ‘sampdb‘@’example.com’ IDENTIFIED BY ‘secret’;   本地的example.com就替换成localhost

;和\g都可以终止语句

\G是以垂直方式显示数据

\c可以不执行已经输入的语句

mysql < test.sql通过shell的重定向可以执行这个SQL文件里的语句

SELECT DATABASE();可以查看当前数据库

mysql sampdb -psecret -u sampadm < create_member.sql执行某个SQL文件里的语句

显示一个表的信息:DESCRIBR table_name;EXPLAIN table_name;SHOW COLUMNS FROM table_name;SHOW FIELDS FROM table_name;

SHOW (FULL) COLUMNS FROM president LIKE ‘%name’; FULL可以列出更多信息

mysqlshow -p -u sampadm sampdb

INSERT INTO student VALUES(‘jzz1’,’F’,NULL),(‘jzz2’,’M’,NULL);这样INSERT可以提高执行效率

导入数据:

mysql -p -u sampadm sampdb <insert_president.sql 已经进入mysql客户端时source insert_president.sql; 如果是原始数据mysqlimport –local sampdb member.txt mysql客户端里LOAD DATA LOCAL INFILE ‘member.txt’ INTO TABLE member; 在MySQL里列名不区分大小写

SELECT last_name,first_name,state FROM president WHERE state=’MA’OR state=’VA’; 可以写成

SELECT last_name,first_name,state FROM president WHERE state IN(‘VA’,’MA’);当有大量值时,用IN()会很方便 查找NULL不能用=NULL或者!=NULL,要用IS NULL或者IS NOT NULL,再就是MySQL特有的<=>这种等于可以用于比较NULL 取随机数据可用ORDER BY RAND() LIMIT 3;

在给列提供别名时,可以省略掉关键字AS

SELECT IF(death is null,TIMESTAMPDIFF(YEAR,birth,CURDATE()),TIMESTAMPDIFF(YEAR,birth,death)) age death FROM president; 这个可以显示每个总统的年龄,如果去世了则用去世时间减去出生日期,如果没去世,则是用当前时间减去出生日期 TO_DAYS(‘2015-8-17’)-TO_DAYS(‘2015-7-1’);可以计算相差多少天。TO_DAYS函数可以将日期转换为天数。

SELECT DATE_SUB(‘2015-8-18’,INTERVAL 30 DAY);可以显示30天前是几号,可以把DAY换成YEAR或者别的 模式匹配%需要使用LIKE或者NOT LIKE

SELECT @Jackson_birth:=birth FROM president

WHERE last_name=’Jackson’AND first_name=’Andrew’;可以将Jackson总统的生日存放在Jackson_birth这个变量中。 SET @today=CURDATE();可以给变量赋值 COUNT(列名)会统计所有非NULL值的数目

WITH ROLLUP可以获取更高级的汇总值  INNER JOIN的时候WHERE和ON没有区别 ON用于表之间条件如:ON student.stundet_id=score.student.student_id WHERE用于值条件如:WHERE date=’2012-09-23’