SQL语句

一、什么是SQL

SQL(Structured Query Language 结构化查询语言)

二、SQL分类

数据定义语言,简称DDL(Data Definition Language):定义数据库、表、列、关键字

数据控制语言:简称DCL(Data Control Language):定义访问权限和安全级别

数据操作语言:简称DML (Data Manipulation Language):操作表

数据查询语言:简称DQL(Data Query Language):查询表

三、操作

1)数据库操作语句:

-- 查看数据库
SHOW DATABASES
-- 创建数据库
CREATE DATABASE xxx CHARACTER SET utf8
-- 删除数据库
DROP DATABASE xxx
-- 使用数据库
USE xxx
-- 查看正在使用的数据库
SELECT DATABASE()

2)表格操作语句:

-- 查看所有表
SHOW TABLES
-- 查看表个够
DESC 表名
-- 创建表
/* 主键约束:primary key
  * 唯一约束:unique
  * 非空约束:not null
  * 外键:FOREIGN KEY
  * 默认值:DEFAULT
  * 值的范围:CHECK
*/
CREATE TABLE 表名(
   字段名 类型(长度) 约束,
   字段名 类型(长度) 约束
);
-- 删除表
DROP 表名
-- 修改表名
alter table 表名 add 列名 类型(长度) 约束;   --修改表添加列. 
alter table 表名 modify 列名 类型(长度) 约束;  --修改表修改列的类型长度及约束.
alter table 表名 change 旧列名 新列名 类型(长度) 约束;  --修改表修改列名.
alter table 表名 drop 列名;  --修改表删除列.
rename table 表名 to 新表名;  --修改表名
alter table 表名 character set 字符集;  --修改表的字符集

3)数据行查询语句:

-- 一般查询语句
SELECT xxx AS a, b FROM xxx_table AS c WHERE d LIKE '%xxx%' AND e='xxxx' AND f >= 666 OR g IS NULL OR not(h>100) ORDER BY i DESC

-- 分组查询(查询对应type各自有多少条数据)
SELECT type,COUNT(*) AS '总数' FROM xxx_table GROUP BY type

-- HAVING
/*
*HAVING语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句*回的记录集。
 *HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。
 *常用的聚合函数
 *sum():求某一列的和
 *avg():求某一列的平均值
 *max():求某一列的最大值
 *min():求某一列的最小值
 *count():求某一列的元素个数
*/
-- 查询各种类的平均价格,且要求平均价格>60
SELECT type,AVG(price) FROM xxx_table GROUP BY type HAVING AVG(price)>60
-- 查询各个省的最高房价,且要求最高房价>20w
SELECT provice,max(price) FROM house GROUP BY provice HAVING AVG(price)>200000

-- UNION 和 UNION ALL 合并SELECT语句
SELECT aaa FROM house
UNION ALL
SELECT bbb FROM house
/*
*|aaa| 表头
*|aaa1| 数据1
*|aaa2| 数据2
*|bbb1| 数据3
*|bbb2| 数据4
*/

-- 表连接 交叉、内、外连接
-- 交叉连接,直接做“笛卡儿积”
SELECT  *  FROM  A  CROSS  JOIN  B
-- 内连接,做“笛卡儿积”后,要根据条件保留两表相同的数据
SELECT  *  FROM  A  INNER JOIN  B ON A.id = B.id
-- 外连接,做“笛卡儿积”后,保留相同数据和主表的数据
SELECT  *  FROM  A  LEFT  JOIN  B ON A.id = B.id

4)数据行操作语句:

-- 插入数据
-- 向表中插入某些列
INSERT INTO 表 (列名1,列名2,列名3..) VALUES (值1,值2,值3..);
--向表中插入所有列
INSERT INTOVALUES (值1,值2,值3..); 
-- 向表中插入来自别的表的某些列
INSERT INTO 表 (列名1,列名2,列名3..) VALUES SELECT (列名1,列名2,列名3..) FROM-- 向表中插入来自别的表的所有列
INSERT INTOVALUES SELECT * FROM-- 更新数据
-- 更新表全部行的某些字段
UPDATE 表名 SET 字段名=值,字段名=值;
-- 更新表某些行的某些字段
UPDATE 表名 SET 字段名=值,字段名=WHERE 条件;

-- 删除数据
-- 删除全部行
DELETE FROM 表名;
-- 删除某些行
DELETE FROM 表名 WHERE 条件;

 

posted @ 2018-12-02 23:22  张啊咩  阅读(229)  评论(0编辑  收藏  举报