-
打开数据库:USE 数据库名。
显示表:SHOW TABLES;
显示当前表或者数据库:SELECT TABLES/DATABASES();
创建表:CREATE TABLE tb();
查看全部 -
使用比较运算符的子查询=、>、<、>=、<=、<>、!=、<=>
语法结构 operand comparison_operator subquery
如:SELECT AVG(goods_price) FROM tb1_goods; ——查找到的是平均价格。
SELECT ROUND(AVG(goos_price),2) FROM tb1_goods; ——这个是对查找到的平均数保留两位小数。
假如平均值为:5636.36 , 那么接下来查找大于平均值的列:
SELECT goods_id,goods_name,goods_price FROM tb1_goods WHERE goods_price>=5636.36;
因为5636.36是说那个一条的结果,那么将两个语句合并后为:(子查询)
SELECT goods_id,goods_name,goods_price FROM tb1_goods WHERE goods_price>=(SELECT ROUND(AVG(goods_price),2) FROM tb1_goods);
如果要查找其他结果,如:SELECT goods_price FROM tb1_goods WHERE goods_cate='超级本'; ——查找超级本的价格
SELECT * FROM tb1_goods WHERE goods_cate='超级本'; —— 查找超极本的所有列
SELECT good_id,goods_name,goods_price FROM tb1_goods WHERE goods_price>(SELECT goods_price FROM tb1_name WHERE goods_cate = '超极本'); ——返回值为错误,原因是>后面的查找结果不是唯一的,而且并没有指定>的是具体那个数或者范围,那么:
此时就需要用到:operand comparison_operator ANY (subquery)
operand comparison_operator SOME (subquery)
operand comparison_operator ALL (subquery)其中,ANY, SOME, ALL的使用原则就是:这三个是在大于号后边写的
ANY SOME ALL
> 和 >= min min max
< 和 <= max max min
= 任意值 任意值
<> 和 != 任意值
查看全部 -
子查询(Subquery)是指出现在其他SQL语句内的SELECT子句。
例如:
SELECT * FROM t1 WHERE col1= (SELECT col2 FROM t2);
其中SELECT * FROM t1,称为Outer Query/Outer Statement
SELECT col2 FROM t2,称为SubQuery
subquery:指的是我们所有知道SQL命令的统称
(1)子查询指嵌套在查询内部,且必须始终出现在圆括号内。
(2)子查询可以包含多个关键字或条件,如DISTINCT, GROUP BY, ORDER BY,LIMIT,函数等。
(3)子查询的外层查询可以是:SELECT,INSERT,UPDATE,SET或DO
(4)子查询可以返回标量、一行、一列或子查询。
查看全部 -
限制查询结果返回数量
[LIMIT{[offset,]row_countrow_count OFFSET offset}]
例:
SELECT * FROM users LIMIT 2; // 从第一条开始(第一个为0),返回两条
SELECT * FROM users LIMIT 2,3 ;//从第三条开始(第一个为0),返回三条
第一个2表示从2+1条开始 3表示返回三条
第三种insert,数据从一个表插入到另一个表:
INSERT table_name(column_name) SELECT ...
例:
INSERT test SELECT username FROM users WHERE age >=30; // 字段不匹配提示
INSERT test(username) SELECT username FROM users WHERE age >=30;
查看全部 -
having进行条件指定讲究有点多啊,如果是having部分的条件是聚合函数,比如最大值,最小值,平均值,等等,则可以写不在select中的字段,写在聚合函数里面即可,但是如果没有聚合函数则必须是存在于select中的某个字段
查看全部 -
查询结果分组 GROUP BY
[GROUP BY {col_name|position} [ASC|DESC],...]
ASC:升序,默认
DESC:降序
position:SELECT语句中列的序号
例:
SELECT sex FROM users GROUP BY sex;
对users中的sex按sex进行分组
例:
SELECT * FROM users GROUP BY 1;
(这里的1表示查询的第一个字段,这里查询所有字段信息,第一个字段就是id,所以会按照id字段进行分组)
1表示SELECT语句中第一个出现的字段,即位置。
建议BY后写列名称,不写位置,因为位置还要人为数。
注意:如果存在相同的值(例如上面的age可能有多个相同的值),只会保留一个。但使用ORDER BY 就不会省略。
查看全部 -
查询表达式
每一个表达式表示想要的一列,必须至少有一个
多个列之间以英文逗号分隔
星号(*)表示所以列 tbl_name.*可以表示命名表的所有列
查询表达式可以使用[As]alias_name为其赋予别名
别名可用于GROUP BY,ORDRE BY或HAVING子句
SELECT 字段出现顺序影响结果集出现顺序,字段别名也影响结果集字段别名。
一、查找记录
1、语法:
SELECT select_expr [,select expr2...] 只查找某一个函数或表达式
{
FROM table_references 查询表名
[WHERE where_conditon] 查询条件
[GROUP BY {col_name|position} [ASC|DESC],...] 按某个字段进行分组,相同的只显示第一个
[HAVING where_conditon] 分组时,给出显示条件
[ORDER BY {col_name|expr|position} [ASC|DESC],...] 排序
[LIMIT {[offset,]row_count|row_count OFFSET offset}] 限制返回数量
}
2、查询表达式的顺序会影响结果顺序
每个表达式表示想要的一列,必须有至少一个
多个列直接以英文逗号分隔
星号*表示所有列
3、使用tbl_name.col_name来表示列记录,这多表查询时可以区别开同名的列
4、使用[AS] alias_name为其赋予别名,别名可以用于GROUP BY、ORDER BY或HAVING子句,例如SELECT id AS userId,username AS uname FROM users; 这样查询出来的结果会用别名表示
查看全部 -
1、删除记录DELETE:分为单表删除和多表删除
2、单表删除:DELETE FROM tbl_name [WHERE where_conditon];
3、若不添加WHERE则删除【全部记录】
删除后再插入,插入的id号从最大的往上加,而不是填补删除的
查看全部 -
单表更新:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={exp1|DEFAULT}[,col_name2=...][WHERE where_condition] 【一般来说要用WHERE指定位置,不然所有数据都会被更新】
例:
不指定位置:UPDATE users set age = age + 5,sex = 0; 使表里所有记录的age加5
指定位置: UPDATE users set age = age+ + 10 WHERE id % 2=0; 取id为偶数的位置
update更新数据
update <表名>
set <列名>=<表达式>,[,<列名>=<表达式>]...
[where <条件>];
查看全部 -
前面说的insert [column_name]values(...)[,(...),(....)];的方法比较常用,可以一次性插入多条记录,并且可以输入表达式甚至是函数
但是无法进行子查询
insert tb_name set column_name={expr|default}的方法是可以进行子查询,但是只能插入一条记录
第三种insert方法 insert table_name [(colname...)] select.....
这种方法就是把查询到的结果插入到指定数据表中
查看全部 -
1、INSERT 插入记录
语法1:INSERT [INTO] 表名 [(列名1,列名2,...)] VALUES(列值1,列值2,...),(...),...;
对于自动编号的字段,插入“NULL”或“DEFAULT”系统将自动依次递增编号;
对于有默认约束的字段,可以插入“DEFAULT”表示使用默认值;
列值可传入数值、表达式或函数,如密码可以用md5()函数进行加密(如md5('123'));
可同时插入多条记录,多条记录括号间用逗号“,”隔开
语法2:INSERT [INTO] 表名 SET 列名1=列值1, 列名2=列值2,...;
这种方法一次只能插入一条记录;列值中有自动编号、默认值或Boolean类型均可以不赋值(使用子查询)
语法3:INSERT [INTO] 表名(列名1,...) SELECT 列名1,... FROM 表名 [GROUP BY/HAVING/ORDER BY/LIMIT...];
一般用于将其他表的数据插入到指定表,注意对应
2、单表更新 UPDATE
UPDATE 表名 SET 列名1=列值1 [,列名2=列值2, ...] [WHERE 条件];(如条件为 列名=列值 修改某一字段的值)
省略条件则更新所有记录该列的值
3、单表删除 DELETE
DELETE FROM 表名 [WHERE 条件];
省略条件则默认删除该表所有记录(仅删除所有记录,不删除数据表);
插入自动编号的字段时,号数为已有的最大号数+1,即使中间有空号数也是如此(如12356,插入记录后为123567)
查看全部 -
删除主键约束:
ALTER TABLE 表名 DROP PRIMARY KEY(主键唯一,所以不用添加主键名称)
删除唯一约束:
ALTER TABLE 表名 DROP {INDEX|KEY} 列名
那么查看唯一约束: SHOW INDEX FROM tb1_name(\G 是以网格形式呈现);
删除外键约束:
ALTER TABLE tb1_name DROP FOREIGN KEY 外键约束的名字
那么查看外键约束名字: SHOW CREATE TABLE 表名;
查看全部 -
在已经建好的表中添加约束:
1, 主键约束: alter table 表名 add primary key (列名);
2,外键约束: alter table 表名 add foreign key (外键列) references 参照表 (参照列);
3, 唯一约束: alter table 表名 add unique key (列名) ;
4, 添加默认约束: alter table 表名alter 列名 set default 默认值;
5, 删除默认约束: alter table 表名 alter 列名 drop default;
查看全部 -
创建数据库:
CREATE DATABASE t1;
显示创建的数据库类型:
SHOW CREATE DATABASE t1;
创建某一类型的数据库:
CREATE DATABASE IF NOT EXISTS t2 CHARACTER SET gbk;
更改数据库类型:
DATABASE t2 CHARACTER SET =utf8;
显示现有数据库:
SHOW DATABASES;
删除t1:DROP DATABASE t1;
DROP DATABASE IF EXISTS t1;
显示告警:SHOW WARNINGS;
查看全部 -
关键字、函数名称大写;表、数据库、字段小写。sql语句需以;结尾
select version();
select now();
select user();
*以上大写。
查看全部
举报