MySQL(1)操作表、函数

1.表的创建、查看、修改、删除

 

1.1.创建表

1.1.1.主键

(1)在定义列的同时指定主键

CREATE TABLE tb_dept_1
(
id INT(11) Primary Key,
name VARCHAR(25),
location VARCHAR(50)
);

(2)在定义完所有列之后指定主键

CREATE TABLE tb_emp1

(

id INT(11),

name VARCHAR(25),

deptId INT(11),

salary FLOAT,

Primary Key(id)

);

(3)多个主键

Primary Key(id,name)

1.1.2.外键

CREATE TABLE tb_emp5
(
id INT(11) Primary Key,
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept_1(id)
);

1.1.3.非空

  字段名 数据类型 not null

1.1.4.唯一性约束

  字段名 数据类型 UNIQUE

1.1.5.默认约束

  字段名 数据类型 DEFAULT 默认值

1.1.6.设置表的属性值自动增加

  字段名 数据类型 AUTO_INCREMENT

1.2.查看表结构

  DESCRIBE 表名;

或:

  DESC 表名;

查看表详细结构语句:

  SHOW CREATE TABLE <表名\G>;

1.3.修改表

1.3.1.修改表名

ALTER TABLE <旧表名> RENAME [TO] <新表名>;

1.3.2.修改字段的数据类型

ALTER TABLE <表名> MODIFY <字段名> <数据类型>

     

1.3.3.修改字段名

ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;

1.3.4.添加字段

ALTER TABLE <表名> ADD <新字段名> <新数据类型> [约束条件] [FIRST | AFTER 已存在字段名];

1.3.5.删除字段

ALTER TABLE <表名> DROP <字段名>;

1.3.6.修改字段的排列位置

ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;

1.3.7.删除表的外键约束

ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>

1.4.删除表

DROP TABLE [IF EXISTS]表1, 表2,…表n;

2.函数

2.1.数学函数

2.1.1.绝对值

ABS(x)

2.1.1.平方根

SQRT(x)

2.1.3.求余

MOD(x,y)

2.1.4.获取整数

不小于x的最小整数:

CEIL(x) 或 CEILING(x)

不大于x的最大整数值:

FLOOR(x)

2.1.5.随机数

RAND() 或 RAND(x)

返回一个随机浮点值,范围在0到1之间

不带参数的RAND()每次产生的随机数值是不同的

当RAND(x)的参数相同时,将产生相同的随机数,不同的x产生的随机数值不同

2.1.6.四舍五入

ROUND(x)        最接近于参数x的整数,对x值进行四舍五入

ROUND(x,y)        返回最接近于参数x的数,其值保留到小数点后面y位,若y为负值,则将保留x值到小数点左边y位。例如:ROUND(232.38,-2),返回200

TRUNCATE(x,y)        返回被舍去至小数点后y位的数字x。若y的值为0,则结果不带有小数点或不带有小数部分。若y设为负数,则截去(归零)x小数点左起第y位开始后面所有低位的值。例如:TRUNCATE(1.31,1),返回1.3;TRUNCATE(1.99,1),返回1.9;TRUNCATE(1.99,0),返回1;TRUNCATE(19.99,-1),返回10

2.1.7.符号函数

SIGN(x)返回参数的符号,x的值为负、零或正时返回结果依次为-1、0或1

2.1.8.幂方

POW(x,y)或者POWER(x,y)

2.2.字符串函数

2.2.1.字符数

CHAR_LENGTH(str)        返回值为字符串str所包含的字符个数。一个多字节字符算作一个单字符

2.2.2.字符长度

LENGTH(str)        返回值为字符串的字节长度,使用utf8(UNICODE的一种变长字符编码,又称万国码)编码字符集时,一个汉字是3字节,一个数字或字母算1字节。

2.2.3.合并字符串

CONCAT(s1,s2,…)        返回结果为连接参数产生的字符串,或许有一个或多个参数。

如有任何一个参数为NULL,则返回值为NULL。

CONCAT_WS(x,s1,s2,…)        第一个参数x是其他参数的分隔符,分隔符的位置放在要连接的两个字符串之间。例如:CONCAT_WS('-','1st','2nd','3nd')  ,返回'1st-2nd-3nd'

2.2.4.字母大小写

LOWER (str)或者LCASE (str)可以将字符串str中的字母字符全部转换成小写字母。

UPPER(str)或者UCASE(str)可以将字符串str中的字母字符全部转换成大写字母。

2.2.5.获取指定长度的字符串

LEFT(s,n)返回字符串s开始的最左边n个字符

RIGHT(s,n)返回字符串str最右边的n个字符

2.2.6.删除空格

LTRIM(s)返回字符串s,字符串左侧空格字符被删除

RTRIM(s)返回字符串s,字符串右侧空格字符被删除

TRIM(s)删除字符串s两侧的空格

2.2.7.获取子串

SUBSTRING(s,n,len)        从字符串s返回一个,起始于位置n,长度为len的子字符串。

2.2.8.匹配子串开始位置

LOCATE(str1,str)、POSITION(str1 IN str)和INSTR(str,str1)3个函数的作用相同,返回子字符串str1在字符串str中的开始位置。

2.2.9.字符串反转

REVERSE(s)

2.3.日期和时间函数

2.3.1.获取当前日期

CURDATE()和CURRENT_DATE()函数的作用相同,将当前日期按照‘YYYY-MM-DD’或YYYYMMDD格式的值返回

2.3.2.获取当前时间

CURTIME()和CURRENT_TIME()函数的作用相同,将当前时间以‘HH:MM:SS’或HHMMSS的格式返回

2.3.3.获取当前日期及时间

CURRENT_TIMESTAMP()、LOCALTIME()、NOW()和SYSDATE() 4个函数的作用相同,均返回当前日期和时间值,格式为‘YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS

2.3.4.时间戳

UNIX_TIMESTAMP(date)        把时间转换成时间戳

FROM_UNIXTIME        将UNIX时间戳转换为普通格式时间

2.3.5.获取月份

MONTH(date)函数返回date对应的月份,范围值为1~12。

MONTHNAME(date)函数返回日期date对应月份的英文全名。

2.3.6.获取星期

DAYNAME(d)函数返回d对应的工作日的英文名称,例如Sunday、Monday等

DAYOFWEEK(d)函数返回d对应的一周中的索引(位置,1表示周日,2表示周一,...,7表示周六)

WEEKDAY(d)返回d对应的工作日索引:0表示周一,1表示周二,...,6表示周日。

2.3.7.获取天数

DAYOFYEAR(d)函数返回d是一年中的第几天,范围是1~366。

DAYOFMONTH(d)函数返回d是一个月中的第几天,范围是1~31。

2.3.8.获取年份、季度、小时、分钟和秒钟

YEAR(date)返回date对应的年份,范围是1970~2069

QUARTER(date)返回date对应的一年中的季度值,范围是1~4。

MINUTE(time)返回time对应的分钟数,范围是0~59。

SECOND(time)返回time对应的秒数,范围是0~59。

2.3.9.计算日期和时间

日期增加:

DATE_ADD('2010-12-31 23:59:59',INTERVAL 1 SECOND)

将时间增加1秒后返回,结果为‘2011-01-01 00:00:00’

ADDDATE('2010-12-31 23:59:59', INTERVAL 1 SECOND)

将时间增加1秒后返回,结果为‘2011-01-01 00:00:00’

DATE_ADD('2010-12-31 23:59:59',INTERVAL '1:1' MINUTE_SECOND)

将指定时间增加1分1秒后返回,结果为‘2011-01-01 00:01:00’

ADDTIME(date,expr)函数将expr值添加到date,并返回修改后的值,date是一个日期或者日期时间表达式,而expr是一个时间表达式。

日期减少:

DATE_SUB('2011-01-02', INTERVAL 31DAY)

SUBDATE('2011-01-02', INTERVAL 31 DAY)

以上两个函数执行的结果是相同的,将日期值减少31天后返回,结果都为“2010-12-02”

DATE_SUB('2011-01-01 00:01:00',INTERVAL '1 0:1:1' DAY_SECOND)

将指定日期减少1天,时间减少1分1秒后返回,结果为“2010-12-30 23:59:59”。

SUBTIME(date,expr)函数将date减去expr值,并返回修改后的值。其中,date是一个日期或者日期时间表达式,而expr是一个时间表达式。

两个日期之间的天数:

DATEDIFF(date1,date2)返回起始时间date1和结束时间date2之间的天数。

2.3.10.将日期和时间格式化

DATE_FORMAT(date,format)根据format指定的格式显示date值。

TIME_FORMAT(time,format)根据表达式format的要求显示时间time。

DATE_FORMAT时间日期格式:

2.4.条件判断函数

2.4.1.IF(expr,v1,v2)

IF(expr, v1, v2):如果表达式expr是TRUE(expr <> 0 and expr <> NULL),则返回值为v1;否则返回值为v2。

2.4.2.IFNULL(v1,v2)

IFNULL(v1,v2):假如v1不为NULL,则IFNULL()的返回值为v1;否则其返回值为v2。

2.4.3.CASE

CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2]…[ELSE rn+1] END:如果expr值等于某个vn,则返回对应位置THEN后面的结果;如果与所有值都不相等,则返回ELSE后面的rn+1。

2.5.窗口函数

2.5.1.排名

(1) Row_number()

排名是序号 连续 不重复

(2)Rank()

重复 不连续

(3)Dense_rank()

连续 重复

(4)Ntile()

案例:

 select score,dense_rank() over(order by score desc) as 'rank' from Scores;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值