笔记-mysql 基础

1、查看数据库列表

SHOW DATABASES;

2、查看数据库

SHOW TABLES;

3、查看表

USE mydatabase;

//下面这些语句作用是相同的
DESCRIBE students;
DESC students;
EXPLAIN students;
SHOW COLUMNS FROM students;
SHOW FIELDS FROM students;

4、导入数据

可以用SOURCE命令读入文件

source insert.sql

如果文件记录项是以纯数据形式来存放,可以利用LOAD DATA 或 mysqlimport 

LOAD DATA LOCAL INFILE 'students.txt' INTO TABLE students;

5、对输出进行求值和命名

将字段合并

SELECT CONCAT(first_name, ' ', last_name) FROM students;
上句可将查询结果first_name 和 last_name 合并,中间用空格连接。

6、与日期有关

mysql中日期格式 为2011-11-25,可用YEAR()、MONTH()、DAYOFMONTH()分别分离出来

例如,查询生日在3月的学生:

SELECT last_name FROM students WHERE MONTH(birth) = 3;


如果你想知道某两个日期之间的时间间隔,拿他们做减法即可。例如想知道哪位总统寿命最长:

SELECT last_name TIMESTAMPDIFF(YEAR, birth, death) AS age FROM president WHERE death IS NOT NULL ORDER BY age DESC LIMIT 5;


计算日期的另一种方法是TO_DAYS,他将日期都转化为天数。这个函数可以计算出距离某个特定日期时间还有多长。

例如需要计算60天内需要续费的会员:用会员到期时间减去今天的日期,如果小于60则表示该会员近期内需要续费:

SELECT last_name FROM member WHERE (TO_DAYS(expiration) - TO_DAYS(CURDATE())) < 60;


使用TIMESTAMPDIFF()函数也可以完成:

SELECT last_name FROM member WHERE TIMESTAMPDIFF(DAY, CURDATE(), expiration) < 60;

DATE_ADD() 或 DATE_SUB() 函数输入的参数是一个日期值和一个时间间隔,返回结果则是一个新日期,还是上例中的会员费,可以这样:

SELECT last_name FROM member WHERE expiration < DATE_ADD(CURDATE(), INTERVAL 60 DAY);

7、如何设置和使用变量

mysql允许使用自定义变量。我们可以使用查询结果来设置变量,这使我们能够方便把一些值保存起来以供今后查询。例如想知道生日在david之前的人。可以这样:

SELECT @birth := birth FROM students WHERE last_name = 'david';
SELECT last_name FROM students WHERE birth<@birth ORDER BY birth;
变量命名语法  @变量名  ,前面的问题可以通过联接或子查询来解决。而有时候使用变量可能更容易。

8、如何生成统计

MySql 最有用的功能之一就是生成多种统计汇总信息

统计有多少会员:

SELECT COUNT(*) FROM member;

特别需要注意的是,COUNT(*)是统计所有选中数据行的总数,而COUNT(列名)则统计所有选中非NULL值的个数。

如果要统计有多少个州曾经出过总统:

SELECT COUNT(DISTINCT state)  FROM president;
使用DISTINCT去除重复项

除此之外,可用GROUP BY 子句统计,如统计每个州出过多少总统:

SELECT state, COUNT(*) FROM president GROUP BY state ;


但你准备使用某个汇总列计算结果尽心排序时,不能直接在ORDER BY 子句中引用函数,而应该先给这列取别名:

SELECT state, COUNT(*) as count  FROM president GROUP BY state ORDER BY count DESC;
除此之外,函数MIN()、MAX()、SUM()、AVG()能够得出某个数据列最小值、最大值、求和、求平均值。

9、复制表

MySql提供两条语句来帮助我们从其他数据表或是从查询结果创建新的数据表。

CREATE TABLE......LIKE
上面语句将创建一个新的数据表作为原始数据表的一份空白副本。它将把原始数据表的结构完全复制过来,不仅个数据列所有属性都会保留,连索引结构都会复制,不过,新的数据表内容是一片空白。

CREATE TABLE......SELECT
上面语句可以从SELECT结果集创建新的数据表,在默认情况下,这条语句不会复制数据列属性。

如果你需要复制一个表的结构以及数据,可以先创建一个空白副本,然后再填充数据

CREATE TABLE......LIKE  
INSERT INTO ......SELECT














發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章