主键约束--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位,并且四舍五入