mysql基本语法

来源:互联网 发布:淘宝儿童玩具警车视频 编辑:程序博客网 时间:2024/06/08 00:17

增删改查

  1. distinct查询结果中消除重复行

    select distinct(属性列) from 表名;select distinct 属性列 from 表名;
  2. order by,默认升排asc,降排desc
    ——先公司名排序,再按序号排

    SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
  3. update 表名 set 属性=新值;
    ——若更新多列,“,”隔开

    UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson';
  4. 在不删除表的情况下删除所有的行

    delete from 表名;delete * from 表名;

    //删掉工资为空的行
    delete from 表名 where gongzi is null;

  5. 插入语句

    insert into 表名 values();insert into 表名(指定要插入的列) values();

【重点】
一、多表连接
 inner join
 outer join(left/right outer join,full outer join,全连接MySQL不支持)
 自然连接
 自连接

 – inner join

    select * from buyer t1 inner join buyerorder t2 on t1.id=t2.id;

 – 三表inner join

    select * from buyer t1 inner join buyerorder t2 on t1.id=t2.id inner join score t3 on t2.id=t3.id;

二、约束(可以给其专门取个名字)
 unique
 null
 primary key
 foreign key,外键
 defalut
 not null
 comment这种注释可以看见
作用:可以检验主键外键表键值是否一致
(当在有外键的表中加入数据,若外键部分的值,主键里没有,则不会通过)

  1. 表内

    (1)check/unique/primary key(属性名)(2)constraint 约束名 check/unique/primary key (属性名)/(条件)(3)foreign key foreign key 外键名 references 主键表(主键名)constraint 约束名 foreign key (外键名) references 主键表(主键名)
  2. 表外添加
    (1)unique

    alter table 表名 add unique(属性名,)alter table 表名 add constraint 约束名 unique(属性名,)alter table 表名 drop index 约束名/默认约束名

    【注意】:unique本身包含,not null 约束
    (2)primary key

    alter table 表名 add primary key(属性名,)alter table 表名 add constraint 约束名 primary key(属性名,)//不管取名与否,都直接删alter table 表名 drop primary key(属性名)

    【注意】:主键本身就包含了,not null和unique
    【注意】:主键可以是几个属性的组合
    (3)foreign key

    alter table 表名 add foreign key 【外键表名】(属性名)references 主键表名(主键名)alter table 表名 add constraint 约束名 foreign key 【外键表名】(属性名)references 主键表名(主键名)alter table 表名 drop foreign key 约束名/默认约束名

    【注意】:外键表名可以不要
    【注意】:外键添加的值必须是主键里有的
    **【注意】:**foreign key 可以检验主键表,外键表键值是否一致
    (当在有外键的表中加入数据,若外键部分的值,主键里没有,则不会通过)
    (4)default

    alter table buyer alter buyerName set default '哈哈';//删除默认值的3种方法alter table buyer 【alter】 buyerName 【drop】 default;//可以把默认的default null也删掉alter table buyer 【modify】 buyerName varchar(20);//default 默认值 nullalter table buyer 【change】 buyerName buyerName varchar(20);//default 默认值 null

    【注意】:alter…drop可以把默认的default null也删掉,modify和change删除之后default 默认为 null
    (5)check
    check(条件)
    【注意】:满足check条件的可以通过编译(例:insert)

    alter table 表名 add check(条件)alter table 表名 add constraint 约束名 check(条件)alter table 表名 drop check 约束名/默认约束名

    (6)auto_increment
    alter table 表名 auto_increment=具体数值
    【注意】:mysql默认自增是从1开始,并以1为增量自增

三、alter,index,truncate

  1. alter
    删除primary/foreign key
    删除unique
    去掉default 值(alter,modify,change)
    去掉not null(modify)
  2. index索引(提高效率)
    ex1.create INDEX index_student_stuName on student(stuName);
  3. delete 和 truncate 的区别
    (1)delete 是dml ,truncate 是ddl
    (2)delete 如果没有提交事务的话是可以回滚的,truncate不能回滚
    (3)delete 如果有自增列,再添加数据的时候,会从之前的数据往上加, truncate 会从头开始计算
    (4)delete 删除数据慢,truncate 快
    (5)delete 可以指定删除的条件语句(where), truncate 是不能指定

不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容
效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据(涉及到提交回滚)。
(1)truncate语法
TRUNCATE [TABLE] tbl_name

四、日期函数

  1. DATE(date) 函数返回日期或日期/时间表达式的【日期部分】
  2. DATE_ADD() 函数向日期添加指定的时间间隔。
    语法:DATE_ADD(date,INTERVAL expr type)
    eg.

    select now(), CURDATE(), CURTIME(), date(now()) ,time(now()) , date_add(now(), INTERVAL -2 hour),DATE_SUB(now(), INTERVAL 2 hour),datediff('2016-5-10', '2016-6-11'),DATE_FORMAT(now(), '%Y/%c/%d');

    eg、查询生日是从2000年到2010年的记录

    (1)year(date)(2)substr(date,1,4)(3)date between 2000-1-1 00:00:00 and 2010-12-31 23:59:59

五、子查询(效率)

select * from (    select * from 表1 b1 left (outer) join 表2b2 on b1.id=b2.id    union    select  * from 表1 b1 right (outer) join 表2b2 on b1.id=b2.id) 表3 order by 属性

【MySQL默认自动提交】
SET AUTOCOMMIT=0;将其设为手动提交

【mysql提交原理】
例:insert 插入数据,
先将数据保存到运行内存,commit提交到物理内存,rollback回滚,撤销到

insert into。。。
commit
//进入物理内存
delete from 表名
//数据没有,表结构还在
rollback
//原先操作撤销

0 0
原创粉丝点击