天天看点

SQL常用语句一、数据库操作二、表格操作三、索引操作(index):四、查寻基本操作五、数据更新操作六、视图操作七、用户授权操作八、数据库完整性操作注:

一、数据库操作

  1. 登录数据库:mysql -u root -p 密码
  2. 创建数据库:create database 数据库名称;
  3. 选择数据库:use 数据库名称;
  4. 查看所有数据库:show database;
  5. 删除数据库:

二、表格操作

  1. 查寻数据库所有表格:show tables;
  2. 创建表格:create table 表名(字段名1  字段类型   约束条件,字段名2.............);
  3. 增加表格字段:alter table 表名 add(字段名1   字段类型   约束条件............);
  4. 修改字段名:alter table 表名 chanage 旧字段名 新字段名 新数据类型;
  5. 删除表格字段:alter table 表名 drop 字段名;
  6. 修改字段类型:
  7. 增加字段约束条件:
  8. 删除字段约束条件:
  9. 删除表格:drop table 表名 restrict(删除无限制条件的的表)/cascade(删除表的同时删除有关联的内容一起被删除);

三、索引操作(index):

  1. 查看表中已经存在的索引:show index from 表名;
  2. 创建:Create uinque index 索引名 on 表名(列名);
  3. 修改索引名:alter index 旧索引名 rename to 新索引名;
  4. 删除:drop index 索引名 on 表名

四、查寻基本操作

  1. 数据查询一般格式:select 查寻内容     from  表名或者视图名    where 限制条件     group by 列名  order by 列名
    1. 查询内容:所有(*),字段名称,聚集函数。
    2. from中内容:表名、视图名、嵌套语句。
    3. 限制条件:条件表达式,嵌套语句、
    4. group by含义:结果按照列名进行分组即列值相等的为一组。并且group by 自带having即只有满足条件的才能输出。
    5. order by含义:结果按列值进行升序(asc)或降序(desc)输出。
  2. 单表查询
    1. 选择表中若干列:       select 列1,列2           from 表名
    2. 查寻全部列:              select *                        from 表名
    3. 查寻经计算的值:       select 2014-列名         from 表名
    4. 消除重复行:              select distinct 列名      from 表名
    5. 查寻满足条件的元组:select  列名                 from 表名        where  条件
    6. order by 子句:可以设置多个列
    7. 聚集函数:(where子句中不能使用)
      1. count(*)          统计元组个数
      2. count(列名)    统计一列中值的个数
      3. sun(列名)            计算一列值的总和(必须是数值型的)
      4. avg(列名)             计算一列的平均值(必须是数值型的)
      5. max(列名)            求一列的最大值
      6. min(列名)             求一列的最小值
    8. group by 子句  having(条件) 
  3. 连接查询
    1. 等值与非等值连接查寻  where语句中:select *   from 表1,表2   where  表1.列1=表2.列2
    2. 自身连接      首先为表取两个表名first,second:select first.列名,second.列名   from 表名  first,表名  second    where first.列名=second.列名              
    3. 外连接(左连接:列出左边所有关系,若右边无对应则以空值的形式输出)    select  *     from  表1 left outer join 表2  on/using(表1.列1=表2.列2);我们也可用利用using去除结果中的重复值;
    4. 多表连接  主要是利用and和偶or连接
  4. 嵌套查询
    1. 带有in的子查询(有内往外逐级输出)
    2. 带有比较运算符的子查询:注意子查询结果只有一个是可用=代替in
    3. 带有any或all的子查询:
      1. >any             大于子查询结果的某个值
      2. >all               大于子查询结果的某些值
      3. <any             小于子查询结果的某个值
      4. <all               小于子查询结果的某些值
      5. >=any           大于子等于查询结果的某个值         
      6. >=all             大于子等于查询结果的某些值    
      7. <=any          小于等于子查询结果的某个值
      8. <=all            小于等于子查询结果的某些值
      9. =any            等于子查询结果的某个值
      10. =all              等于子查询结果的某些值
      11. !=any           不等于子查询结果的某个值
      12. !=all             不等于子查询结果的某些值
    4. 带有exists的子查询:他不返回任何数据,只产生true和false;主要是用来判断子查询结果是否为空
  5. 集合查寻
    1. 并交差(union  intersect  except) 例如    select *from 表名  where 条件   union    select *from 表名  where 条件
  6. 基于派生表的查寻           select  sname   from 表1,(select sno from 表2 where cno='1') as 派生表名   where 条件 ;as为的意思即(select sno from 表2 where cno='1')关系的表名为 派生表名。

五、数据更新操作

  1. 插入数据
    1. 插入元组(一次仅能插入一个元组)    insert    into 表名(对应列名)  values(对应值);   若无指定列名,新插入的元组必须在没个属性列上均有值。
    2. 插入子查询结果(一次操作可插入多个元组)  insert into 表1(对应列1) select  对应列1 from 表2  ......
  2. 修改数据
    1. 修改某一元组值    update 表名  set  列=某某(修改部分)  where 条件
    2. 修改多个元组值(某列同时增减某个数)  update 表名  set 列名=列名+1
    3. 带子查询的修改语句     update 表名  set  列名=某某  where 条件
  3.  删除数据
    1. 删除某一元组值   delete  from 表名  where条件
    2. 删除多个元组值   清空表(delete  from 表名)
    3. 带子查询的删除语句  delete  from 表名  where   列名 in (子查询)

六、视图操作

  1. 创建视图 create view 视图名(列名) as   子查询(为哪个表的哪些字段建立视图),例如:create view 视图名as select * from 表名 where条件  with check option ;如加上with check  option这句话,我们以后对视图操作时 必须满足定义的where 条件。
  2. 删除视图    drop view 视图名
  3. 查询视图    与表格一致
  4. 更新视图    不常用
  5. 视图与表的区别

七、用户授权操作

八、数据库完整性操作

注:

  1. 查看mysql版本,cmd进入mysql下的bin目录:mysql --help | find "Distrib"或者mysql -V。
  2. 基本语法:
    1. create  创建;    drop  删除;    alter  修改;
    2. table    表格 ;   index索引;     view 视图;     schema  模式。
  3. 条件:
    1. 比较大小   >     <    =    >=    <=  !=或<>    !>(不大于)    !<(不小于)。
    2. 确定范围   between ..(下界)...and...(上界).       not between.......and......。
    3. 确定集合   in 属性值属于指定集合的元组 例如:select * from 表名  where 列名  in ('值1','值2','值3')。
    4. 字符匹配   like   %代表任意长度      _代表单个字符 例如:select * from 表名 where 列名 like '_刘%'(如何查找字符含有_或%,此时要使用\来转换)。
    5. 涉及空值的查询(例如查寻没有参加考试的学生)  select * from 表名  where  列名 is NULL;  注意is不能用=代替。
    6. 多重条件查询  and >or  例如 :select *  from 表名  where 列名1='   ' and 列名2='  '。
  4. order by和group by 只能对最终结果进行操作,不能用于子查询中。
  5. 派生表是指当子查询出现在from中,子查询会临时生成一个表叫派生表
sql