MySql语法(2):高级查询1

1.修改表名

    alter table <旧表名> rename [to] <新表名>;  //其中to可要可不要

2.添加字段

    alter table 表名 add 字段名 数据类型 [属性]; //字段名即为列名

3.修改字段

     alter table 表名 change 原字段名 新字段名 数据类型 [属性]; //其不只是可以修改其字段名还可以修改其属性

4.删除字段

     alter table 表名 drop 字段名;

5.添加主键

     alter table 表名 add constraint 主键名 primary key 表名 (主键字段);
    
    示例:设置grade表中的gradeId字段为主键

              alter table grade add constraint pk_grade primary key grade(gradeId) //其中pk_grade为主键名 可自定义
              ,主键名即为添加此主键约束的名称          

6.添加外键

     alter table 表名 add constraint 外键名 foreign key (外键字段) references 关联表名(关联字段);

    示例:将student表中的gradeId字段和grade表的gradeId字段建立外键关联
    
               alter table student add constraint fk_student foreign key(gradeId) references grade(gradeId);

7.插入数据

        insert into 表名 [(字段名列表)] values (值列表); 
     
     注意:
        其中[ ]里面的为可省略,
如省略则依次插入所有字段,
但是在一般的开发过程中都应写上
        多个列表和多个值之间使用逗号分隔
        
值列表和字段名列表一一对应
        如插入的是表中部分数据,字段名列表必填
     
    

     INSERT INTO 新表(字段名) 

VALUES(值列表1),(列表2),……,(值列表n);   // 此为一次性添加多条数据

8.将查询结果插入新表

     方法1:insert into 新表(字段1,字段2......) select 字段1,字段2...... from 原表; //使用此方法需要在此之前新建新表 
    
      方法2:create table 新表(select 字段1,字段2...... from 原表); // 此方法在创建表的同时又将数据插入其中

9.数据的更新

   update 表名 set 字段1=值1,字段2=值2,......,字段n=值n [where 条件];

10.数据的删除

    delete from 表名 [where条件];
   
     truncate table 表名;

     区别:
     drop table 表名;  //删除表数据即表结构
     delete from 表名 [where条件]; //删除全部的数据或特定的数据
     truncate table 表名; //删除后不会生成日志文件,其速度快,数据删除后不可复原

11.DQL语句的回顾
    group by <分组的字段名> having <条件>//其一般放在where条件语句后面,可根据指定的字段名和条件
进行分组,having只                                                                                               有与group by 语句一起使用才有效
       order by <排序的字段名> asc(升序)或者 desc(降序) //一般放在语句where语句或者group by语句后面,根据字段名进行排序

12.Limit子句
     LIMIT [[位置偏移量, ]行数]; //放在语句的结尾
      如:limit 4  //查看结果的前4条
            limit 4,5 //从第5条开始 查看后面的5条数据  //limit 索引从1开始

13.聚合函数

函数名

作用

AVG()

返回某字段的平均值

COUNT()

返回某字段的行数

MAX()

返回某字段的最大值

MIN()

返回某字段的最小值

SUM()

返回某字段的和



14.字符串函数
  

   

   

CONCAT(str1,

       str1...strn)

字符串连接

SELECT    CONCAT('My','S','QL');

返回:MySQL

INSERT(str,

pos,len,

newstr)

字符串替换

SELECT INSERT(

    '这是SQL Server数据库',

    3,10,'MySQL');

返回:这是MySQL数据库

LOWER(str)

将字符串转为小写

SELECT LOWER('MySQL');

返回:mysql

UPPER(str)

将字符串转为大写

SELECT UPPER('MySQL');

 返回:MYSQL

SUBSTRING

  (str,num,len)

字符串截取

SELECT SUBSTRING(

    'JavaMySQLOracle',5,5);

返回:MySQL


15.时间与日期函数

函数名

作用

举例(结果与当前时间有关)

CURDATE()

获取当前日期

SELECT CURDATE();

返回:2016-08-08

CURTIME()

获取当前时间

SELECT CURTIME();

返回:19:19:26

NOW()

获取当前日期和时间

SELECT NOW();

返回:2016-08-08 19:19:26

WEEK(date)

返回日期date为一年中的第几周

SELECT WEEK(NOW());

返回:26

YEAR(date)

返回日期date的年份

SELECT YEAR(NOW());

返回:2016

HOUR(time)

返回时间time的小时值

SELECT HOUR(NOW());

返回:9

MINUTE(time)

返回时间time的分钟值

SELECT MINUTE(NOW());

返回:43

DATEDIFF(date1,date2)

返回日期参数date1和date2之间相隔的天数

SELECT DATEDIFF(NOW(),

     '2008-8-8');

返回:2881      

ADDDATE(date,n)

计算日期参数date加上n天后的日期

SELECT ADDDATE(NOW(),5);

返回:2016-09-02  09:37:07 


16.数学函数

函数名

   

       

CEIL(x)

返回大于或等于数值x的最小整数

SELECT CEIL(2.3)

返回:3

FLOOR(x)

返回小于或等于数值x的最大整数

SELECT FLOOR(2.3)

返回:2

RAND()

返回0~1间的随机数

SELECT RAND()

返回:0.5525468583708134


17.子查询

 SELECT … FROM 1 WHERE 字段比较运算符(子查询)

18.表连接示例

 SELECT `studentName` FROM`student` stu

  INNERJOIN `result` r ON stu.studentNO =r.studentNo      

  INNERJOIN `subject` sub ON r.subjectNo =sub.subjectNo  

  WHERE `studentResult` = 60AND `subjectName` = 'Logic Java';


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值