web简介
软件架构
B/S(浏览器/服务器)
软件:页游
优点:不需要下载,维护时不需要停机更新
缺点:画面不精良、对网络带宽要求高
C/S(客户端/服务器)
软件:LOL
优点:画面精良、对网络要求不高
缺点:需要下载很大的客户端、维护时需要停机更新、每个更新需要下载比较大的补丁
1、数据库
数据库就是一个存储数据的仓库。
发展历史:层次式数据库,网格式数据库,关系型数据库
Insert
1.1创建数据库
create database mydb1;
create database mydb2 character set utf8;
create database mydb3 character set utf8 collate utf8_bin;
1.2查看所有的数据库
show databases;
1.3查看数据库创建语句
show create database mydb2;
1.4删除数据库
drop database mydb3;
1.5修改数据库
修改mydb2字符集为utf8,校对规则为utf8_bin
alter database mydb2 character set utf8 collate utf8_bin;
1.6选择数据库
必须要先选择一个数据库才能操作表和数据
use mydb1;
1.7查看当前选择的数据库
select database();
表操作
2创建表
create table user(id int,name char(10),password char(20),birthday date);
2.1查看当前数据库中有哪些表
show tables;
2.2查看表的创建语句
show create table user;
2.3添加主键
create table employee(id int primary key auto_increment,);
2.4查看表结构
desc employee;
2.5修改表
2.5.1添加字段
alter table table_name add column_name dataType;
2.5.2修改字段
alter table table_name modify column_name dataType;
2.5.3删除字段
alter table table_name drop column_name;
2.5.4修改表名
rename table old_table_name to new _table_name;
2.5.5修改字段名称
alter table table_name change old_column_name new_column_name dataType;
2.5.6删除表
drop table table_name;
3表数据操作
3.1插入数据
insert into table_name values(value…)
insert into table_name(column_name1,column_name2) values(value1,value2);
eg:向employee表里插入数据
第一种插入方式:
insert into employee values(null,‘pei’,‘m’,‘1999-09-05’,‘2021-03-20’,‘boyfriend’,‘180’,‘like cxy’);
第二种插入方式:
insert into employee(id,name) values(null,‘cxy’);
总结注意的问题
1.字符串类型和日期类型需要通过单引号括起来
2.如果字段自动增长可以不给这个字段给值
3.如果是在表名后面指定字段,就需要在values里按照之前指定字段的顺序来给值
4.如果在表名后面没有指定字段,就需要在values里按照表里定义的字段顺序来依次给值
5.插入数据的类型必须要和字段类型一致
6.插入数据不能超过字段长度限制
3.2更新数据
update table_name set column_name=value;
//有条件的更新操作,只有满足这个条件才能进行更新数据
update table_name set column_name=value where column_name=v;
3.3删除数据
delete from table_name;
//有条件的删除操作,只有满足这个条件才能进行删除数据
delete from table_name where column_name=v;
truncate employee;
注意:
truncate是将整张表的结构进行摧毁再重建,数据也都清空了。delete from删除一条一条数据进行删除。truncate删除效率较高。在以后如果出现多表的场景,truncate这种删除方式有可能会破坏表与表之间的关系,以后删除还是使用delete from来删除数据。
3.4查询操作
select * from table_name;
*代表所有字段
select id,name,gender,birthday,entry_date,job,salary,resume from employee;
3.4.1写*和所有字段来查询效率的高低?
书写所有字段的查询效率较高。*需要去遍历所有的字段再查询,书写所有字段就会直接查询。
select—查询
from—从哪张表
3.4.2去重查询
select distinct column_name from table_name;
3.4.3查询时使用表达式
统计每个学生的总分。
select name,math+chinese+english from exam;
使用别名表示学生总分。
select name,math+chinese+english as sum from exam;
3.4.4where子句查询
eg:查询英语分数在 80-100之间的同学。
select name,english from exam where english between 80 and 100;
查询数学分数为75,76,77的同学。
select name,math from exam where math in(75,76,77);
查询所有姓张的学生成绩。
select * from exam where name like ‘张%’;
查询数学分>70,语文分>80的同学。
select * from exam where math>70 and chinese>80;
查询总分大于230的所有同学
select name,math+chinese+english as sum from exam where math+chinese+english>230;
查询数学分数不低于60分的同学
select * from exam where not (math<60);
查询数学缺考(null)的同学
insert into exam values(null,‘小朴朴’,100,null,100);
select * from exam where math is null;
查询所有人的数学成绩,如果为null则使用0来代替
select name,ifnull(math,0) from exam;
注:
数据库中的关键字执行顺序:from—where—select
3.4.5order by子句
在得到查询结果之后,对查询结果根据某一个字段进行排序输出。
order by关键字永远出现在查询语句的最后面,执行顺序也是最后一个。
select * from table_name order by column_name asc|desc;
3.4.6 聚集函数 count
对于表中所有满足条件的行进行计数操作
遇到列中有行的值为null的不计数
select count(column_name) from table_name;
3.4.7 聚集函数sum
对于满足条件的行,将指定字段全部数据进行求和
sum只能求数值之和
select sum(column_name) from table_name;
3.4.8聚集函数avg
对于满足条件的行,将指定的字段数据全部求平均值
select avg(column_name) from table_name;
3.4.9 聚集函数 max/min
对满足条件的行,在指定字段内查找最大值和最小值
select max(column_name)|min(column_name) from table_name;
3.4.10 group by分组操作
根据指定字段名进行分组,字段相同的分在同一组,同一组只能显示本组的第一条数据,分组之后只会展示同一组的第一条数据但是别的数据没有被覆盖。
select column_name1,column_name2 from table_name group by column_name;