CSDN MySql 随笔No.10 & MySql语句总结(二)

 

函数时间

函数

注意date, datetime, timestamp之间的区别

 

ADDTIME(原时间, 增加值)     在某个时间上增加一段时间

      select addtime('18:23:01', '01:01:01');

select addtime(now(),'3:0:0');

CURRENT_DATE()            当前日期

      select current_date();

CURRENT_TIME()             当前时间

      select current_time();

CURRENT_TIMESTAMP()           当前时间戳

      select current_timestamp();

DATE(时间)                         返回制定时间的日期部分

      select date('2011-02-14 18:00:00');

DATE_ADD(日期,INTERVAL 增加值 类型)      在指定日期上对某个字段增加

      select date_add('2011-02-14 23:00:00',interval 10 month);

DATE_SUB(日期,INTERVAL 减少值 类型)       在指定日期上对某个字段减少

      select date_sub('2011-02-14 23:00:00',interval 1 year);

DATEDIFF(日期1, 日期2)      计算两个日期之间的差值

      select datediff('2000-02-14','2001-02-14');

NOW()           当前时间

      select now();

YEAR|MONTH|DATE|HOUR|MINUTE|SECOND(时间)          获取指定时间的某个字段

      select year('2011-02-14 23:00:00');

      select hour('2011-02-14 23:00:00');

字符串函数

CHARSET(字符串)                                    返回字符串字符集

      select charset(name) from student;

CONCAT(字符串1[, 字符串2]... )                      连接字符串

      select concat('aaa', 'bbb', 'ccc');

INSTR(字符串, 子字符串)                              查找子字符串出现位置, 注意序号从1开始

      select instr('abc', 'a');

UCASE(字符串)                                         将字符串转为大写

      select ucase('aBc');

LCASE(字符串)                                         将字符串转为小写

      select lcase('aBc');

LEFT(字符串, 长度)                                       从字符串左边取指定长度个字符

      select left('aBc',2);

LENGTH(字符串)                                            计算字符串长度

      select length('aBc');

REPLACE(字符串, 搜索字符串, 替换字符串)         将字符串中指定字符串替换为其他字符串

      select replace('abbcbbd', 'bb', 'ee');

STRCMP(字符串1, 字符串2)                        逐个字符比较两个字符串, 如果是包含关系, 则返回长度差值

      select strcmp('abcc', 'abde');

      select strcmp('abc', 'ab');

SUBSTRING(字符串, 开始坐标[, 个数])       从字符串中截取

      select substring('abcdef', 3);

      select substring('abcdef', 3, 2);

LTRIM(字符串)                                          去掉左边空白

      select ltrim('    abc  ');

      select concat('--', ltrim('    abc  '), '--');

RTRIM(字符串)                                         去掉右边空白

      select concat('--', rtrim('    abc  '), '--');

TRIM(字符串)                                            去掉左右两边空白

      select concat('--', trim('    abc  '), '--');

数学函数

ABS(数字)                                 求绝对值

      select abs(10);

      select abs(-10);

BIN(十进制数)                          将十进制转换为二进制

      select bin(5);

HEX(十进制数)                         将十进制转换为十六进制

      select hex(10);

CONV(数字, 原进制, 目标进制)   转换进制

      select conv(12, 10, 16);

      select conv(12, 10, 2);

      select conv(12, 16, 2);

CEILING(小数)                         向上取整

      select ceiling(3.4);

FLOOR(小数)                            向下取整

      select floor(3.4);

ROUND(小数)                           四舍五入

      select round(3.4);

select round(3.5);

FORMAT(小数, 保留位数)            保留小数位

      select format(3.1415926, 2);

LEAST(值,值[,值]...)                 取最小值

      select least(1,2,3,4);

      select least('a', 'b', 'c', 'd');

GREATEST(值,值[,值]...)               取最大值

      select greatest(1,2,3,4);

      select greatest('a', 'b', 'c', 'd');

MOD(数字, 数字)                           取余

      select mod(3,2);

      select 3%2;

RAND()                                     生成随机数, 14位小数, 0 <= n <= 1

      select rand();

表的约束

约束的作用

限定某一列上的数据, 阻止非法数据录入, 提高程序健壮性.

唯一约束 unique

unique约束的字段在整张表中唯一, 不可重复, 不包括多个NULL

 

创建表时设置唯一

create table test(

      id int,

      name varchar(20) unique

);

 

删除唯一约束

show create tabletest; 发现唯一索引名叫name

alter table testdrop index name;

 

添加唯一约束

alter table testchange name name varchar(20) unique;

非空约束 not null

not null约束的字段不能为空

 

创建表时设置非空

create table test1(

      id int,

      name varchar(20) not null

);

 

删除非空约束

alter table test1change name name varchar(20);

 

添加非空约束

alter table test1change name name varchar(20) not null;

主键约束 primary key

通常我们在设计表的时候需要给每一条记录一个独有的标识, 我们就用主键来约束这个标识.

primary key用来标识一个字段, 这个字段是非空且唯一的.

 

创建表时设置主键

create tabletest2(

id int primary key,

name varchar(20)

);

 

删除主键

alter table test2drop primary key;

 

在制定列上添加主键

alter table test2change id id int primary key;

alter table test2add primary key(id);

 

设置主键自动增长

create tabletest3(

id int primary key auto_increment,

name varchar(20)

);

 

删除自增长

alter table test3change id id int;

 

设置自增长

alter table test3change id id int auto_increment;

 

UUID主键

128位的2进制, 32位16进制加上4个-

java.util.UUID.randomUUID().toString()

3c2372a4-da2a-4470-b17a-f2e50ac79636

外键约束foreign key

foreign key约束某一列的值是参照另外一列

 

创建表时添加外键约束

create table husband(

      id int primary key,

      name varchar(20) not null

);

create table wife(

      id int primary key,

      name varchar(20) not null,

      husband_id int,

      constraint husband_id_fkforeign key(husband_id) references husband(id)

);

wife表的husband_id的值必须是husband表中的id

 

被外键引用的记录不能删除, 如果想要删除某条被引用的记录, 需要找到引用这条记录的记录, 解除关联

 

被外键引用的表不能删除, 如果想要删除被引用的表, 需要删除所有引用此表的外键

 

删除外键约束

alter table wifedrop foreign key husband_id_fk;

 

添加外键约束

alter table wifeadd constrainthusband_id_fk foreign key(husband_id) references husband(id)

 

 

2011/9/9

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值