Mysql自学笔记四

1.表的约束


   主键约束--primary key,主键自带索引,关系数据库要求一个表只有一个主键或复合主键 


primary key(id,name)只要id和name其中有一个唯一就行


   默认约束--default--5.0以后只能使用常量,不能使用函数、表达式
   
   非空约束--not null


   外键约束--foreign key reference--要求使用外键的表,必须是innodb存储


2.根据旧表,快速建立新表

   create table if not exists tt like t1;

3.查询表字段信息

desc student;

show create table student;

show full columns from student;
4.增加表的主键

alter table tt add constraint primary key(sid);
5.删除主键

alter table tt drop primary key;

6.修改表的外键
alter table t2 add constraint foreign key(tid) references t1(tid) on delete set null 
on update cascade
7.删除外键
 alter table t2 drop foreign key;
10.索引--功能和书籍的检索目录相似 检索数据速度非常快
11.建立索引

create index iname on tt(sname desc);
      建表时建立索引

create table ttt(

tid int primary key,---主键索引

tname varchar(10) unique,--唯一索引

age int,

key (age desc)--自定义索引

);
12.删除索引

drop index iname on tt;

13.外键 一个表的外键,一般指向另一个表的主键或唯一约束建,并且类型一致

14.返回字符串的字节数--gbk中汉字为2个字节,utf-8中汉字是3个字节
   select length('abc是');
15.返回字符串的字符数
   select char_length('abc是');
16.查询出学生表中名字是2个字的学生
   select * from student where sname like'____';

  select * from student where char_length(sname)=4;
17.随机查询出2条记录--效率低
  select * from student order by rand() limit 2;
18.返回0-1之间的随机小数
  select rand();
19.返回0或1--round()四舍五入取整
   select round(rand());
20.返回0-4之间的随机整数
    select round(rand()*3+1);
21.查看10天的会员注册记录
 select * from student where date between date_add(now(),interval -10 day) and now();
22.获取10周前的日期 
select date_add(now(),interval -10 week);
23.获取10分钟后的日期

select date_add(now(),interval -10 minute);
24.获取1998-1-2日后31天的日期

select date_add('1998-1-2',interval 31 day);
25.获取2小时后的日期 

select date_add(now(),interval 2 hour);
26.获取2个日期相差的天数 

select datediff(curdate(),'1998-1-5');

27.格式化日期

select date_format(now(),'%Y-%m-%d');
28.查询学生出生年月 

select  sname,date_format(date,'%Y年%m月%d日') from student;
29.返回2个时间相差小时数 

select timestampdiff(hour,'1998-1-5 14:0:0',now());

30. 返回2个时间相差分钟数

select timestampdiff(minute,'1998-1-5 14:0:0','1998-2-5 14:0:0');
31.返回2个时间相差天数  

select timestampdiff(day,'1998-1-5','1998-2-1'); 
32.(php开发常用).将时间转化为数字  

select unix_timestamp('1998-1-5 14:0:0');
33.将数字转换为时间 

select from_unixtime(883980000,'%Y%m%d');
34.(php开发常用).将ip转换为数字 

select inet_aton('172.0.0.1');

35.将数字转化为

select inet_ntoa(2885681153);
36.字符串相连
   select concat(sname,age) from student;
37.后面字符串以第一个参数进行连接
select concat_ws('-',sname,age) from student;
38.重复显示10个*
    select repeat('*',10);  
39.将abc转换成大写
  select upper('abc');

40.将ABC转换成小写
  select lower('ABC');
41.用途,系统中账号一般不区分大小写,所以查询账号为admin的人员时使用
    select count(*) from student where lower(sname)=lower('admin');
42.左截取一个字符
  select left(sname,2) from student;

43.右截取一个字符
  select right(sname,2) from student;
44.中间截取任意字符

select mid(sname,2,1) from student;--从sname第二位截取1个字符,及‘张三四’截取后为‘三’

45.条件判断
   如果是空,显示ok
    ifnull(score,'ok');
   如果。。否则。。。
   if(判断,判断为真显示1,判断为假显示2)
例,如果学生的成绩》=90显示优秀,》=70显示良好,》=60显
示及格否则显示补考
select sname as '姓名',if(score>=90,'优秀',if(score>=70,'良好',if(score>=60,'及格','补考'))) as '成绩' from student;
46.加密
select password('123456');
47.生成全球唯一个31位的16进制数
  select uuid();
48.格式化数字
 
select format(123.45678,4);--小数保留4位,并且四舍五入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值