sql语句

day07

数据库:存储数据库的仓库.
MySQL中,库在磁盘上以文件夹方式存在
--单行注释;  /* */ 多行注释;   #特殊注释;
**建库方法:**
		方法1:create database 库名;
		方法2:create database if not exists 库名;
查询建库字符集:show create database 库名;
修改库的字符集:alter database 库名 default character set 字符集;
删库跑路:方法1:drop database 库名;
			   方法2:drop database if exists 库名;

数据库定义语句(DDL):

	数据库类型:
		1.int:整型;
		2.varchar.字符串类型;
		3.boolean.布尔型.
		4.date. 时间-----衍生型:datetime:日期加时间;timestap:瞬时时间,以毫秒计;
		其他类型:double小数型;eg:double(3,1)表示3位数,小数点后1位的小数;
		clob:大字符类型,即大文本.        blob:大字节类型(最大存4G)
建完库开始建表,建表前要先用库,即use database 库名;
**建表语法:** 
		create table 表名(字段名称1 字段类型1,
									字段名称2 字段类型2,
									字段名称3 字段类型3,
									字段名称4 字段类型4
									);
	注意:最后一个字段类型那没有','
	总结:建表流程为:1.建库,2.用库,3.建表.
	查询库中有什么表:show tables;
	查看表的结构:desc 表名;
	修改表的字段名词(关键字change):
			alter table 表名 change 旧字段名 新字段名 字段类型;
	修改表的字段类型(关键字modify):
			alter table 表名 modify 字段名称 新字段类型;
	给表中加一个字段:
			alter table 表名 add 字段名称 字段类型;
	删除表:
			方法1:drop table 表名;
			方法2:drop table if exists 表名;
	复制表:
			create table 新表名 like 旧表名;
	删除字段类型(列):
	       alter table 表名 drop 字段名;

day8

DQL语句:
基本条件查询:select语句
查询某个字段:select 列名 from 表名;
查询所有字段:select * from 表名;--------*星号表示所有,但是只能在私下使用,正规途径下必须把所有列名输进去;
SQL语句中运算符\逻辑运算符等与java基本一致,不过&&等同于and,||等同于or;
关键字where后面跟条件表达式,用来进行筛选;
eg:select * from sdudent where age>20;
关键字distinct用于去除重复项,紧跟在select后面,后面正常品鉴其他语句即可;
表格中插入新的行:
insert into 表名 values(输入的值,必须与字段类型一一对应),(同)(同);
特殊情况,判断是否为空java中用"==null",SQL语句用:is null或者is not null;
判断范围:简单方法:列名 in(xx,xx,xx);
模糊查询关键字:like;
%表示多个或者某个字符,_表示一个字符;
eg:查名字姓马的: select name from student where name like ‘%马%’;
查名字三个字且中间是化的:select name from student where name like ‘%%’;

修改表记录update
更改表中某个字段:
update 表名 set 字段名=值 where 条件;
ps:id在实际开发中为非业务字段,id的值应该是惟一的,不可重复;
更改多个字段:
update 表名 set 字段名1=值 1, 字段名2=值2,… where 条件;
update 表名 set 字段名=值 →不写条件就会全改;
删表: delete from 表名 where 条件;
不加条件就会删除整个表;
删表方法2:truncate table 表名;

面试题: 两种方法异同点:

可以看作房子,一个是把房子里的东西清了,房子还在,另一个是直接把房子拆了再建个一样的.
同:都可以删除整个表的记录
不同点:delate from 表名只删除表的记录,表的主键id仍然存在
truncate table 表名会删除整个表然后重新创建一个新的表,主键都会丢失.
聚合函数类型:针对int类型
select count(字段名称):用id查表中记录的数量;
select avg(字段名称):求字段平均值;
select sum(字段名称):求平均值;
聚合函数的本质就是简单语句的拼接,类似于java中的匿名对象;
排序查询:关键字order by
语法:select 字段列表 from 表名 order by 字段名称 排序规则(分为默认的asc升序和desc降序);
注意:一个语句中同时有order by和where时,先写where;
有多个order by同时存在时,按顺序.
eg: select * from 表名 order by math desc,chinese asc;
中间是用,隔开的;

day9加粗样式

分组查询:group by;

eg:select
sex ‘性别’,
avg(math), ‘数学平均分’,
from 表名 group by sex;
注意:group by后面不能跟聚合函数;
带条件(where)的查询,where需要在group by的前面;
eg : select
sex ‘性别’,
avg(math),‘数学平均分’
from 表名 where math>70 group by sex ;

筛选查询:having;

有条件筛选时,必须先选择再筛选;
与上面的分组查询group by不同,筛选查询可以后面带聚合函数
eg:select * from 表名 where math>70 group by sex having count(id)>2;
上面例子的意思是筛选出按照性别分组,组人数大于2,且数学成绩大于70的小组;

比较重要 分页语句查询limilt;

语法:select 字段列表 from 表名 limit 起始行数,每页显示的条数; ps:limit后面没有();
起始行数为:(当前页码数-1)*每页显示的条数;
eg: select * from 表名 limit 0,2;2,2;4,2;6,2;…

备份与恢复

第一种方法:SQLyog图形界面中
备份:库名–backup–第二级–structure and data–export
还原:先在SQLyog中删除库,然后新建库,import导入备份的脚本,最后done结束
第二种方法:以dos命令框形式完成,不需要登录SQLyog
备份:mysqldum-uroot-pSQL的密码-库名>保存路径;
还原:进入dos后,登录mySQL,先删库,然后新建一个库,use库名,加载指定路径的SQL脚本.

约束

(1)默认约束default;
作用:默认约束在创建表时书写,作用时当某个字段为null时,使用默认的值
也可以在通过修改字段类型使用
eg: alter table 表名 modify 字段名 新的字段类型(+default 默认值);
(2)非空约束not null
作用:使得设定该约束的字段不能为空;使用方法和修改方法同上面的默认约束;
**(3)唯一性约束 unique **
作用:一般id,电话号码这些值不能重复,设置该约束后,字段值不能重复;
注意:unique是索引不是关键字,因此修改方法与前面的不同.
删除唯一性的语法:alter table 表名 drop index 索引字段名称(即当前字段名称);
添加唯一性语法与前面的相同:alter table 表名 modify 字段名 字段类型 unique;
(4)主键约束 primary key
(5)自增长约束auto_increate

两个约束基本上同时使用,设置id主键时使用;
(6)外键约束foreign key
作用:让两张有逻辑关系的表实现关联
注意:前提是两张表都设置了自增长主键
语法:需要分清主表,从表,在从表的关联id后面书写:
foreign key (主表_)
reference 主表(id);
需要了解的:其实前面有两句默认的语句,但是可以省略不写.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值