长沙建设工程备案合同查询网站,网站建设的主要情况说明,自己公司做公益网站怎么弄,北京网站建设平台文章目录 前端复习SQL数据库的分类关系型数据库非关系型数据库#xff08;NoSQL#xff09; 数据库的构成软件架构MySQL内部数据组织方式 SQL语言登录数据库数据库操作查看库创建库删除库修改库 数据库中表的操作选择数据库创建表删除表查看表修改表 数据库中数据的操作添加数… 文章目录 前端复习SQL数据库的分类关系型数据库非关系型数据库NoSQL 数据库的构成软件架构MySQL内部数据组织方式 SQL语言登录数据库数据库操作查看库创建库删除库修改库 数据库中表的操作选择数据库创建表删除表查看表修改表 数据库中数据的操作添加数据查询数据修改数据删除数据 特殊关键字where条件关键字distinct过滤关键字limit限制结果集关键字as取别名关键字order by排序关键字group by分组关键字聚合函数 SQL语句的执行顺序 前端复习
HTML 以标签为基础主要负责页面上内容的搭建 css 控制页面的样式字体的大小图片等等主要控制样式页面的布局大div套小div js 页面上动态内容的功能比如点击按钮之后、完成验证码的校验等等html解析之后在浏览器上以dom树的形式存在即对dom树的增删改查 vue 帮我们操作dom我们只用操作数据数据会自己写在页面上插值表达式、v-bind/v-model/v-on/v-for SQL
数据库的分类
关系型数据库
不仅可以存储数据还可以存储数据与数据之间的关系。
常见的关系型数据库
OracleMySQLMariaDBSQL ServerDB2PostgreSQL
非关系型数据库NoSQL
对关系型数据库的补充主要是用来做一些关系型数据库不擅长的事情。关系型数据库的数据一般是存储在磁盘上所以速度比较慢。非关系型数据库一般是存在内存中的所以性能比较好。
常见的非关系型数据库
Redis 最常用的非关系型数据库数据存在内存速度快吞吐量高。 MemcachedMongodbHbase
关系型数据库和非关系型数据库的区别
最本质的区别是:关系型数据库以数据和数据之间存在的关系维护数据, 而非关系型数据库是指存储数据的时候数据和数据之间没有什么特定关系.在大多数时候非关系型数据库是在传统关系型数据库基础上(其实已经基本上完全不同) 在功能上简化 在数据存储结构上大大改变在效率上提升 通过减少用不到或很少用的功能在能力弱化的同时也带来产品性能的大幅度提高。但是本质上讲, 他们都是用来存储数据的. 而对于我们Java后端开发来讲 我们在工作中基本上是以关系型数据库为主, 非关系型数据库为辅的用法. 数据库的构成
软件架构
B/SBrowser-Server即浏览器和服务器, 即通过浏览器和服务器发起网络交互的数据请求. 常见的B/S架构 淘宝、京东、拼多多、百度 C/SClient-Server即客户端和服务器, 即通过客户端和服务器发起网络交互的数据请求. 常见的C/S架构英雄联盟、QQ、微信、数据库、手机app MySQL内部数据组织方式
数据库 表示一份完整的数据仓库 在这个数据仓库中分为多张不同的表。表表示某种特定类型数据的的结构化清单 里面包含多条数据。数据 表中数据的基本单元。 SQL语言
登录数据库
$ mysql -uroot -p
输入密码******数据库操作
查看库
查看所有的数据库
show databases;模糊匹配查看相关的数据库
show databases like system%;
-- test% 表示以test开头
-- %info 表示以info结尾
-- %info% 表示info可以出现在任意位置查看当时创建数据库的命令
show create database test;
-- 查看当时创建数据库test的命令注释
1. 第一种注释
-- 注释的内容
-- 两个‘-’后面一定要有一个空格2. 第二种注释
#注释的内容
-- ‘#’后面可以不加空格3. 第三种注释
/*
注释的内容
*/注意
不要删除系统自带的几个数据库 information_schemamysqlperformance_schemasys
创建库
创建一个数据库
create database db_test;
-- 注意创建一个叫 db_test 的数据库其中注意库名表名列名均不区分大小写
-- 如果要写库名为dbTest则可以把 dbTest 写成 db_test创建一个数据库并指定字符集和指定校对规则
create database db_test character set utf8mb4 collate utf8mb4_bin;
-- mysql里面有一个字符集是utf8但它是假的是使用1-3个字节来存储数据
-- 如果要使用utf8的编码应该使用utf8mb4utf8mb4是4个字节存储数据-- 校对规则是用来比较大小的
-- _cicase insensitive 大小写不敏感
-- _cscase sensitive 大小写敏感
-- egutf8mb4_bin、utf8mb4_general_ci
egcreate database db_test2 character set utf8mb4 collate utf8mb4_ci;-- 如果不指定一个字符集则一般是默认的 latin1
-- latin1一般是不支持中文的删除库
删除名称为db_test的数据库
drop database db_test;修改库
数据库中未提供改库名的操作只提供修改字符集和校对规则。
修改指定库的字符集和校对规则:
alter database db_test character set utf8 collate utf8_bin; 数据库中表的操作
选择数据库
选择指定的数据库:
use db_test;查看当前在什么库:
select database();创建表
Mysql中大小写不敏感不要使用数据库来存储大文件设计数据库字段的时候一定要留有一定的冗余
create table table_name(字段名 字段类型);
-- 括号里面写有哪些列,以及列类型
eg:
create table test_time(id int, date1 date, time1 timestamp);
create table test_number(id int, float1 float(4,2));字段类型 数字(整数型) tinyint1字节。 int 4字节。直接用 bigint 8字节。 数字(小数) float(M,D)4字节。浮点型 M表示最大的长度D表示小数位最大长度 double(M,D) 8字节。浮点型直接用decimal (M, D),dec 压缩的“严格”定点数M2 个字节。定点型。 定点型就是用字符串来存储的 egfloat(4, 2)表示最多存储4位小数位数最多2位。 如果整数位多了比如存了100.23则会报错如果小数位多了比如存了10.233则会四舍五入变为10.23 如果要存储货币需要使用decimal定点数来存或者是字符串 日期 year年(YYYY)。time 时分秒(HH:MM:SS)。date 年月日(YYYY-MM-DD)。直接用datetime 年月日时分秒。(YYYY-MM-DD HH:MM:SS)。 是用字符串存的8个字节 timestamp 年月日时分秒。(YYYY-MM-DD HH:MM:SS)。直接用 是用时间戳存的。存的是从1970-01-01到现在的毫秒数2038年这个时间戳就会用完使用场景操作/更新的时间写表的时候默认会写两个begin_time、update_time 字符串 char(M) 定长字符串设置了长度。 egchar(M)代表最长存储M个长度如果没有存到M个长度会往后面添加空格。取出来的时候会去掉空格。 varchar(M)变长字符串会用1-2字节来存储长度。也就是实际长度1(2)。最大长度65535字节。直接用 eg存储ls则是实际占用空间加上一个字节来存储现在的长度 text文本字符串会用2字节来存储长度。最大长度65535字节约64K。longtext大文本字符串。会使用4字节存储长度。最大长度2^32约4G。
写SQL就是一个翻译的过程
需要想好你的表名需要想好要存的所有的数据想好类型、字段名写SQL
删除表
删除名为table_name的表:
drop table table_name;查看表
查看所有表:
show tables;查看表格结构(有哪些列):
desc table_name;
describe table_name;查看表的创建语句:
show create table table_name;修改表
不建议工作中修改表
修改表名:
rename table old_table_name to new_table_name;
alter table old_table_name rename to new_table_name;修改表字符集 排序规则:
alter table table_name character set utf8mb4 collate utf8mb4_bin;添加列:
alter table table_name add column column_name column_type;删除列:
alter table table_name drop column column_name;修改某列的类型:
alter table table_name modify column column_name column_type;数据库中数据的操作
添加数据
插入数据
方式1指定需要插入的列名values需要与之对应。
insert into table_name (column1, column2, ......) values (value1, value2, ......)方式2不指定需要插入的列名。values必须要写所有value且与建表语句一一对应
insert into table_name values (value1, value2, ......)方式3使用set方式
insert into table_name set column1value1, column2value2,...;可以插入多行
insert into table_name values
(value1, value2, ......),(valuem,valuen,......),(valuem,valuen,......);eg
指定插入列
-- 要在values后面写与之对应的值
-- 插入的类型一定要匹配
insert into student_test(id, name, age, address, remark)
values (1, lihua, 20, china, None);不指定插入的列
-- 插入列的顺序与创建表的时候一致
insert into student_test values (2, zhangsan, 19, Asia, None);-- 插入 一条数据
insert into student_test set id3,namemike,age21,addresschina,remarkNone;-- 还可以一次插入多行格式就是 在前面指定的
insert into student_test(id, name, age, address, remark) values
(4, Jack, 20, china, None), (5, Bob, 25, china, None);查询数据
查询语句:
-- 关键词 select ... from
select * from table_name;-- * 代表选出所有列
-- 也可以写表中的列多列使用, 分割
-- 比如 select id,name from students;
-- table_name 是表名使用where关键词。where相当于是过滤器。
eg:
-- 找出name是 zs 的表记录
select * from table_name where namels;-- 找出年龄大于 18岁的人
select * from table_name where age 18;修改数据
写update语句和delete语句一定要加where条件
更新满足条件的表记录设置列值:
update table_name set column1value1, column2value2 [ where 条件];eg
update student_test set age 18 where id 4;删除数据
删除满足条件的数据:
delete from table_name [WHERE 条件];eg
delete from student_test where id 5;特殊关键字
where条件关键字
使用where 关键字并指定查询条件|表达式, 从数据表中获得满足条件的数据内容在where后面写条件其实就是筛选出符合条件的数据 select就是把这些数据筛选出来展示update只更新符合条件的delete只删除符合条件的 使用位置查询语句select、更新语句update、删除语句delete
一些重要的SQL运算符
算数运算符 用在select后面表示我要选择的数据怎么计算出来的用在where后面表示筛选数据
运算符作用加-减*乘/除%取余
比较和逻辑运算符
运算符作用运算符作用等于等于(可比较null)!不等于不等于小于大于小于等于大于等于between and在闭区间内like通配符匹配(%通配 _占位)is null是否为nullis not null是否不为nullin不在列表内not in不在列表内and与与or或||或
注
不能用来判断null_只能匹配一次
distinct过滤关键字
获取某个列的不重复值语法select distinct 字段名 from 表名; 使用distinct对数据表中一个或多个字段重复的数据进行过滤重复的数据只返回其一条数据给用户。
eg
-- 返回所有的address
select address from student_test;-- 返回不重复的 address
select distinct address from student_test;limit限制结果集关键字
select 查询内容|列等 from 表名字 limit 记录数目;select 查询内容|列等 from 表名字 limit 初始位置记录数目;select 查询内容|列等 from 表名字 limit 记录数目 offset 初始位置;eg
-- limit 限制了返回的最大数目
select * from student_test limit 2;-- limit offset number1, number2
-- number1表示偏移的数量默认是从0开始的
-- number2表示限制的个数
-- 从第2个开始返回限制返回2个
select * from student_test limit 2 offset 1;
select * from student_test limit 1,2;as取别名关键字
as 关键字用来为表和字段指定别名as 可以省略
内容 as 别名eg
select address as dizhi from student_test;order by排序关键字
select 查询内容|列等 from 表名字 order by 字段名 [asc|desc];注
order by对查询数据结果集进行排序 不加排序模式 升序排序默认asc 升序排序desc 降序排序 order by也可以按照多个列排序 如果第一列相同就按照第二列进行排序。如果第二列相同则按照第三列进行排序。以此类推
eg
select * from student_test order by age desc;select * from student_test order by age asc;group by分组关键字
按照某个、某些字段分组
select 查询内容|列等 from 表名字 group by 字段名...group by后select中只能写group by后面的列还可以写一些聚合函数 group_concat()函数会把每个分组的字段值都拼接显示出来having 可以让我们对分组后的各组数据过滤。(一般和分组聚合函数配合使用)round(x, d)x 指要处理的数d 是指保留几位小数min、max、sum、avg、count 当select后 既有表结构本身的字段又有需要使用聚合函数count()、sum()、avg()、max()、min()等的字段就要用到group by分组
eg
select group_concat(name),address from student_test group by address;--
-----------------------------
| group_concat(name) | address |
-----------------------------
| zhangsan | Asia |
| lihua,mike,Jack | china |
-----------------------------select group_concat(name),age,address from student_test group by age having address china;--
-----------------------------------
| group_concat(name) | age | address |
-----------------------------------
| lihua | 20 | china |
| mike | 21 | china |
-----------------------------------
group by的特点
group by代表分组的意思把值相同的分到一组select后面的列只能写group by后面的列或者聚合函数如果group by后面有多个列会首先按照第一个列进行分组第一个列相同再按照第二个列进行分组如果select后面可以看出来是哪一列聚合group by后面可以写1 2 egselect class, count(*) from students group by class; 可以写成select class, count(*) from students group by 1; where与having的区别 where是原始数据进行过滤having是分组之后进行过滤
聚合函数
聚合函数一般用来计算列相关的指定值. 通常和分组一起使用
函数作用函数作用count计数sum和avg平均值max最大值min最小值
count(*)与count(column_name)的区别
count(*)纯粹计算有多少行count(column_name)计算非null的行数
SQL语句的执行顺序
SQL语句的关键字是有顺序的需要按照下面的顺序来写
select column_name, ... from table_name, ...
[where ...][group by ...][having ...][order by ...][limit ...](5) SELECT column_name, ...标识出来筛选的列 (1) FROM table_name, ...打开表 (2) [WHERE ...]过滤 (3) [GROUP BY ...]分组 (4) [HAVING ...]对分组后的数据进行筛选 (6) [ORDER BY ...]对数据进行排序(7) [Limit ...]限制