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