一、常用SQL命令
1、创建、查看、删除、使用数据库
(1)创建数据库
create datebase 数据库名;
(2)查看数据库
show datebases;
(3)删除数据库
drop databese 数据库名;
(4)选中使用数据库
use datebase 数据库名;
2、列的数据类型:
(1)整数型
整数:int或integer,4字节;
浮点数:float,4字节;float(10,2),总长度为10,取小数点后2位;double,8字节;
(2)字符型
char,定长字符串;varchar,变长字符串;
(3)日期型
DATE,3字节,格式:YYYY-MM-DD,用途:日期值;
TIME,3字节,格式:HH-MM-SS,用途:时间值或持续时间;
YEAR,1字节,格式:YYYY,用途:年份值;
DATETIME,8字节,格式:YYYY-MM-DD HH:MM:SS,用途:混合日期和时间值;
TIMESTAMP,4字节,格式:YYYYMMDD HHMMSS,用途:混合日期和时间值,时间戳;
3、创建、查看、删除、修改数据表
数据在数据库中的存储方式是行和列,创建数据表时增加列,插入数据时增加的行。
(1)创建数据表
create table 表名
(列名1 列的数据类型,
列名2 列的数据类型,
。。。
)
约束条件:
给列增加约束,使该字段存储的值更符合我们的预期。
在列的数据类型后面加:
1)UNSIGNED,无符号,值从0开始,无负数;
2)ZEROFILL,零填充;
3)NOT NULL,非空约束;
4)DEFAULT,默认值;
5)PRIMARY KEY,主键约束,唯一,不能为空;
6)AUTO_INCREAMENT,自增,只能用于数值类型,从1开始,每次增加1;
7)UNIQUE KEY,唯一值,表示该字段下的值不能重复,可以为空,可以有多个;
注意:如果一列同时有UNSIGNED,ZEROFILL和NOT NULL三个约束,UNSIGNED和ZEROFILL必须在NOT NULL前面。
(2)查看数据表
show tables;
(3)修改数据表
1)增加列:alter table 表名 add 列名 列的数据类型 约束;
注意:
默认添加在最后一列;如果要增加在第一列,要在后面加first;如果要指定增加在哪一列后面,在后面增加:after 前一列列名;
2)删除列:alter table 表名 drop 列名;
3)修改列:alter table 表名 modify 列名 列的数据类型;alter table 表名 change 旧列名 新列名 列的数据类型;
(modify是修改数据类型,change是修改列名和数据类型)
(4)删除数据表
drop table 表名;
4、数据表的增删查改
(1)数据表的增加:insert语句
insert into 表名 (“列名1”,“列名2”...) value (值1,值2...);
(2)数据表的查询:select语句
select 列名1,列名2... from 表名;
select * from 表名;
as语句:
select 列名 as 别名 from 表名;
(3)数据表的更新:update语句
update 表名 set 列名=新值 where 列名=值;
(4)数据表的删除:delete语句
delete from 表名 where 条件;
(5)where子句
比较运算符 | >< <= >= = <> | 大于 小于,大于等于,小于等于,不等于 |
BETWEEN…AND… | 显示在某一区间的值 (对整型,是左右闭区间;对浮点数,左开右闭区间) | |
IN() | 显示在in列表中的值,例:in(100,200) | |
Like ‘张%’ | 模糊查询,显示张开头的字符 | |
is null | 判断是否为空 | |
逻辑运算符 | and | 多个条件同时成立 |
or | 多个条件任一成立 | |
not | 不成立,例:not like;is not null |
5、数据表的排序、聚合、分组命令
(1)排序子句:order by
使用order by子句对查询结果进行排序,一般位于select最后,指定排序的列ASC升序(默认),DESC(降序);
(2)常用聚合函数
1)去重
DISTINCT——对某一列去重
select distinct 列名 from 表名;
2)统计
count——统计总行数
select count(列) from 表名;
3)最值
最大值:select MAX(列名) from 表名;
最小值:select MIN(列名) from 表名;
4)平均值
select AVG(列名) from 表名;
5)求和
select SUM(列名) from 表名;
(6)取值范围
select * from 表名 limit m,n;
查询n-m行;
(3)分组:group by
不加having过滤:select 列名,聚合函数 from 表名 where子句 group by 列名;
加having过滤:select 列名,聚合函数 from 表名 where子句 group by 列名 having 聚合函数 过滤条件;
6、数据表的连接查询和子查询
(1)左连接
获取左表所有行信息,即使右表没有匹配行信息,没有匹配的行用null代替;
select * from 表名 a left join 表名 b on a.列名=b.列名;
(2)右连接
获取右表所有行信息;
select * from 表名 a right join 表名 b on a.列名=b.列名;
(3)内连接
获取两个表中字段匹配的所有行信息;
select * from 表名 a inner join 表名 b on a.列名=b.列名;
(4)子查询
嵌套在其他查询里的查询;
select * from 表名1 where 列名1 in (select 列名1 from 表名2 where 列名2=XX...)
一般在子查询中,程序先运行内层语句,因此先测试好内层语句是否输出了想要的内容,再一层层的往外测试,增加正确率。