-
DDL操作
-
CREATE TABLE建表
示例
CREATE TABLE IF NOT EXISTS `student` ( `id` INT NOT NULL, `name` VARCHAR(50), `age` INT, `address` VARCHAR(100) ) CHARSET=utf8;
-
常用约束
- 主键约束:primary key
- 唯一约束:unique
- 非空约束:not null
- 默认约束:default
- 外键约束:foreign key
- 自动增长:auto_increment
-
DROP TABLE删表
示例
DROP TABLE student;
-
查看数据库中的所有表
SHOW TABLES;
-
查看表的字段信息
DESC student;
-
ALTER 修改表
-
增加列
示例
ALTER TABLE student ADD image blob;
-
修改列
示例
ALTER TABLE student MODIFY address varchar(60);
-
删除列
示例
ALTER TABLE student DROP image;
-
-
-
DML操作
-
插入操作:INSERT
语法: INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...);
示例
INSERT INTO student(id,name,age,address) values (1,'zhangsan',20,'中国');
INSERT INTO student(id,name,age,address) values (4,'曹操',27,'中国'), (5,'周瑜',28,'中国'), (6,'赵云',30,'中国');
-
修改操作:UODATE
语法:UPDATE 表名 SET 列名1=列值1,列名2=列值2 ... WHERE 列名=值
示例
UPDATE student SET age=25;
-
删除操作:DEKETE
语法 : DELETE FROM 表名 【WHERE 列名=值】
示例
DELETE FROM student WHERE name=‘zhangsan’;
-
-
DQL数据查询
语法: SELECT 列名 FROM 表名 【WHERE --> GROUP BY-->HAVING--> ORDER BY-->LIMIT】
-
简单查询
示例
SELECT * FROM stu;
-
条件查询
关键字WHERE
-
比较运算符
=、!=、<>、<、<=、>、>=;
BETWEEN…AND;
IN(set);
IS NULL;
-
算数运算符
+ - * / %
示例
SELECT * FROM stu WHERE gender='female'
-
模糊查询
-
通配符
- _ :任意一个字符
- %:任意0~n个字符
示例
SELECT * FROM stu WHERE sname LIKE '___';
-
-
字段控制查询
-
DISTINCT去重
SELECT DISTINCT sal FROM emp;
-
运算查询
SELECT *,sal+comm FROM emp;
-
列名添加别名
SELECT *, sal+IFNULL(comm,0) AS total FROM emp;
SELECT *, sal+IFNULL(comm,0) total FROM emp;//AS可以省略
-
-
排序
关键字 ORDER BY
DESC降序, ASC升序(默认)
示例
SELECT * FROM stu ORDER BY age DESC;
-
聚合函数
COUNT():统计指定列不为NULL的记录行数; MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算; MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算; SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0; AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
示例
SELECT COUNT(*) AS ‘cnt’ FROM emp;//查询表中记录数
-
分组查询
关键字:GROUP BY
示例
SELECT deptno, SUM(sal) FROM emp GROUP BY deptno;//查询每个部门的部门编号和每个部门的工资和
-
HAVING
- 与WHERE相似,都是条件筛选
- having和where的区别:
- having是在分组后对数据进行过滤,where是在分组前对数据进行过滤
- having后面可以使用分组函数(统计函数),where后面不可以使用分组函数
-
LIMIT
LIMIT用来限定查询结果的起始行,以及总行数。
示例
SELECT * FROM emp LIMIT 0, 5;//表示查询前5行记录
-
多表查询
-
多表的关系
- 一对多关系
- 一对一关系
- 多对多关系
-
连接查询
-
内连接
内连接的特点:查询结果必须满足条件。
示例
SELECT * FROM emp e INNER JOIN dept d ON e.deptno=d.deptno;
-
外连接
左外连接:以左表为主表,右表是从表
示例
SELECT * FROM emp e LEFT OUTER JOIN dept d ON e.deptno=d.deptno;
-
-
子查询
-
子查询出现的位置
- where后,作为被查询的条件的一部分
- from后,作临时表
-
示例
SELECT * FROM emp WHERE sal > (SELECT sal FROM emp WHERE ename='JONES');
SELECT ename,job,hiredate FROM (SELECT ename,job,hiredate FROM emp WHERE hiredate>'1987-1-1') AS temp;
-
-
SQL语句基础
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...