当前位置: 首页 > news >正文

一个正规的网站建设公司东莞软文推广

一个正规的网站建设公司,东莞软文推广,专做品牌网站,做动态效果的插件网站一、数据库理论基础 1、什么是数据库 存储数据的仓库,是长期存放在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按照一定数据模型组织、描述和存储,具有较小的冗余度,较高的独立性和易扩展性,并为各种用户共享&am…

一、数据库理论基础

1、什么是数据库

存储数据的仓库,是长期存放在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按照一定数据模型组织、描述和存储,具有较小的冗余度,较高的独立性和易扩展性,并为各种用户共享,总结为以下几点:

  • 数据结构化

  • 数据的共享性高,冗余度低,易扩充

  • 数据独立性高

  • 数据由 DBMS 统一管理和控制(安全性、完整性、并发控制、故障恢复)

2、常见数据库

关系型数据库:Oracle、DB2、Microsoft SQL Server、MicrosoftAccess、MySQL、浪潮K-DB 、武汉达梦、南大通用、人大金仓等

非关系型数据库:NoSQL(Not Only SQL )

3、MySQL数据库概述

DB-Engines Ranking - popularity ranking of database management systems

MySQL是一个中小型关系数据库管理系统

3.1 MySQL特性

  1. 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。

  2. 支持AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、OS/2 Wrap、Solaris、SunOS、Windows等多种操作系统。

  3. 为多种编程语言提供了API。这些编程语言包括C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。

  4. 支持多线程,充分利用CPU资源,支持多用户。

  5. 优化的SQL查询算法,有效地提高查询速度。

  6. 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。

  7. 提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。

  8. 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。

  9. 提供用于管理、检查、优化数据库操作的管理工具。

  10. 可以处理拥有上千万条记录的大型数据库。

二、安装MySQL(见上一个博客)

三、MySQL数据库和表操作

1、SQL语句

SQL:结构化查询语言,在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。

2、SQL分类

DDL:数据定义语言,定义对数据库对象(库、表、列、索引)的操作。 create、drop、alter、rename、 truncate等

DML:数据操作语言,定义对数据库记录的操作。 insert、delete、update、select等

DQL:数据查询语言,select

DCL:数据控制语言,定义对数据库、表、字段、用户的访问权限和安全级别,grant

3、SQL语句的书写规范

在数据库系统中,SQL语句不区分大小写(关键字建议用大写) ,但字符串常量区分大小写。

SQL语句可单行或多行书写,以“;”结尾。

关键词不能跨多行或简写。

SELECT * FROM tb_table

注释: SQL标准: /**/。

多行注释 “-- ”

单行注释 MySQL注释: “#”

4、MySQL自带数据库

Information_schema: 主要存储了系统中的一些数据库对象信息:如用户表信息、列信息、权限信 息、字符集信息、分区信息等。(数据字典表)

performance_schema: 主要存储数据库服务器的性能参数

mysql: 存储了系统的用户权限信息及帮助信息。

sys: 5.7新增,之前版本需要手工导入。这个库是通过视图的形式把information_schema

performance_schema结合起来,查询出更加令人容易理解的数据

5、utf8和utf8mb4的区别

utf8:只支持基本多语言平面(BMP)的字符(最多3字节)

uft8mb4:支持完整的Unicode字符集,包括补充字符(如emoji、某些罕见汉字等,最多四字节)

修改为utf8

修改my.cnf配置文件,可修改MySQL默认的字符集,修改完毕重启MySQL
1.在[mysqld]下添加
    default-character-set=utf8 #适合5.1及以前版本
    (mysql 5.5及以后版本添加character-set-server=utf8)
    init_connect = 'SET NAMES utf8'
2.在[client]下添加
    default-character-set=utf8
3. 5.8开始,官方建议使用utf8mb4。

6、数据类型

Text类型

Number类型

data类型

常用数据类型

7、数据库约束

1、主键约束

主键从功能上看相当于非空且唯,一个表中只允许一个主键,主键是表中唯一确定一行数据的字段。一般建议主键采用“int类型”,一般建议由数据库自身维护这个字段的值。当建立主键约束时,MySQL为主键创建对应的索引——主键索引,主键约束名总为primary。

四、SQL之DML

有关数据表的DML操作:INSERT INTO、DELETE、TRUNCATE、UPDATE、SELECT

条件查询、查询排序、聚合函数、分组查询

1、insert

insert INTO table_name[(field1 [, field2 ……]) values(value1 [, vaule2 ……])  [,()]];
mysql> INSERT INTO student VALUES( 901,'张老大', '男',1985,'计算机系', '北京市海淀区'); 

2、update

update table_name set 字段1=新值 [, 字段2=新值, 字段3=字段3 + 1]   [where 条件];
update student set age=20 where id=1;

3、replace

当表里面没有这条数据时,则执行行插入,否则执行更新

注意:replace本质是先删除,再插入

replace into student(id,name,password) values(100,"hql","123")

4、select

select *|字段1 [, 字段2 ……] from 表名称 [, 表名称2……] [where 条件] [group by 字段 [having 分组后的筛选]] [order by 字段 [desc|asc] [字段2 [desc|asc] ……]] [limit 分页]

4.1 简单的SQL查询

-- 查询表中所有数据
select * from student;-- 查询所需要的字段信息
select id,name from student;-- 根据条件来查询信息
select name from student where id=1;
select password from student where name="hql";

4.2 条件查询

条件判断

  • = 判断两次的值是否相等

  • is 判断空null

  • is not null来判断不为空

  • <=> 可以判断null或者普通值    

  • != 不等于

  • <>也是不等于

  • 4.4 逻辑运算符

逻辑运算符是多条件关联的一种方式。(与或非)

and、or、not

注意:在sql中,如果要提升条件的运行顺序,或者提高条件的优先级别,则需要使用括号来提升。

-- 等值查询
select uname,age from student where age=20;-- NULL不能用=判断
select * from student where age is NULL;-- 逻辑运算符
select * from student where age<=20;
select * from sutdent age>=20 and age<=30;-- and运算符(类似还有or)
select uname,age from student where uname="黄%" and age>=18;-- 别名
select uname as "名字",age as "年龄" from student where age between 20 and 30;-- IN
select uname,age from student where age in (18,20,30);-- not
select uname,age from student where age not in (18,20,30);-- like (%) 可表示零或多个字符、( _ ) 可表示一个字符
select uname from student where uname like "黄%";

4.3 分组统计与筛选

-- 分组(group by)
select gender as "性别" from student group by gender;-- 统计(count(*))
select gender as "性别",count(*) as "人数" from student group by gender;-- 分组后的条件筛选
select gender as "性别",count(*) as "人数" from student group by gender having count(gender)>4;

4.4 排序

-- 默认升序(asc)
select * from student order bby age;-- 设置降序
select * from student order by desc;--当存在多字段排序时,根据顺序依次排序
select * from student order by age asc,id desc;

4.5 分页

-- 显示前两条数据
select * from student limit 2;-- 显示第6条数据到第9条数据
select * from student limit 6,4;

4.6 多表关联查询

多表关联

外键:指的是两张或者多张表之间关联关系的字段。

外键约束:是表的约束,是约束表在插入外键数据时能够正确的插入。

外键是构建于一个表的两个字段或者两个表的两个字段之间的关系
外键确保了相关的两个字段的两个关系:
子(从)表外键列的值必须在主表参照列值的范围内,或者为空(也可以加非空约束,强制不允许为空)。
当主表的记录被子表参照时,主表记录不允许被删除。
外键参照的只能是主表主键或者唯一键,保证子表记录可以准确定位到被参照的记录。

表与表之间的关联

当表与表之间存在了外键,这就意味着,这两张表之间存在某种关联关系。

一旦表存在了关联关系,则会进行外键设计,如果设计外键,将外键设计在哪张表中?

  • 一对一 :外键可以设计在任意一张表中

  • 一对多 :外键必须设计在多方

  • 多对多 :创建第三张表,来专门描述两张表的关联关系

-- 先看两张表的结构
mysql> select * from t_stu;
+----+--------+------+
| id | sname  | c_id |
+----+--------+------+
|  1 | 张三   |    1 |
|  3 | 李四   |    2 |
|  4 | 王五   |    3 |
|  5 | 老六   |    4 |
+----+--------+------+
4 rows in set (0.00 sec)mysql> select * from t_class;
+----+-----------------------+
| id | cname                 |
+----+-----------------------+
|  1 | MYSQL                 |
|  2 | Python                |
|  3 | JAVA                  |
|  4 | 计算机网络基础        |
+----+-----------------------+
4 rows in set (0.00 sec)-- 直接查询两张表(引发笛卡尔积现象)
mysql> select * from t_stu,t_class;
+----+--------+------+----+-----------------------+
| id | sname  | c_id | id | cname                 |
+----+--------+------+----+-----------------------+
|  5 | 老六   |    4 |  1 | MYSQL                 |
|  4 | 王五   |    3 |  1 | MYSQL                 |
|  3 | 李四   |    2 |  1 | MYSQL                 |
|  1 | 张三   |    1 |  1 | MYSQL                 |
|  5 | 老六   |    4 |  2 | Python                |
|  4 | 王五   |    3 |  2 | Python                |
|  3 | 李四   |    2 |  2 | Python                |
|  1 | 张三   |    1 |  2 | Python                |
|  5 | 老六   |    4 |  3 | JAVA                  |
|  4 | 王五   |    3 |  3 | JAVA                  |
|  3 | 李四   |    2 |  3 | JAVA                  |
|  1 | 张三   |    1 |  3 | JAVA                  |
|  5 | 老六   |    4 |  4 | 计算机网络基础        |
|  4 | 王五   |    3 |  4 | 计算机网络基础        |
|  3 | 李四   |    2 |  4 | 计算机网络基础        |
|  1 | 张三   |    1 |  4 | 计算机网络基础        |
+----+--------+------+----+-----------------------+
16 rows in set (0.00 sec)-- 给上条件可以解决
mysql> select * from t_stu,t_class where t_stu.c_id = t_class.id;
+----+--------+------+----+-----------------------+
| id | sname  | c_id | id | cname                 |
+----+--------+------+----+-----------------------+
|  1 | 张三   |    1 |  1 | MYSQL                 |
|  3 | 李四   |    2 |  2 | Python                |
|  4 | 王五   |    3 |  3 | JAVA                  |
|  5 | 老六   |    4 |  4 | 计算机网络基础        |
+----+--------+------+----+-----------------------+
4 rows in set (0.00 sec)-- 使用join(没有条件时引发笛卡尔积)
mysql> select * from t_stu join t_class;
+----+--------+------+----+-----------------------+
| id | sname  | c_id | id | cname                 |
+----+--------+------+----+-----------------------+
|  5 | 老六   |    4 |  1 | MYSQL                 |
|  4 | 王五   |    3 |  1 | MYSQL                 |
|  3 | 李四   |    2 |  1 | MYSQL                 |
|  1 | 张三   |    1 |  1 | MYSQL                 |
|  5 | 老六   |    4 |  2 | Python                |
|  4 | 王五   |    3 |  2 | Python                |
|  3 | 李四   |    2 |  2 | Python                |
|  1 | 张三   |    1 |  2 | Python                |
|  5 | 老六   |    4 |  3 | JAVA                  |
|  4 | 王五   |    3 |  3 | JAVA                  |
|  3 | 李四   |    2 |  3 | JAVA                  |
|  1 | 张三   |    1 |  3 | JAVA                  |
|  5 | 老六   |    4 |  4 | 计算机网络基础        |
|  4 | 王五   |    3 |  4 | 计算机网络基础        |
|  3 | 李四   |    2 |  4 | 计算机网络基础        |
|  1 | 张三   |    1 |  4 | 计算机网络基础        |
+----+--------+------+----+-----------------------+
16 rows in set (0.00 sec)-- 带上条件
mysql> select * from t_stu join t_class where t_stu.c_id = t_class.id;
+----+--------+------+----+-----------------------+
| id | sname  | c_id | id | cname                 |
+----+--------+------+----+-----------------------+
|  1 | 张三   |    1 |  1 | MYSQL                 |
|  3 | 李四   |    2 |  2 | Python                |
|  4 | 王五   |    3 |  3 | JAVA                  |
|  5 | 老六   |    4 |  4 | 计算机网络基础        |
+----+--------+------+----+-----------------------+
4 rows in set (0.00 sec)

5、SQL中的函数

5.1 聚合函数

除了COUNT()以外,聚合函数都会忽略NULL值。

5.2 数字型函数

5.3 字符串函数

5.4 日期和时间函数

5.5 流程控制函数

http://www.cadmedia.cn/news/12577.html

相关文章:

  • 买空间网官网昆明seocn整站优化
  • 快手官方网站音乐人怎么做新闻头条今日最新消息
  • 辽宁建设工程信息网新域名株洲seo快速排名
  • 三亚中国检科院生物安全中心门户网站建设sns营销
  • 射阳住房和城乡建设局网站sem网络推广公司
  • 网站导航栏一般有什么内容怎么建网站
  • 十大网站建设公司关键词歌词打印
  • 怎么制作平台谷歌seo新规则
  • 论网站建设的重要性郑州网站建设推广优化
  • 临西县建设网站seo交流
  • 网络建站优化科技你对网络营销的理解
  • 集团公司门户网站建设东莞最新疫情
  • 个人简历制作网站百度地图导航
  • 站长之家官网网址说说seo论坛
  • 建设监理收录网站武汉全网营销推广公司
  • 买完网站怎么建设网站ip查询站长工具
  • 网站建设综合训练的实验目的无锡网站建设
  • 筹划建设智慧海洋门户网站网络推广营销
  • 银川网站建设哪家价格低真正永久免费网站建设
  • 做国外销售都上什么网站网站seo优化心得
  • 网站建设公司名称网页生成
  • 网站建设的静态网页作业百度答主中心入口
  • 网站搭建修改收费依据武汉网站seo
  • 男女做爰高清免费视频网站网站统计分析工具的主要功能
  • 哈尔滨网站开发工作室公司推广策划
  • 龙海市建设局网站百度指数查询
  • 网站服务器租用怎么购买客源引流推广
  • 住房和城乡建设部建设司网站首页百度的网址是什么
  • 浙江省城乡住房建设部网站如何推广公司网站
  • 延庆网站建设优化seo做百度推广一个月多少钱