sql 回顾(mysql)

sql 回顾(mysql)

1. mysql数据类型

一共三种:Text、Number、Data/Time

1.1 Text

1)CHAR(size)            最大255
2)VARCHAR(size) 如果大于255,则自动转化为TEXT
3)TINYTEXT      存放最大长度为255
4)TEXT          存放最大长度为65535
5)BLOB          用于BLOBs,存放最多65535
6)MEDIUMTEXT            存放最大长度为16,777,215
7)MEDIUMBLOB            存放最大长度为16,777,215
8)LONGTEXT      存放最大长度为4,294,967,295
9)LONGBLOB      存放最大长度为4,294,967,295
10)ENUM(x,y,z,etc.)
11)SET

1.2 Number

1)TINYINT(size) 带符号-128到127,无符号0到255
2)SMALLINT(size)    带符号-32768到32767,无符号0到65535
3)MEDIUMINT(size)   带符号-8388608到8388607,无符号0到16777215
4)INT(size)     带符号-2147483648到2147483647,无符号0到4294967295
5)BIGINT(size)      带符号-9223372036854775808到9223372036854775807,无符号0到18446744073709551615
6)FLOAT(size,d) 带有浮动小数点的小数字。在 size 参数中规定显示最大位数。在 d 参数中规定小数点右侧的最大位数。
7)DOUBLE(size,d)    同上
8)DECIMAL(size,d)   作为字符串存储的 DOUBLE 类型,允许固定的小数点。在 size 参数中规定显示最大位数。在 d 参数中规定小数点右侧的最大位数。

1.3 Date

1)DATE()        格式:YYYY-MM-DD
2)DATETIME()            格式:YYYY-MM-DD HH:MM:SS
3)TIMESTAMP()           时间戳,支持范围:从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC
4)TIME()        格式:HH:MM:SS
5)YEAR()        2 位或 4 位格式的年。4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。

2. CRUD

select column_name from table_name                                     // 查看表的某些列
select distinct column_name from table_name                            // 查看表的某些列,并且行去重
where                                                                          // 筛选条件
and or
order by column_name ASC|DESC                                               // 根据某列数据进行排序
insert into table_name value (value1,value2,...)                            // 表插入数据
insert into table_name (column_name,column_name,...) values (v1,v2,v3,...)  // 表指定列插入数据
update table_name set column_name1=value1,column_name2=value2,... where ......  // 更新表指定行数据
delete from table_name where ......                                     // 与truncate table_name不同的是,可回滚

3. 高级查询

1)limit

select * from table_name limit x // 限制行数

2)like

select * from table_name where name like '...' // 定义模糊查询

3)通配符

%                   代替0个或多个字符
_                   代替一个字符
[charlist]              字符列表中的任意一个字符
[^charlist]/[!charlist]                 不在字符列表中的任意一个字符      
^                   以此开头字符

4)in

select * from table_name where name in (......) // 允许在where中定义多个值

5)between...and...

select * from table_name where column_name between x and y // 在某个范围内的

6)not

可以加在in和between前面表示取反

7)as

可以给列或者表取别名

8)join

inner join:如果表中至少一个匹配,则返回行 // 两边都要满足条件


left join:即使右表中没有匹配,也返回行 // 满足左边


right join:即使左表中没有匹配,也返回行 // 满足右边


full join:只要其中一个表中存在,则返回行 // 保证两张表的数据全量

9)union

合并select查询到的结果,需要查询的是相同的字段。例如:

SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;

这样的话两张表中相同的列会进行去重

可以使用union all进行合并,取消去重

4. sql索引

在不读取整个表的情况下,索引使数据库能够更快的查找数据

用户是无法看到索引的,它们只是用来加速查询,但是有索引的表插入数据的时候会更慢一些,因为插入的同时会更新索引

create index index_name on table_name (column_name)     // 允许使用重复值
create unique index index_name on table_name (column_name)  // 不允许使用重复值

5. sql常用函数:

Aggregate:

1)AVG() -   返回平均值
2)COUNT()   -   返回行数
3)FIRST()   -   返回第一个值
4)LAST()    -   返回最后一个值
5)MAX() -   返回最大值
6)MIN() -   返回最小值
7)SUM() -   返回总和

Scalar:

1)UCASE()           -   将某个字段转换为大写
2)LCASE()           -   将某个字段转化为小写
3)MID()         -   从某个文本字段提取字符
4)SubString(字段,1,end)   -   从某个文本字段提取字符
5)LEN()         -   返回某个文本字段的长度
6)ROUND()           -   对某个数值字段进行指定小数位数的四舍五入
7)NOW()         -   返回当前系统的日期和时间
8)FORMAT()          -   格式化某个字段的显示方式

猜你喜欢

转载自www.cnblogs.com/ZhangShY/p/10126724.html