day() mysql_Day_MySQL

回顾昨日:

主键:不能空,不能重复。

1、DML增删改

复合主键:

由多个列组成主键叫复合主键,复合主键列要求组成的列有一个列值不同就是不同的主键,复合主键要求组成的列的所有列值相同就是重复主键.

#复合主键的验证 uid,uname

insert into t_user(uid,uname,age,address) values (1,'aa',28,'千锋');

insert into t_user(uid,uname,age,address) values (1,'a2',18,'千锋');

#允许为null列,可以插入null

insert into t_user(uid,uname,age,address) values (2,'小明',18,null);

insert into t_user(uid,uname,age) values (3,'小强',18);

2.向表中插入多条记录:

语法:insert into 表名(列名1,列名2...) values(值1,值2...),(值1,值2...)......;

注意:插入每条记录和列值与列名要一一对应(个数一致,数据类型匹配,位置匹配).

eg:#向表中插入多条记录

insert into t_student(sname,sage,sex,address)

values('叶伦',20,'男','千锋'),('李超',99,'女','千锋'), ('毕浩',19,'男','千锋');

3.修改表中数据:

语法:update 表名 set 列名1=新值1,列名2=新值2...[where 条件]

注意:一般情况下,修改一定要加条件,否则修改整张表的数据.

eg:#修改整张表中数据(尽量不用)

update t_user set uname='夏雨',address='中国';

#修改表中数据

update t_user set uname='冯尉明' where uid=1;

4.删除表中数据

语法一:delete from 表名 [where 条件];

注意:一般情况下,删除表中数据一定要加条件,否则删除整张表的数据.

delete删除记录行后,标识数据删除后,标识数据不再重复

eg:#删除表中数据

delete from t_user where uid=5;

#一般情况下,删除要加where条件,否则删除整张表中数据.

delete from t_user;

5.删除表中所有记录

第一种:drop table 表名; 删除最彻底,将整张表及与表相关的数据(包括表结构,表 中数据,标识种子)全部删除.

第二种:truncate table 表名;删除效率最高,将表中数据一页一页的删除,但是表的 结构还在(将原表删除,新建一个与原表结构相同的表),原来表中标识种子 也删除了重新生成新的标识种子.

eg:#删除表中数据效率最高

TRUNCATE table t_user;

第三种:delete from 表名;只删除了表中数据(一条一条删除表中记录),表的结构, 表的标识种子都在.

注意:标识种子:指的标识列的起始值.标识种子删除后,无法再继续自增.

一.单表查询

1.单表查询的总语法

select 列名1,列名2,...

from 表名

[where 条件] //边查询边筛选

[group by 列名1,列名2...] //将查询结果进行分组

[having 条件] //将查询分组后的结果进一步筛选

[order by 列名1 asc/desc,列名2 asc/desc] //排序,默认升序asc

[limit 数字1,数字2] //限制输出的记录条数或分页

2.查询表中所有记录

语法:select 列名1,列名2,...from 表名; (推荐)

select * from 表名; (属于模糊查询,效率比上面的低)

eg:#查询表中所有的记录

select * from t_student;

select sid,sname,sage,sex,address from t_student;

3.根据条件查询:语法:select 列名1,列名2,...from 表名 where 条件;

eg:#边查询边筛选:查询年龄小于20岁的所有的学生信息

select sid,sname,sage,sex,address from t_student where sage<20;

4.查询完后对结果进行排序:select 列名1,列名2,...from 表名 order by 列名1...;

eg:#查询完后对结果进行一个列的排序:查询学生信息,按学号来排/按姓名排序

select sid,sname,sage,sex,address from t_student order by sname;

#查询完后对结果进行多个列的排序:查询学生信息,先姓名排序,再按年龄排序

select sid,sname,sage,sex,address from t_student order by sname asc,sage desc;

5.聚合函数:sum()求总和,max()最大值,min()最小值,avg()求平均值,count()求总记录 数.

注意:一般情况下,普通不能与聚合函数列一起使用(语法上可以,但逻辑上有问题), 结果集无法匹配,除非普通列作为分组条件就可以和聚合函数列一起使用

聚合函数不能用在where,其他关键字后面可以用.

eg:#聚合函数查询

select count(sid),sum(sage),max(sage),min(sage),avg(sage) from t_student;

#一般情况下,普通不能与聚合函数列一起使用(语法上可以,但逻辑上有问题),结果集无法匹配

select sname,count(sid) from t_student;

6.模糊查询:

6.1:通配符:一种特殊符号,每种符号有特定含义

*: 代表表中所有列

_: 代表一个任意字符

%: 代表任意长度的任意字符

6.2:like查询: select 列名1,列名2... from 表名 where 列名 like 通配符;

注意:like一般要与通配符配合使用;能用Like查询的列是字符串列.

eg:#like模糊查询:查询所有姓王的学生

select sid,sname,sage,sex,address from t_student

where sname like '王%';

6.3:between...and...:select 列名1,列名2... from 表名

where 列名 between 小值 and 大值;

注意:between...and...适用于数据列;

between...and...小范围的值写在前面,大范围的值写在后面.反之,语法 不报错,但是无意义.

eg:#BETWEEN and: 查询年龄在18到20岁的所有的学生信息

select sid,sname,sage,sex,address from t_student

where sage>=18 and sage<=20;

select sid,sname,sage,sex,address from t_student

where sage BETWEEN 18 and 20;

6.4:in(值1,值2...): select 列名1,列名2... from 表名

where 列名 in(值1,值2...);

eg:#in:查询年龄在18到20岁的所有的学生信息

select sid,sname,sage,sex,address from t_student where sage in(18,19,20);

select sid,sname,sage,sex,address from t_student

where sage=18 or sage=19 or sage=20;

#in:查询地址是千锋1或者是千锋2

select sid,sname,sage,sex,address from t_student where address in('千锋1','千锋2');

select sid,sname,sage,sex,address from t_student

where address='千锋1' or address='千锋2'

6.5:is [not] null:select 列名1,列名2... from 表名

where 列名 is null;

eg:#is null/is not NULL

select sid,sname,sage,sex,address from t_student

where sage = null;#查询不到数据

select sid,sname,sage,sex,address from t_student

where sage is null;

select sid,sname,sage,sex,address from t_student

where sage is not nul

7.分组查询和筛选:

7.1:分组查询:select 列1,列2...from 表名 group by 列名1,列名2;

eg:#分组查询:分别查询出男生和女生的总人数

select sex,count(sid) from t_student GROUP BY sex

7.2.分组查询后再筛选:select 列1,列2...from 表名 group by 列名1,列名2

having 条件;

注意:有having的地方一定有group by,

但是有group by的地方不一定有having.

#分组查询后筛选:按性别分组查询,查询出总人数大于6的性别

select sex,count(sid) from t_student GROUP BY sex having count(sid)>6

8.(MySql)limit的使用:

8.1:限制输出记录条数:select 列名1,列名2,...from 表名 limit 记录数;

eg:#limit:限制输出记录条数;查询出学生表中前三条记录

select sid,sname,sage,sex,address from t_student limit 3;

8.2:分页:select 列名1,列名2,...from 表名 limit 每页起始记录数,每页显示的 记录条数;

eg:#limit:对数据进行分页: 每页显示5条记录数,查询出第三页

select sid,sname,sage,sex,address from t_student limit 10,5;

分页总语法:select 列名1,列名2,...from 表名

limit (当前页码-1)*每页显示的记录条数,每页显示的记录条数;

9.(MySql,Oracle)distinct:去重

eg:#DISTINCT:如果有多条记录结果相同去重

select DISTINCT sex from t_student;

二.在SQL语句中,运算符(算术运算符,赋值运算符,比较运算符,逻辑运算符)可以直接用.

1.在MySql中不等于: <> 或 !=

等于: =

2.逻辑运算符: and(并且),or(或者)

三.数据的完整性:数据库最重要的就是数据的完整性.

1.完整性:数据的可靠性和准确性.

2.数据完整性:实体完整性,域完整性,引用完整性,自定义完整性.

3.实体完整性:主键约束,唯一约束,标识列.

4.域完整性:数据类型,默认约束,非空,检查约束(check).

注意:MySql5.5之后不支持检查约束

5.引用完整性:外键约束.

6.自定义完整性:规则、存储过程、触发器

回顾

1.dml(插入,修改,删除)

2.dql(基本查询,where,order by,聚合函数,模糊查询.group by,having,limit,distinct)

3.数据的完整性.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值