mysql知识详解(上)——SQL语句基础

SQL语句基础

SQL全称:Structured Query Language ,结构化查询语言。

SQL语句分类

  • 查询语句:select关键字
  • DML(Data Manipulation Language,数据操作语言):主要有insert,update,delete三个关键字
  • DDL(Data Definition Language):create,alter,drop,truncate四个关键字
  • DCL(Data Control Language): grant revoke两个关键字。
  • 事务控制语句:commit,rollback,savepoint三个关键字完成。

sql关键字不区分大小写

标识符命名规则:

  • 通常必须以字母开头
  • 可以包括字母,数字,三个特殊字符(#_$)
  • 不要使用当前数据库系统的关键字,保留字,通常由单词连缀而成,单词之间以_分开
  • 同一个模式下的对象不应该同名,模式指的是外模式。

数据类型

  • 整型
    • tinyint(1个字节)
    • smallint(2个字节)
    • int(4个字节)
    • bigint(8个字节)
  • 无符号数字
    • tinyint
    • unsigned (0~255)
  • 字符串
    • char(length): 定长,效率高
    • varchar(length):变长
  • 浮点类型
    • double
    • float
  • 定点小数
    • decimal(总位数, 小数位数):例如:decimal(10, 2) 小数部分两位,整数部分最大8位
  • 日期类型
    • datetime
    • timestamp

DML语句

  • 1.创建数据库
    • create database 数据库名;
  • 2.创建表
    • create table 表名(列定义);
create table test
(
    #整形常用int
    test_id int,
    #小数点
    test_price decimal,
    # 普通长度文本 default指定默认值
    test_name varchar(255) default 'xxx',
    # 大本文类型
    test_desc text,
    #图片
    test_img blob,
    test_date datetime
);
  • 3.删除数据库
    • drop database 数据库名
  • 4.删除表名
    • drop table 表名
  • 5.修改表
    • alter table 表… (增删改)
添加列
语法:alter table 表名 add 列名 数据类型;

修改列
语法:alter table 表名 modfiy 列名 新类型 ;

删除列
语法:alter table 表名 drop 列名;

重命名列
语法:alter table 表名 rename column 旧列名 to 新列名;
语法:alter table 数据库名.表名 change 旧列名 新列名 类型;

重命名表
语法:alter table 表名 to 新表名;

数据库约束

  • 数据分类:
    • not null: 非空约束,指定列不饿为空
    • unique:唯一约束 ,指定列里不能有重复
    • primary key :主键,该列的值可以唯一标识该条记录
    • foreign key:外键 该行记录从属与主表的某条记录
    • check约束:检查约束,该列的值必须满足这个check表达式。mysql不支持check约束
  • 指定约束:
    • 在建表的时候指定约束
    • 表创建完成后,以修改表的方法增加约束。
  • 约束分类
    • 单列约束
    • 多列约束

DML语句(基于表的语句)

  • 功能:
    • 插入新数据
    • 修改已有数据
    • 删除不需要的数据
      -分类:
      1. insert into 语句(插入数据)
      • 格式:insert into 表名 (列名1,列名2…) values (值1,值2…)
      • 插入某一行数据
    • 2.update 语句(更新数据)
      • 格式: update 表名 set 列1 = 值2,…
      • 更新一行数据,也可以在后面加上where指定到具体更新哪一行。
    • 3.delete from 语句
      • 格式: delete from 表名 [where 限定]
      • 删除与where匹配的行数据。

select 查询

  • 完整格式:select 列名… from 表 where 条件 group by 分组条件 having 分组筛选条件 order by 排序条件 limit;
  • 意思为,查询在表的列,按照where条件过滤,再按照group by 分组 最后筛选,再显示排序【升序(asc)或者降序(desc)】。
  • Sql语句支持简单的><=等等算术运算符,当然也有一些复杂的,比如:
    • expr1 between expr2 and expr3:要求exper1在exper2和exper3之间,包含双边。
    • exper1 in (exper1,exper2 ,exper3 ,exper4):要求exper1包含于后面的集合。
    • like:字符串匹配,支持通配符。又称模糊查询。
    • is null 要求指定值为null。
    • not,and,or等等。
  • 限制返回结果个数
    • limit m; // 最多返回m个结果
    • limit n,m; // 最多返回m个结果,n代表起始下标,下标从0开始

DCL语句

  • grant 授权
  • revoke 回收权限
创建用户
sql
create user 用户名 identified by '密码';

授权语法:
sql
grant 权限 to 用户名;

例如:把查询test库中所有表的查询权限授权给user1
grant select on test.* to user1;

回收权限
sql
revoke 权限 from 用户名;

例如:回收之前分配的权限:
revoke select on test.* from user1;

数据库函数(常用于select语句之后或者where子句之中)

  • 函数被分为多行函数和单行函数,单行函数对每行输入的值单独计算,每行得到一个结果返回给用户,多行函数对多行输入值整体计算,最后只得到一个结果。

  • 语法:函数名(参数1,参数2,…)

  • 单行函数分类:

    • 日期时间函数
    • 数值函数
    • 字符函数
    • 转换函数
    • 其他函数:再分类
      • 位函数
      • 流程控制函数
      • 加密解密函数
      • 信息函数
  • 数学函数

函数名 作用
ABS(x) 返回x的绝对值
BIN(x) 返回x的二进制(OCT-八进制,HEX-十六进制)
CEILING(x) 返回大于x的最小整数值
EXP(x) 返回值e(自然对数的底)的x次方
FLOOR(x) 返回小于x的最大整数值
GREATEST(x1…,xn) 返回集合中最大的值
LEAST(x1…,xn) 返回集合中最小的值
LN(x) 返回x的自然对数
LOG(x,y) 返回x的以y为底的对数
MOD(x,y) 返回x的以y为底的对数
RAND() 随机数生成器生成一个指定的值
ROUND(x,y) 返回参数x的四舍五入的有y位小数的值
SIGN(x) 返回代表数字x的符号的值
SQRT(x) 返回一个数的平方根
TRUNCATE(x,y) 返回数字x截短为y位小数的结果
  1. 聚合函数(常用于GROUP BY从句的SELECT查询中)
函数名 作用
AVG(col) 返回指定列的平均值
COUNT(col) 返回指定列中非NULL值的个数
MIN(col) 返回指定列的最小值
MAX(col) 返回指定列的最大值
SUM(col) 返回指定列的所有值之和
GROUP_CONCAT(col) 返回由属于一组的列值连接组合而成的结果
  1. 字符串函数
函数名 作用
ASCII(char) 返回字符的ASCII码值
BIT_LENGTH(str) 返回字符串的比特长度
CONCAT(s1,s2…,sn) 将s1,s2…,sn连接成字符串
CONCAT_WS(sep,s1,s2…,sn) 将s1,s2…,sn连接成字符串,并用sep字符间隔
LCASE(str)/LOWER(str) 返回将字符串str中所有字符改变为小写后的结果
LEFT(str,x) 返回字符串str中最左边的x个字符
LTRIM(str) 从字符串str中切掉开头的空格
POSITION(substr,str) substr在字符串str中第一次出现的位置
QUOTE(str) 用反斜杠转义str中的单引号
REPEAT(str,srchstr,rplcstr) 返回字符串str重复x次的结果
REVERSE(str) 返回颠倒字符串str的结果
RIGHT(str,x) 返回字符串str中最右边的x个字符
RTRIM(str) 返回字符串str尾部的空格
STRCMP(s1,s2) 比较字符串s1和s2
TRIM(str) 去除字符串首部和尾部的所有空格
UCASE(str)/ UPPER(str) 去除字符串首部和尾部的所有空格
  1. 日期和时间函数
函数名 作用
CURDATE()/CURRENT_DATE() 返回当前的日期
CURTIME()/CURRENT_TIME() 返回当前的时间
DATE_FORMAT(date,fmt) 依照指定的fmt格式格式化日期date值
DAYOFWEEK(date) 返回date所代表的一星期中的第几天(1~7)
DAYOFMONTH(date) 返回date是一个月的第几天(1~31)
DAYOFYEAR(date) 返回date是一年的第几天(1~366)
FROM_UNIXTIME(ts,fmt) 根据指定的fmt格式,格式化UNIX时间戳ts
UNIX_TIMESTAMP(date) 把字符串日期转成时间戳
NOW() 返回当前的日期和时间
WEEK(date) 返回日期date为一年中第几周(0~53)
YEAR(date) 返回日期date的年份(1000~9999)
  1. 系统信息函数
函数名 作用
DATABASE() 返回当前数据库名
BENCHMARK(count,expr) 返回当前的时间
CONNECTION_ID() 返回当前客户的连接ID
FOUND_ROWS() 返回最后一个SELECT查询进行检索的总行数
USER()/SYSTEM_USER() 返回当前登陆用户名
VERSION() 返回MySQL服务器的版本

常用的数据库函数就是这些。

基础知识就整理到这里,在mysql知识详解(下)里整理连接查询和子查询。

你可能感兴趣的:(mysql,java工具)