摘要:一關(guān)系型數(shù)據(jù)庫概述數(shù)據(jù)庫定義和特點關(guān)系型數(shù)據(jù)庫是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。與實體完整性是關(guān)系模型必須滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性。支持大型的數(shù)據(jù)庫。
一.關(guān)系型數(shù)據(jù)庫概述 1.數(shù)據(jù)庫定義和特點
關(guān)系型數(shù)據(jù)庫:是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。
RDBMS即關(guān)系數(shù)據(jù)庫管理系統(tǒng)(Relational Database Management System)的特點:
1.數(shù)據(jù)以表格的形式出現(xiàn)
2.每行為各種記錄名稱
3.每列為記錄名稱所對應(yīng)的數(shù)據(jù)域
4.許多的行和列組成一張表單
5.若干的表單組成database
數(shù)據(jù)庫: 數(shù)據(jù)庫是一些關(guān)聯(lián)表的集合。
數(shù)據(jù)表: 表是數(shù)據(jù)的矩陣。在一個數(shù)據(jù)庫中的表看起來像一個簡單的電子表格。
列: 一列(數(shù)據(jù)元素) 包含了相同的數(shù)據(jù), 例如郵政編碼的數(shù)據(jù)。
行:一行(=元組,或記錄)是一組相關(guān)的數(shù)據(jù),例如一條用戶訂閱的數(shù)據(jù)。
冗余:存儲兩倍數(shù)據(jù),冗余降低了性能,但提高了數(shù)據(jù)的安全性。
主鍵:主鍵是唯一的。一個數(shù)據(jù)表中只能包含一個主鍵。你可以使用主鍵來查詢數(shù)據(jù)。
外鍵:外鍵用于關(guān)聯(lián)兩個表。
復(fù)合鍵:復(fù)合鍵(組合鍵)將多個列作為一個索引鍵,一般用于復(fù)合索引。
索引:使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。索引是對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結(jié)構(gòu)。類似于書籍的目錄。
參照完整性: 參照的完整性要求關(guān)系中不允許引用不存在的實體。與實體完整性是關(guān)系模型必須滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性。
3.MySQL數(shù)據(jù)庫 概念MySQL 是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典 MySQL AB 公司開發(fā),目前屬于 Oracle 公司。MySQL 是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。
特點MySQL 是開源的,所以你不需要支付額外的費用。
MySQL 支持大型的數(shù)據(jù)庫。可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫。
MySQL 使用標(biāo)準的SQL數(shù)據(jù)語言形式。
MySQL 可以運行于多個系統(tǒng)上,并且支持多種語言。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
MySQL 對PHP有很好的支持,PHP是目前最流行的Web開發(fā)語言。
MySQL 支持大型數(shù)據(jù)庫,支持5000萬條記錄的數(shù)據(jù)倉庫,32位系統(tǒng)表文件最大可支持4GB,64位系統(tǒng)支持最大的表文件為8TB。
MySQL 是可以定制的,采用了GPL協(xié)議,你可以修改源碼來開發(fā)自己的 MySQL 系統(tǒng)。
安裝a.解壓后在該文件夾下創(chuàng)建 my.ini 配置文件,編輯 my.ini 配置以下基本信息:
[mysql] # 設(shè)置mysql客戶端默認字符集 default-character-set=utf8 [mysqld] # 設(shè)置3307端口 port = 3307 # 設(shè)置mysql的安裝目錄 basedir=E:MySQLmysql-8.0.12 # 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄 datadir=E:MySQLsqldata # 允許最大連接數(shù) max_connections=20 # 服務(wù)端使用的字符集默認為8比特編碼的latin1字符集 character-set-server=utf8 # 創(chuàng)建新表時將使用的默認存儲引擎 default-storage-engine=INNODB # 默認使用“mysql_native_password”插件認證 default_authentication_plugin=mysql_native_password [mysql] # 設(shè)置mysql客戶端默認字符集 default-character-set=utf8 [client] # 設(shè)置mysql客戶端連接服務(wù)端時默認使用的端口 port=3307 default-character-set=utf8
b:初始化數(shù)據(jù)庫:使用管理員打開cmd,在 bin 目錄下執(zhí)行命令:mysqld --initialize --console
c:安裝服務(wù):mysqld --install [服務(wù)名]
d:啟動服務(wù):net start mysql,net stop mysql停止服務(wù),通過命令sc delete MySQL/mysqld -remove卸載 MySQL 服務(wù)
e:登陸數(shù)據(jù)庫:mysql -u root -p 輸入上面初始化生成的密碼。
f:更改密碼:ALTER USER "root"@"localhost" IDENTIFIED WITH mysql_native_password BY "新密碼";
二.MYSQL的SQL語言SQL:Structure Query Language結(jié)構(gòu)化查詢語言
DDL:數(shù)據(jù)定義語言,定義數(shù)據(jù)庫、數(shù)據(jù)表它們的結(jié)構(gòu):create(創(chuàng)建) drop(刪除) alter(修改)
DML:數(shù)據(jù)操作語言,主要是用來操作數(shù)據(jù)insert(插入) update(修改) delete(刪除)
DCL:數(shù)據(jù)控制語言,定義訪問權(quán)限,取消訪問權(quán)限,安全設(shè)置grant
DQL:數(shù)據(jù)查詢語言,select(查詢) from字句 where字句
三.數(shù)據(jù)庫CRUD的操作--1.首先要登陸數(shù)據(jù)庫服務(wù)器 mysql -uroot -p123456 --2.數(shù)據(jù)庫的創(chuàng)建 : create database 數(shù)據(jù)庫的名 character set 字符集 collate 校對規(guī)則 create database demodb character set utf8 collate utf8_bin; --3.數(shù)據(jù)庫的查詢: show databases; select database(); //正在使用的 show create database 數(shù)據(jù)庫的名字; --4.數(shù)據(jù)庫的修改: alter database 數(shù)據(jù)庫 character set 字符集(utf8); --5.數(shù)據(jù)庫的刪除: drop database 數(shù)據(jù)庫名 --6.切換數(shù)據(jù)庫 : use 數(shù)據(jù)庫的名字;四.表的操作 1.創(chuàng)建表
create table 表名( 列名 列的類型(長度) 約束, sid int primary key auto_increment, sname varchar(30), sex int, age int ); --列的類型: int char(固定長度)/varchar(可變長度),長度代表的是字符的個數(shù) double date:YYYY-MM-DD time:hh:mm:ss 默認值是null timestamp:YYYY-MM-DD hh:mm:ss默認使用當(dāng)前時間 text:主要是存放文本 blob:存放的是二進制 --列的約束: 主鍵約束:primary key 唯一約束:unique 非空約束:not null 自動增長: auto_increment2.查看表
--查看所有的表 show tables; --查看表的定義 show create table 表名; --查看表結(jié)構(gòu) desc 表名;3.修改表
--修改表名和字符集 rename table 舊表名 to 新表名; alter table 表名 character set gbk; --修改列 添加列: alter table 表名 add 列名 列的類型 列的約束(not null); 刪除列: alter table 表名 drop chengji; 改類型: alter table 表名 modify 列名 新的類型 新的約束(not null); 改列名: alter table 表名 change 舊列名 新列名 varchar(2);4.刪除表
drop table allidea;五.表中數(shù)據(jù)的CRUD的操作 1.增刪改數(shù)據(jù)
--1.插入數(shù)據(jù) insert into 表名(列名1,列名2,列名3) values(值1,值2,值3),(值1,值2,值3); //全插入時列名可以省略 --中文亂碼問題 暫停mysql服務(wù),在mysql安裝路徑中找到my.ini配置文件,將57行改成gbk,重啟mysql. --2.刪除記錄 delete from 表名 where 條件; delete from demodb where sid = 5; --delete和truncate 刪除數(shù)據(jù)有什么差別 delete: DML一條一條刪除表中的數(shù)據(jù),適合數(shù)據(jù)少,高效 truncate:DDL 先刪除表再重建表,適合數(shù)據(jù)比較多 --查看表中的數(shù)據(jù) select * from allidea; --3.更新表記錄 update 表名 set 列名1=列的值1,列名2=列的值2 where 條件; update student set sname="李四" where sid=5;4.查詢記錄
select:選擇顯示哪些列的內(nèi)容
--商品分類(欄目) 1.分類的id 2.分類名稱 3.分類描述 create table category( ???? cid int primary key auto_increment, ???? cname varchar(12), ???? cdesc varchar(31) ); insert into category values(null,"手機數(shù)碼","中國制造"); insert into category values(null,"皮鞋箱包","意大利"); insert into category values(null,"服裝內(nèi)衣","中國制造"); insert into category values(null,"煙酒食品","中國制造"); --所有商品(貨品) 1.商品ID 2.商品名稱 3.商品價格 4.生產(chǎn)日期 5.商品分類ID --商品和商品分類:所屬關(guān)系 create table product( pid int primary key auto_increment, pname varchar(10), price double, pdate timestamp, cno int ); insert into product values(null,"小米手機",998,null,1); insert into product values(null,"華為手機",2888,null,1); insert into product values(null,"貴人鳥",399,null,2); insert into product values(null,"杰克瓊斯",500,null,3); insert into product values(null,"海瀾之家",500,null,3); insert into product values(null,"茅臺酒",388,null,4); insert into product values(null,"西鳳酒",128,null,4); insert into product values(null,"餅干",5,null,4); --查詢所有的商品 select * from product; --查詢商品名稱和商品價格 select pname,price from product; --別名查詢. as的關(guān)鍵字,as 關(guān)鍵字是可以省略 --表別名(主要是用在多表查詢); select p.pname,p.price from product as p; --列別名; select pname 名稱,price 價格 from product; --去掉重復(fù)的值 distinct select distinct price from product; --select運算查詢(僅僅在查詢結(jié)果上做了運算) select *,price*0.5 折后價格 from product; --where關(guān)鍵字 --關(guān)系運算符:> >= < <= != <>(標(biāo)準sql語法) --判斷某一列是否為空: is null,is not null --邏輯運算: and , or , not --between ... and ...在某一區(qū)間 --like:模糊查詢 _ :代表的是一個字符 % :代表的是多個字符 --in 在某個范圍中獲得值 --查詢商品價格>60的所有商品信息 select * from product where price > 60; --查詢商品價格在10到100之間 select * from product where price > 10 and price < 100; between...add... select * from product where price between 10 and 100; --查詢商品價格小于 100 或者商品價格大于 999 select * from product where price < 100 or price > 999; --查詢出名字中帶有 米 的商品 select * from product where pname like "%米%"; --查詢第二個名字是熊的所有商品 select * from product where pname like "_便%"; --查詢商品分類ID在1,4,5里面所有的商品 select * from product where cno in (1,4); --排序查詢: order by 關(guān)鍵字 asc : ascend 升序(默認的排序方式) desc : descend 降序 --1.查詢所有商品,按照價格進行排序 select * from product order by price; --2.查詢所有商品,按照價格進行降序 select * from product order by price desc; --3.查詢名稱有 小 的商品,按照價格降序排序 select * from product where pname like "%面%" order by price desc; --聚合函數(shù): select 函數(shù)(列名) from 表名; sum() : 求和 avg() : 求平均值 count() : 統(tǒng)計數(shù)量 max() : 最大值 min() : 最小值 --1.獲得所有商品價格的總和 select sum(price) from product; --2.獲得所有商品的個數(shù) select count(*) from product; --注意:where條件后面不能接聚合函數(shù) --查出商品價格 大于 平均價格 的所有商品 select * from product where price > (select avg(price) from product); --分組: group by --having 分組之后條件過濾關(guān)鍵字,可以接聚合函數(shù),出現(xiàn)在分組之后 --1.根據(jù)cno字段分組,分組后統(tǒng)計商品的個數(shù) select cno,count(*) from product group by cno; --2.根據(jù)con分組,分組統(tǒng)計每組商品的平均價格,并且商品平均價格 > 60 select cno,avg(price) from product group by cno having avg(price) > 60; --編寫順序 select .. from .. where .. group by .. having .. order by --執(zhí)行順序 from .. where .. group by .. having .. select .. order by
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/71741.html
摘要:下一代服務(wù)端開發(fā)下一代服務(wù)端開發(fā)第部門快速開始第章快速開始環(huán)境準備,,快速上手實現(xiàn)一個第章企業(yè)級服務(wù)開發(fā)從到語言的缺點發(fā)展歷程的缺點為什么是產(chǎn)生的背景解決了哪些問題為什么是的發(fā)展歷程容器的配置地獄是什么從到下一代企業(yè)級服務(wù)開發(fā)在移動開發(fā)領(lǐng)域 《 Kotlin + Spring Boot : 下一代 Java 服務(wù)端開發(fā) 》 Kotlin + Spring Boot : 下一代 Java...
閱讀 854·2023-04-26 00:11
閱讀 2655·2021-11-04 16:13
閱讀 2101·2021-09-09 09:33
閱讀 1472·2021-08-20 09:35
閱讀 3817·2021-08-09 13:42
閱讀 3604·2019-08-30 15:55
閱讀 1040·2019-08-30 15:55
閱讀 2218·2019-08-30 13:55