MySQL数据类型、函数、联结、分组选定

1.数据库的数据类型

1.1字符串

char[length]
varchar[length]
tinytext
text
mediumtext
longtext

1.2数值型

tinyint[length]
smallint[length]
mediumint[length]
int[length]
bigint[length]
float[length, decimals]
double[length, decimals]
decimal[length, decimals]

1.3日期

date
datetime
timestamp
time

1.4其他

enum //枚举值,在建表时将所有看的值枚举,只能选中其一。如果输入的值不是枚举的值,将插入空字符串,索引值为0。
set //枚举值,在建表时将所有看的值枚举,可以是零个或者多个。
unsigned 可以设置所存的数值永远为正,并且或扩大正数的范围。不会存储负数。

2.主键 primary key

外键 foreign key
自动增长 auto-increment

3.选择数据条件的顺序

SELECT * FROM tb_name WHERE conditions ORDER BY col_name [DESC] LIMIT X [,Y]

4.LIKE NOT LIKE 与WHERE 比较

LIKE 查询比较慢,因为不能够使用索引,所以慎用。
LIKE 可以使用通配符查询,如:
SELECT * FROM tb_name WHERE col_name LIKE 'smith%' //通配符''代表一个字符,'%'代表零个或者多个字符。

5.使用函数

5.1文本函数

CONCAT(t1,t2,...) //创建形如括号里的新字符串
SELECT CONCAT('$', number) //不用加引号的是列名,最后创建出来的新字符串会是货币形式。

5.2 数字函数

FORMAT(n1, n2) //返回格式化一个数的n1,这个数带有n2位小数,并且每三位之间插入一个逗号
RAND() //返回0-1.0之间的一个随机数
ROUND //返回数n1,它被四舍五入位n2位小数

5.3日期和时间函数

NOW()
CURDATE()
CURTIME()

5.4格式化日期和时间

DATE_FORMAT(datetime, formatting)
如:
DATE_FORMAT(date, '%M %D %Y');
TIME_FORMAT()

6.外键约束

6.1 语法

`FOREIGN KEY (item_name) REFERENCES tb_name (col_name)`

7. 联结[JOIN]

7.1基本语法

` SELECT what_columns FROM tableA JOIN_TYPE tableB JOIN_CLAUSE `

7.2联结类型[JOIN_TYPE]

主要分为内联结[INNER JOIN]和外联结[OUTTER JOIN];
外联结又分为左联结[LEFT JOIN][常用]、右联结和全联结。

7.3内联结

    SELECT m.message_id, m.subject, f.name
    FROM messages AS m INNER JOIN forums AS f
    ON m.forum_id = f.forum_id      //跨两个表执行相等性比较,这称为等值联结(equijoin)
    //在执行等值联结时,可用USING简化查询语句,上面一句话等同于
    //USIGN (forum_id)
    WHERE f.name = 'MySQL'; 

7.4外联结(左联结常用)

    SELECT f.*, m.subject FROM forums AS f
    LEFT JOIN messags AS m      //左联结,外联结中的OUTTER常常省略
    USIGN (forum_id)

7.5自联结(自己联结自己)

自联结诀窍:将用一个表的两个引用看做对两个不同表的引用。为了实现它,要为每个表的引用指定不同的别名。
如:

    SELECT m1.subject, m2.subject AS Reply
    FROM messages AS m1
    LEFT JOIN messages AS m2
    ON m1.message_id=m2.parent_id 
    WHERE m1.parent_id=0

7.6联结三个或更多的表

    SELECT u.username, m.subject, f.name
    FROM users AS u
    INNER JOIN messages AS m 
    USIGN (user_id)
    INNER JOIN forums AS f
    USIGN (forum_id)
    WHERE conditions
    ORDER BY col_name
    LIMIT X;

8.分组选定结果

AVG() //返回列中所有数值的平均值
COUNT() //返回列中所有值得个数
GROUP BY col_name //按。。。分组
如:

    SELECT SUM(balance) AS Total,
    COUNT(account_id) AS Numberm, customer_id
    FROM accounts
    GROUP BY (customer_id)
    ORDER BY col_name;

你可能感兴趣的:(MySQL数据类型、函数、联结、分组选定)