mysql学习笔记

1、SQL语句分为数据操作语言(DML)和数据定义语言(DDL)

数据操作语言部分:

  • select 获取数据
  • update 更新数据
  • delete删除数据
  • insert into 插入数据

数据定义语言部分:

  • create database 创建新数据库
  • alter database 修改数据库
  • create table创建新表
  • alter table 修改数据表
  • drop table 删除表
  • create index 创建索引
  • drop index 删除索引

2、 语法
(1)select语句
  SELECT 列名称 FROM 表名称
  列名可以是*,会查询出所有列
(2)select distinct语句
  SELECT DISTINCT 列名称 FROM 表名称
  只会查询出值不同的行
(3)where子句
  SELECT 列名称 FROM 表名称 WHERE 列 运算符 条件值
  为别的语句添加条件,运算符有=,!=,>,<,<=,>=,between,like
  条件值如果是字符串用''括起来
  like的使用语法是select 列名称 from 表名称 where 列名称 like 匹配条件
  匹配条件是'a%',就是筛选出这个列中以a开头的所有行,%是通配符
  and和or,用于分隔条件,and是与,or是或
(4)order by语句
  SELECT 列名称 FROM 表名称 order by 列名称
  会根据列进行升序操作
  SELECT 列名称 FROM 表名称 order by 列名称 desc
  会根据列进行降序操作
(5)insert into语句
  insert into 表名称 (列1,列2) values(值1,值2)
  insert into 表名称 values(值1,值2)
(6)update语句
  更新某一列
    update 表名称 set 列名称=值2 where 列名称=值1
  更新某几列
    update 表名称 set 列1=值1,列2=值2 where 列1=值3
(7)delete语句
  删除某一行
    delete from 表名称 where 列1=值1
  删除所有行,保留表结构
    delete from 表名称
  delete * from 表名称
(8)top子句和 top percent子句
  选取前2条记录
  select 列名称 from 表名称 limit 2
  mysql不支持top子句,top percent子句也不支持
(9)in子句
  匹配多个值
  select 列名称 from 表名称 where 列名称 in (值1,值2)
(10)between子句
  mysql的between查询结果会包括值1和值2,数据库不同这个结果可能不同
  select 列名称 from 表名称 where 列名称 between 值1 and 值2
  在between前加个not,会查询出相反的结果
  select 列名称 from 表名称 where 列名称 not between 值1 and 值2

3、
(1)通配符
  使用通配符是一般是搭配like子句
  %代表任意多字符
  _代表任意一个字符
  [^asd]/[!asd]除了asd之外的任意一个字符(在mysql中!是没用的,必须要用^)
  [asd]asd中的任意一个字符(在mysql中like是不能跟[]搭配的,[]必须要跟regexp搭配)
  当使用regexp时,匹配田间就不是%和_,而是^(非),*(匹配前面的子表达式0次或多次),+(匹配前面的子表达式一次或多次),{n}(例如a{2}匹配2个a),{n,m}(例如a{2,3}匹配a最少2个最多3个)
(2)alias别名
  表名的别名
    select 列名称 from 表名称 as 表别名
  列的别名
    select 列名称 as 列别名 from 表名
(3)关联2个表
    inner join:在表中存在至少一个匹配,返回该行 内连接
    left join:从左表返回所有行,即使右表没有匹配 左外连接
    right join:从右表返回所有行,即使左表没有匹配 右外连接
    full join:会返回所有行,即使左右表都没有匹配 全外连接
(4)合并多个结果集
  union语句
  合并不重复的值
    select语句1 union select语句2
  合并不重复的值
    select语句1 union all select语句2
(5)把列插入到另一个表中
  select 表名称 into 新表名[数据库名] from 旧表名
(6)sql约束
  not null 如果不向字段添加值,就无法更新数据或插入数据
  unique唯一,但是可为空 建表时在最后一行加上unique key(列名)即可
    撤销unique约束alter table 表名称 drop index 列名称
  primary key主键
    撤销主键使用alter table 表名称 drop primary key
  foreign key 外键 foreign key (本表列名) references 其他表名称(其他表主键)
    撤销外键约束alter table 表名称 drop foreign key 外键名
  check约束 用于约束列中值得范围 check(类名称>0)类中的值要大于0
    撤销check约束alter table 表名称 drop constraint 被check约束列名称
  defuault默认
    将默认值添加到有default约束的列
    撤销default约束alter table 表名称 alter 列名称 drop default
(7)索引
  create index语句用于创建索引,所有可以使用重复的值,索引值不能是数字
  create index 索引名 on 表名称(列名称)
  创建唯一索引:2行不能拥有一样的索引值
  create unique index 索引名 on 表名称(列名称)
  删除索引alter table 表名称 drop index 索引名
(8)改变表结构操作
  删除表中所有数据:drop table 表名称
  删除表中所有数据,保留表结构 :truncate table 表名称
  添加列:alter table 表名称 add 列名称 数据类型
  删除列:alter table 表名称 drop column 列名称
  改变列数据类型:alter table 表名称 alter column 列名称 新数据类型
(9)auto-increment自增

  只有主键才能使用这个约束,每次更新加1,从1开始
  改变起始值:alter table 表名称 auto-increment=值1
(10)时间函数
  now()当前日期时间
  curdate()当前日期
  curtime()当前时间
  date_format()格式化时间
(11)函数
  select 函数名(列名称) from 表名称
  avg()平局值
  count()行数
  max()最高值
  min()最低值
  sum()总和
  group by语句 用于对结果集进行分组,通常用于合计函数,合并相同名称的行
  select 列名称 sum(列名称) from 表名称 group by 列名称
  having子句:合计函数不能增加where条件判断,要使用having子句
  select 列名称,函数名(列名称) from 表名称 having 函数名(列名称)<200
  ucase()转为大写
  select ucase(列名称) from 表名称
  lcase()转为小写
  mid()从字段中提取字符
  select mid(列名,起始位置,提取长度)from 表名
    提取长度属性是可选的
  len()返回字段长度
  round()格式化小数
  select round(列名称,小数位数)from 表名称

 

posted @ 2017-06-18 20:58  神芝  阅读(148)  评论(0编辑  收藏  举报