Mysq中SQL语句以及方言

SQL语句分类
  • DDL(Data Definition Language):数据定义语言,定义数据库对象:库、表、列等;创健、删除、修改:库、表结构
  • DML(Data Manipulation Language):数据操作语言,定义数据库记录(数据);增、删改、:表记录
  • DQL(Data Query Language):数据查询语言、查询记录(数据)
  • DCL(Data Control Language):数据控制语言,定义访问权限和安全级别;对用户的创健以及授权

数据库中所有字符串必须使用单引号

DDL
  • 查看所有数据库:SHOW DATABASE
  • 切换数据库:USE 数据库名
  • 创健数据库:CREATE DATABASE [IF NOT EXISTS] mydb1 [CHARSET=utf8]
  • 查看数据库创健语句:SWHO CREATE DATABASE 库名
  • 删除数据库:DROP DATABASE [IF EXISTS] mydb1
  • 修改数据库编码:ALTER DATABASE mydb1 CHARACTER utf8
  • 显示所有表:SHOW TABLES
  • 创健表:
    CREATE TABLE [IF NOT EXISTS] 表名 ( 列名 列类型, 列名 列类型, ... 列名 列类型, );
  • 查看表的创健语句:SHOW CREATE TBLE 表名
  • 查看表结构:DESC 表名
  • 删除表:DROP TABLE 表名
  • 添加一个列:ALTER TABLE 表名 ADD (列名,列类型)
  • 修改列类型:ALTER TABLE 表名 MODIFY 列名 列类型
  • 删除一个列:ALTER TABLE 表名 DROP 列名
  • 修改表名称:ALTER TABLE 表名 RENAME TO 新名
  • 修改列名称:ALTER TABLE 表名 CHANGE COLUMN 原列名 新列名 列类型

数据类型
https://dev.mysql.com/doc/refman/5.7/en/data-types.html
int: 整型
double: 浮点型,double(5,2),表示最多5位,其中必须有2位是小数
decimal:浮点型,在表单金额方面使用该类型,因为不会出现精度确实问题
char: 固定长度字符串类型:char(255),最大值255,数据长度不足指定长度时,会补足到指定长度,固长比定长节省空间
varchar:可变长度字符串类型:varchar(65535),会浪费一个字节记录长度
text(clob):mysql独有数据类型,可以存储超长字符串
blob: 二进制数据类型
data:日期类型yyyy-MM-dd
time:时间类型hh:mm:ss
timestamp:时间戳类型

DML
  • 插入数据
    INSERT INTO 表名(列名1,列名2,....) VALUES(值1,值2,.....)#给多少插多少
    INSERT INTO 表名 values(值1, 值2....) #默认插入所有列
  • 修改数据
    UPDATE 表名 SET 列名=列值, 列名=列值...#全修改
    UPDATE 表名 SET 列名=列值 WHERE sname='zhangsan'#全修改
    条件必须是boolean类型的值或表达式
    运算符:=、!=、<>、>、<、>=、<=、BETWEEN…数值AND…数值、IN(…集合)、IS NULL、NOT、OR、AND

age=null#永远是False,所以用 IS NULL

  • 删除数据
    DELETE FROM 表名 where age=50;
    TRUNCATE TABLE 表名:DDL语句,先删除drop该表,然后create该表,无法回滚
DCL

一般一个项目创健一个用户,一个项目对应的数据库只有一个


  • 创健用户
    CREATE USER 用户名@IP地址 IDENTIFIED BY '密码' # %表示任意
  • 给用户授权
    GRANT 权限1,权限n ON 数据库.* TO 用户名@IP地址 #ALL表示所有权限
  • 撤销授权
    REVOKE 权限1,权限n ON 数据库.* FROM 用户名@IP地址
  • 查看权限
    SHOW GRANTS FOR 用户名@IP地址
  • 删除用户
    DROP USER 用户名@IP地址
DQL

1.字段(列)控制

  • 查询所有列
    SELECT * FROM 表名
  • 查询指定列
    SELECT 列1,列n FROM 表名
  • 完全重复的记录只查询一次
    SELECT DISTINCT * FROM 表名
    SELECT DISTINCT sal FROM emp
  • 列运算
    1.数量类型的列可以做加、减、乘、除: SELECT * ,sal+1.5 FROM emp
    2.字符串类型可以做连接运算:SELECT CONCAT('STR', sal) FROM EMP
    3.转换NULL值:SELECT IFNULL(comm,0)+100 FROM emp
    4.给列起别名:SELECT IFNULL(comm,0)+100 AS 奖金 FROM emp
    5.给表起别名:SELECT a.name b.name FROM emp a, detp b
  • 条件判断
    1.条件查询:与前面DML的条件一样
    2.模糊查询:
    SELECT * FROM 表名 WHERE LIKE ''
    百分号表示若干个任意字符,下划线表示单个任意字符

2.排序

  • 升序 SELECT * FROM 表名 ORDER BY 列名 ASC
  • 降序 SELECT * FROM 表名 ORDER BY 列名 DESC
  • 多列排序
    SELECT * FROM emp ORDER BY 列名 ASC,列名 DESC ...
    使用升序第一个列名,如果相等,使用第二个列名排序,以此类推

3.聚合函数

  • COUNT
    SELECT COUNT(*) FROM 表名 计算表中所有列都不为NULL的记录的行数
  • MAX
    SELECT MAX(列名) FROM 表名 查询表中指定列的最高值
  • MIN
    SELECT MIN(列名) FROM 表名 查询表中指定列的最低值
  • SUM
    SELECT SUM(列名) FROM 表名查询指定列的和
  • AVG
    SELECT AVF(列名) FROM 表名 查询指定列的平均值

4.分组查询

  • 把记录使用某一列进行分组,然后查询组信息
    SELECT 分组列, 集合函数 FROM 表 GROUP BY 分组列 #分组列是主信息
    SELECT 分组列, 集合函数 FROM 表 WHERE ... GROUP BY 分组列 HAVING count(*) > 2 #分组前条件WHERE 分组后条件HAVING

5.LIMIT子句

  • LIMIT用来限定查询结果的起始行,以及总行数
    SELECT * FROM emp LIMIT 4,5 #从第四行开始查,查5行
  • 分页,设当前页为n,每页显示m
    SELECT * FROM emp LIMIT (n-1)*m, m

6.执行顺序

SELECT
FROM
LIMIT
WHERE
GROUP BY
HAVING
ORDER BY

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值