SQL基本语法总结

#创建数据库
DROP DATABASE IF EXISTS 数据库名;
CREATE DATABASE 数据库名;
#展示所有的数据库:
SHOW DATABASES;
#查看某个数据库的定义信息:
SHOW CREATE DATABASE 数据库名;
#删除数据库:
DROP DATABASE 数据库名;
#使用某个(切换)数据库:
USE 数据库名;
#查看正在使用的数据库:
SELECT DATABASE();
#展示所有的数据表:
SHOW TABLES;
#-------------------------------------------------------------------------

#创建数据表:
PRIMARY KEY AUTO_INCREMENT 主键 自动增长
CREATE TABLE 表名(列名1 该列的类型,列名2 该列的类型,列名3 该列的类型);
#删除数据表
DROP TABLE 数据表名;
#查看数据表结构
DESCRIBE 数据表名;
#-------------------------------------------------------------------------

#基本的语句
#增:插入一条: 
INSERT INTO 表名(列名1,列名2,列名3) VALUES(值1,值2,值3);
#批量插入:
INSERT INTO 表名(列名1,列名2,列名3) VALUES
(值1,值2,值3),
(值1,值2,值3),
(值1,值2,值3)
#-------------------------------------------------------------------------

#SQL更新语句,对数据表中原有的数据进行修改
   #语法格式:
       UPDATE 表名  SET 字段1=值1, 字段2=值2  WHERE 修改的条件
       UPDATE gjp_ledger SET money = 50,ldesc='家庭PARTY' 
     #注意,UPDATE修改表数据的时候,加上WHERE条件

UPDATE gjp_ledger SET money = 724 , ldesc = '家庭PARTY' WHERE lid=1
#-------------------------------------------------------------------------

#对已经做好的数据表,进行结构上的修改
CREATE TABLE temp(
    id INT PRIMARY KEY AUTO_INCREMENT,
    t_name VARCHAR(50),
    t_text VARCHAR(100),
    t_money DOUBLE
)

-- RENAME TABLE 旧表名 TO 新表名 
RENAME TABLE temp TO  newtemp

-- ALTER TABLE 表名 ADD 列名 类型; 添加列操作
ALTER TABLE temp ADD t_day DATE

-- ALTER TABLE 表名 MODIFY 列名 类型;修改列类型
ALTER TABLE temp MODIFY t_money INT

-- ALTER TABLE 表名 DROP 列名;  删除列
ALTER TABLE temp DROP t_day

-- ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;  修改列名称
ALTER TABLE temp CHANGE t_money newt_money DOUBLE

-- DROP TABLE 表名
DROP TABLE temp
#-------------------------------------------------------------------------

#删除数据表中的数据
   #语法:
     DELETE FROM 表名  删除表中的所有数据
    
     DELETE FROM 表名 WHERE 条件    删除的是指定满足条件的数据

    DELETE FROM gjp_ledger WHERE lid = 2
#-------------------------------------------------------------------------

#查询
#DOS命令行执行SQL语句可能会出现乱码问题,怎么解决?
   SET NAMES 'GBK'
   SELECT 列名1,列名2...  FROM 表名  #查看指定列
   SELECT * FROM 表名;     #可以查看所有的列
   SELECT DISTINCT ACCOUNT FROM 表名;  #查询的时候,会去掉ACCOUNT类的重复项。
   SELECT * FROM 表名 WHERE 条件;    #带条件的查询
#条件的分类:
   #1、比较运算符
     > < >= <= = !=(<>)
   #2、逻辑运算符:
     AND, OR , NOT  
   #3、区间的判断
     BETWEEN 值1 AND 值2;  #值2必须大于值1
   #4、固定值得判断
     IN (值1,值2,值3);
   #5、模糊查询:
     A:% 可以匹配多个  
     B:_ 只能匹配一个
#-------------------------------------------------------------------------
#SQL语句中的WHERE条件查询

-- 查询所有支出记录
SELECT * FROM gjp_ledger WHERE parent = '支出'

-- 查询出金额价格大于1000的信息
SELECT * FROM gjp_ledger WHERE money > 1000

-- 查询出金额在2000-5000之间的账务信息
SELECT * FROM gjp_ledger WHERE money >= 2000 AND money <=5000
SELECT * FROM GJP_LEDGER WHERE MONEY BETWEEN 2000 AND 5000

-- 查询出金额是1000或5000或3500的商品信息
SELECT * FROM gjp_ledger WHERE money = 1000 OR money = 5000 OR money = 3500
SELECT * FROM gjp_ledger WHERE money IN (1000,5000,3500)

-- 查询出账务的银行有工商银行的账务信息 , 模糊查询
-- 模糊查询出,ACCOUT 开头是工商就可以,后面必须是2个字符
SELECT * FROM gjp_ledger WHERE account LIKE '工商__'

-- 模糊查询出,ACCOUT 开头只要是工商就可以
SELECT * FROM gjp_ledger WHERE account LIKE '工商%'

-- 模糊查询出,ACCOUNT 只要有工商就可以
SELECT * FROM gjp_ledger WHERE account LIKE '%工商%'

-- 查询出账务ACCONT不为NULL账务信息
SELECT * FROM gjp_ledger WHERE account IS NOT  NULL
#-------------------------------------------------------------------------


# 聚合函数

-- COUNT  统计符合查询条件的数据,共有多少行
SELECT COUNT(*) AS 'COUNT' FROM gjp_ledger;

-- COUNT 统计所有工商银行的内容,共有多少条
SELECT COUNT(*) FROM gjp_ledger WHERE account LIKE '%工商银行%'

-- 统计账务表中金额大于3000的有多少条记录
SELECT COUNT(*) FROM gjp_ledger WHERE money > 3000


-- SELECT SUM(求和列,数字) FROM 表名
-- 查询账务表,求出MONEY字段的和
SELECT SUM(money) FROM gjp_ledger

-- 查询账务表,统计所有支出的金额总和
SELECT SUM(money) FROM gjp_ledger WHERE parent = '支出'

-- MAX,MIN 求出最大和最小值
-- 查询账务表,统计出 支出中的最大值 和 收入中的最小值
SELECT MAX(money) FROM gjp_ledger WHERE parent = '支出'
SELECT MIN(money) FROM gjp_ledger WHERE parent = '收入'

-- AVG(自段) 计算这个字段的平均数
-- 查询账务表,计算出,所有支出的平均数
SELECT AVG(money) FROM gjp_ledger WHERE  parent = '支出'

#-------------------------------------------------------------------------
# 查询数据表后,对结果进行排序
  
   ORDER BY 子句
  
  #语法格式:写在查询语句的最后面
      ORDER BY 排序的列名 [DESC] 倒序排列

-- 查询账务表,使用MONEY字段,进行排序
SELECT * FROM gjp_ledger ORDER BY money

#-------------------------------------------------------------------------
#分组查询
    GROUP BY 要分组的列名
    #必须配合聚合函数

-- 我们要统计出GJP_LEDGER表中所有分类账务的总数量
-- 查询出,支出的共计多少钱,收入的共计多少钱
SELECT SUM(money),parent FROM gjp_ledger GROUP BY parent

-- 查询出,所有的金额总和,账务分类
SELECT SUM(money),parent,account FROM gjp_ledger GROUP BY parent,account

-- 查询出,支出的共计多少钱,收入的共计多少钱, 只显示大于20000元的
-- HAVING 子句,跟随分组,分组后,对结果再次过滤
SELECT SUM(money)AS 'summoney',parent FROM gjp_ledger  GROUP BY parent
HAVING summoney >= 20000

#-------------------------------------------------------------------------

原文地址:https://www.cnblogs.com/huguangqin/p/7137580.html