目录
关于数据库入门整理,多多支持,后续内容会继续补充,感谢。
关于MySQL数据库应用与设计任务的设计知识有:NySQL的下载,安装,配置,E-R图,概念设计,逻辑设计,数据类型,表,数据库,运算符,函数,约束,数据完整性,触发器,查询,视图,存储过程,安全,权限等知识。
随着互联网快速发展“L”,”N”,”M”,”P”,”R”分别代表着Linux、Nginx、MySQL、PHP、Redis这些都是后端开发工程师必备技能。
一、数据库
长期存储在计算机内有组织的可共享的大量数据集合,根本目的解决数据共享问题。
按照数据结构来组织、存储和管理数据的仓库。相当于可以提供多人使用管理的数据仓库。
数据库系统模型:层次模型,网状模型,关系模型
数据库的设计:概念设计、逻辑设计、物理设计
数据库管理系统(DBMS,database Management System)
常见数据库:
Oracle:支持LINUX、Windows等多平台处理强,适用于大型公司、机构等。
SQL SERVER:可运行在WindowsNT/2000/XP等操作系统。
ACCESS数据库:Microsoft公司,简单易学。
MySQL:开源、免费、多平台使用、运行快、用户权限设置简单等。
MySQL的特点:
1、可移植性强 2、运行快 3、支持多平台 4、支持各种开发语言 5、提供多种引擎
6、功能强大 7、安全性高 8、价格低廉
MySQL下载地址:http://dev.mysql.com/downloads/
MySQL可视化界面工具:Navicat
Navicat简介:一套快速、可靠并价格便宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而开发。
是拥有直观化的图形用户界面,它让用户可以以安全并且简单的方式创建、组织、访问和共享MySQL数据库中的数据。
可以用来对本机或远程的MySQL、SQL Server、SQLite、Oracle及PostgreSQL数据库进行管理及开发。Navicat的功能足以符合专业开发人员的所有需求,而且对数据库服务器的新手来说又相当容易学习。
适用于Microsoft Windows、Mac OS及Linux三种平台,它可以让用户连接到任何本机或远程服务器、提供一些实用的数据库工具如数据模型、数据传输、数据同步、结构同步、导入、导出、备份、还原、报表创建工具及计划以协助管理数据。
二、数据库的使用
命名格式:
1、mysql.客户端工具(在安装目录下的bin目录中,myql.exe,最好将bin目录路径加入到环境境变量path中)中的命令通常由SQL语句组成,随后跟着一个分号。有一些例外不需要分号。
2、在windows下命令不分大小写,命令可跨行,以分号结束。输入\c表示取消前面输出的未执行的命令行。
命名规范:
1、库名、表名、字段名必须使用小写字母,如需分隔,则采用下划线“_”分割。
2、库名、表名、字段名支持最多64个字符,但为了统一规范、易于辨识以及减少传输量,禁止超过32个字符。
3、库名、表名、字段名禁止使用MySQL保留字。当库名、表名、字段名等属性含有保留字时,必须用反引号(`)引用属性名称,这将使得SQL语句书写、SHELL脚本中变量的转义等变得非常复杂。
注:建议表字符集使用UTF8,必要时可申请使用UTF8MB4字符集。
1.利用MySQL客户端访问数据库:
2.Windows建立连接
mysql -uroot -p -P3306 -hlocalhost;
3.创建子账号
目的:实现多人同时对数据库处理,每个人的权限不同。
使用root账号登录MySQL 新建子账号:
create user 'test'@'localhost' identified by '123456';
创建后登录查看
三、 数据库的创建
使用SQL语句使用数据库
1.创建数据库
mysql> create database kuming character set character_name;
kuming:表示要创建数据库的名字。
character_name:表示设置数据库的字符集,以防乱码出现。库中如有中文最好使用gbk字符集。
注:MySQL中两个数据库不允许相同名字,每天SQL语句都以(;)结束。
2.查询数据库
查询MySQL数据库中所有数据库信息:
mysql> show databases;
3.使用数据库
mysql> USE shujuku;
4.修改数据库参数
mysql> alter database kuming character set character_name;
kuming:要修改的数据库名
character_name:修改的字符集名
5.删除数据库
mysql> DROP DATABASE MZ;
Query OK, 0 rows affected (0.03 sec)
mysql>delete from 表名; 删除全部
mysql>truncate table 表名; 清楚表的所有数据
MZ:数据库名字
注:英文半角 ; 语句结束标记按Enter键执行MySQL命令或SQL语句,
退出:输入quit或exit或者直接关闭
跳出:当命令遇到问题执行不了,又无法跳出,按CTRL+C。
7.更新数据
update 表名 set 字段名=更新的值 limit 3; 更新前三条数据的字段
设计关系数据库有两个阶段:
一:实体-联系模型(ER图)
二:将ER模型转化为二维表结构(关系数据模型)
8.数据表的基础知识
表的定义:表是包含数据库中所有数据的数据库对象。
列名(字段名)
列名是用来访问表中具体域的标识符,列名必须遵循下列规则:
(1)列名是可以含有从1到128的ASCII码字符,它的组成包括字母、下划线、符号以及数字。使用小写英文单词,如果有多个单词使用下划线隔开。
(2)不要给列名命名为与SQL关键字相同的名字。
(3)列名应该反映数据的属性。
(4)表的主键一般都约定成为id,自增类型。
(5)text字段尽量少用。
(6)所有字段,均为非空,最好显示指定默认值。
数据类型
(1)数值类型
整数数据类型 小数数据类型 浮点数据类型
(2)字符串类型
(Char是固定长度Char可能会浪费一些存储空间)
(Varchar是可变长度,按实际长度存储,节省空间)
(3)日期时间类型
(年份用year,存储日期和时间用DateTime)
(4)enum类型和set类型
(字符串形式出现Enum取单值,Set可取多值)
(5)text类型和blob类型
长度
给列定义的大小部分指的是该列能接受多少个字符。
9.创建数据表
mysql> create table bm_name
-> (
-> bzlm datatype [约束条件],
-> bzlm2 datatype [约束条件],
-> 等
-> [表级别约束条件]
-> );
bm_name:数据表名字
bzlm:数据表中列名
datatype:表中列的数据类型
例:
代码如下:
查看数据表:
mysql> show tables;
查看数据表结构:
mysql> desc 表名称;
修改数据表:
修改字段属性语法格式:
1. 向表中添加一个字段:
mysql> alter table <表名>
-> add <新字段><数据类型>《约束条件》{first|after《已存在字段名前或后》};
注:默认新添加的字段放在最后一列。
2. 修改字段名:
mysql> alter table <表名>
-> change <原字段名> <新字段名> 《数据类型》[约束条件]
-> [first|after<已存在字段名>];
3. 修改表名称
mysql> alter table <表原名>
-> rename <新表名>;
4. 删除数据表和表中字段(删除前要做好备份)
mysql> drop table <表名称>;
mysql> alter table <表名>
-> drop <字段名>;
5.修改数据表中字段类型
MySQL> alter table 表名
> modify 字段名 新数据类型 约束条件;
6.修改数据表中字段位置
MySQL> alter table 表名
> modify 字段1 数据类型 约束条件 first|after<字段2>;
注:多种修改用逗号分隔。
四、数据库中的记录
1.插入的新记录必须完全遵守数据的完整性约束
2.插入字符型、日期时间型数值,必须在值的前后加入半角单引号,只有数值型数据不需要加单引号。(中英文切换)
3.对于Date类型的数值,插入时,必须使用“YYYY-MM-DD”的格式,并且要用半角单引号引起来
4.若某字段不允许为空,且无默认值约束,则表示向数据表插入一条记录时,必须有写入值,默认插入不成功。若某字段不允许为空,且有默认值约束,则插入记录时自动使用默认值代替。
5.若某字段设置为主键约束,则插入记录时不允许出现重复数值。
1.插入记录
mysql> insert into <数据表名>
->(col_list,.......)<可以不写>
-> values
-> (val_list,.......);
col_llist:表中字段名称 val_list:每个字段值并与之对应
注:插入多条时用逗号间隔。
2.修改数据表中的记录
mysql> update <数据表名>
-> set
-> col_name=value,...
-> where条件语句; (如不说明将对表中修改全部数据)
注:(使用UPDATE语句修改数据时,可能会有多条记录满足WHERE条件。要保证
WHERE子句的正确性,一旦WHERE子句,将会破坏所有改变的数据。)
3.删除记录
mysql> delete from <数据表名>
-> where 要删除的记录参数; (如果没有where将删除所有记录)
五、复制表
1.复制
复制数据表结构
mysql> create table (要复制表) like (table)形式;
复制表结构和表记录
mysql> create table (复制表) select...from (table)形式;
将完整数据复制到复制表中
mysql> insert into (复制表)select* from table;
2.查看
查看数据表中所有记录
mysql> select * from 数据表;
mysql>select * from 表名 limit 10; 查询数据表前10个记录
mysql>select * from 表名 LIMIT 10,10; 查询数据表中第11条后面10条数据
mysql>select 字段名 AS 新字段名 from 表名 LIMIT 6,5; 给指定字段重新命名
数据的导入与导出
使用Navicat进行导出:选中数据表右键导出向导——选择导出格式——选择导出文件并定义附加选项——选择字段——定义附加选项——开始导出
导入:右键单击数据表——选择导入向导——选择导入格式和导入位置——源定义附加选项——选择现有表或新建表——导入模式——开始导入 (Navicat看不到数据,进行刷新或数据同步)
六、命令的使用
单条件查询
select * from 表名 where 字段名>12; 查询字段满足>12
AND多条件查询
select * from 表名 where 字段名>12 and name like '王%';
and表示同时满足字段名>12和name like '王%'
OR多条件查询
select * from 表名 where 字段名>12 or name like '王%';
满足其中一个条件
UNION联合查询
select * from 表名 where age > 23
union
select * from 表名 where age > 30;
union all
把满足的结果并到一起
ORDER BY 排序
ASC从小到大排序
select * from 表名 order by age ASC; age字段名
DESC从大到小排序
select * from 表名 order by id desc;
使用多字段混合排序
select * from 表名 order by age desc,id asc;
对字符串类型字段排序
select * from 表名 order by name asc;
JOIN表连接
LEFT JOIN左连接
mysql>SELECT c.id AS cours_id,c.*,t.* FROM cours c LEFT JOIN teacher t ON c.teacher_id=t.id;
c.id AS cours_id表示将cours表中id字段重命名为cours_id展示,防止混淆
c.*表示cours表所有字段
t.*表示teacher表字段所有数据
ON 后面跟着条件是连接表的条件
cours c 将cours简写c 同下
left join 为左连接,以左为基准,若右表没有对应的值,用NULL 填补
INNER JOIN 内连接
SELECT c.id AS cours_id,c.*,t.* FROM cours c INNER JOIN teacher t ON c.teacher_id=t.id;
RIGHT JOIN 右连接
SELECT c.id AS cours_id,c.*,t.* FROM cours c RIGHT JOIN teacher t ON c.teacher_id=t.id;
多表混合连接
SELECT * FROM
student a
LEFT JOIN
student_cours b
ON a.id=b.student_id
RIGHT JOIN
course c
ON b.cours_id=c.id
INNER JOIN teacher d
ON c.teacher_id=d.id;
七、数据库的运算符
1、算数运算符
算术运算符是SQL中最常用的运算符,主要是对数值运算使用。算数运算符主要包括加、减、乘、除、取余5种。
使用算数运算符计算加减乘除
mysql> select hits,hits+hits,hits-hits,hits*hits,hits/hits from tb_news(数据表名字)(hits是字段名);
+------+-----------+-----------+-----------+-----------+
| hits | hits+hits | hits-hits | hits*hits | hits/hits |
+------+-----------+-----------+-----------+-----------+
| 100 | 200 | 0 | 10000 | 1.0000 |
| 200 | 400 | 0 | 40000 | 1.0000 |
| 300 | 600 | 0 | 90000 | 1.0000 |
| 500 | 1000 | 0 | 250000 | 1.0000 |
| 200 | 400 | 0 | 40000 | 1.0000 |
| 100 | 200 | 0 | 10000 | 1.0000 |
| 200 | 400 | 0 | 40000 | 1.0000 |
+------+-----------+-----------+-----------+-----------+
7 rows in set (0.00 sec)
mysql>
2、比较运算符
比较运算符用于比较两个表达式的值,其运算结果为逻辑值,可以为3种之一:1(真),0(假)及null(不能确定)
例:
运算符’=‘:
判断数字、字符串和表达式是否相等,相等返1,否则返0,NULL不能判断
mysql> select zidu,zidu='1001' from tb_user(数据表名)(zidu字段名);
查询数据表中字段zidu为p2001的数据
mysql> select * from 数据表名
-> where zidu='p2001';
运算符’LIKE’:
“LIKE”运算符用来匹配查询,如匹配则返1,否则返0,like关键字经常与通配符“_”和“%”一起用。
%:匹配一个或多个字符,代表任意长度的字符串,长度可为0.如a%b,以a开头b结束任意长度字符串。
—:只匹配一个字符。如a_b,表示以a字母开头以b字母结束的3个字符。
运算符‘REGEXP'(正则表达式):
“REGEXP”用来匹配字符串,如果X1满足匹配式,返1,否则返0。‘’REGEXP‘’经常与“$”和“^”和“.”使用。
“^”用来匹配字符串的开始部分
“$”用来匹配字符串的末尾部分 “.”用来代表字符串中的一个字符
八、数据库的函数
1.数学函数
例:
ABS(x)函数
mysql> select ABS(5-9),ABS(-5.99);
+----------+------------+
| ABS(5-9) | ABS(-5.99) |
+----------+------------+
| 4 | 5.99 |
+----------+------------+
1 row in set (0.00 sec)
mysql>
FLOOR(x)和CEILING(x)函数
FLOOR(x)函数用于获得小于x的最大整数值,CEILING(x)用于获得大于x的最小整数值
mysql> select floor(150.23),ceiling(13.324);
+---------------+-----------------+
| floor(150.23) | ceiling(13.324) |
+---------------+-----------------+
| 150 | 14 |
+---------------+-----------------+
1 row in set (0.00 sec)
GREATEST()和LEAST()函数
他们的功能是获得一组数中的最大值和最小值。
mysql> select greatest(10,25,98,152,12),least(11,32,147,21);
+---------------------------+---------------------+
| greatest(10,25,98,152,12) | least(11,32,147,21) |
+---------------------------+---------------------+
| 152 | 11 |
+---------------------------+---------------------+
1 row in set (0.00 sec)
注:greatest求的是某几列的最大值,横向求最大;max(a) 是给纵向求最大
- max函数:计算表达式最大值
- min函数:计算表达式最小值
- count函数:统计满足条件的记录数
- sum函数:计算所有字段的总和
- avg函数:计算各个字段值的平均值
2.字符串函数
3.日期和时间函数
NOW()函数:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2022-04-09 01:43:01 |
+---------------------+
1 row in set (0.00 sec)
HOUR(t) MINUTE(t) SECOND(t)函数:
mysql> select HOUR('12:43:32'),MINUTE('12:43:32'),SECOND('12:43:32');
+------------------+--------------------+--------------------+
| HOUR('12:43:32') | MINUTE('12:43:32') | SECOND('12:43:32') |
+------------------+--------------------+--------------------+
| 12 | 43 | 32 |
+------------------+--------------------+--------------------+
1 row in set (0.00 sec)
后续内容会继续补充,互相学习,多多支持,点个赞三连走起,再走呗
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/38853.html