文章目錄
數據庫應用 概念 什么是數據庫
簡而言之,就是存儲數據,管理數據的倉庫。
常見的數據庫分為:
關系型和非關系型
早期發展的數據庫建立在數據的緊密關系基礎之上(如:父子關系、師生關系),我們稱其為關系型數據庫,也稱為傳統數據庫;現今數據庫建立在數據的松散關系基礎之上(如:中國人和美國人、中國人和印度人、視頻、音頻),我們稱其為非關系型數據庫nosql(not only sql)。業界總在爭論nosql能否干掉傳統數據庫,很多初學者也有這個困惑。以我來看,兩者沒有矛盾,它們各有特點,根據業務情況互補才是真諦。但總的來說原來關系型數據庫一統天下的格局早被打破,領土不斷被蠶食,規模一再的縮小sql數據庫入門到精通,雖然無法全面被替代,但卻早已風光不在,淪落到一偶之地,的衰落就是最好的證明,早期只要是全球大企業無一例外都是部署,但現在都在去化,阿里就已經全面排斥。
既然干不掉,很多傳統項目的還是圍繞關系型數據庫的居多,所以我們先來學習關系型數據庫,目前最流行的關系型數據庫是MySQL。
關系型數據庫
關系型數據庫有特定的組織方式,其以行和列的形式存儲數據,以便于用戶理解。關系型數據庫這一系列的行和列被稱為表,一組表組成了數據庫。用戶通過查詢來檢索數據庫中的數據,而查詢是一個用于限定數據庫中某些區域的執行代碼。關系模型可以簡單理解為二維表格模型,而一個關系型數據庫就是由二維表及其之間的關系組成的一個數據集合。
Mysql數據庫 mysql服務端,它來處理具體數據維護,保存磁盤mysql客戶端,CRUD新增,修改,刪除,查詢 MySQL數據存放在哪里?
在MySQL的配置文件my.ini中會進行默認配置
MySQL服務端
mysql-5.5.27-.msi
Mysql數據庫默認的編碼是等價于iso-8859-1,修改為utf-8
注意:配置完,mysql開始執行,最后一步出錯有時仍可以使用,使用工具測試,如不行,再執行安裝程序,選擇,刪除,然后重新安裝。同時注意必須是管理員權限。
MySQL客戶端1:DOS窗口
mysql -uroot -proot
語法:mysql.exe執行文件
代表參數
-u 用戶名,緊接著寫的
-p 密碼,緊接著寫的
MySQL客戶端2:可視化工具
數據庫的結構 數據庫結構
SQL語句 定義
結構化查詢語言( Query )簡稱SQL(發音:/?es kju? ?el/ "S-Q-L"),是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統;同時也是數據庫腳本文件的擴展名。
SQL 是1986年10 月由美國國家標準局(ANSI)通過的數據庫語言美國標準,接著,國際標準化組織(ISO)頒布了SQL正式國際標準。
分類
如:,,,(插入、刪除、修改、檢索)簡稱CRUD操新增、查詢、修改、刪除
如: table之類
如:grant、deny、等,只有管理員才有相應的權限
注意:SQL不區分大小寫
數據庫常用操作 建庫
create database cgb2022 DEFAULT CHARACTER SET utf8;
刪庫
drop database cgb2022;
查看所有數據庫
show databases;
表的常用操作
使用數據庫:use cgb2022;
表設計
門店表:** **
訂單詳情表:** **
創建表
create table tb_door(
id int primary key auto_increment,
door_name varchar(100),
tel varchar(50)
);
修改表
alter table tb_door add column money NUMERIC(7,2)
刪除表
drop table tb_door;
查看所有表
show tables;
查看表結構/設計表
desc tb_door;
表記錄的常用操作 插入記錄
insert into tb_door values(null,'永和大王1店',666);
insert into tb_door values(null,' 永和大王2店',888);
查詢記錄
SELECT * FROM tb_door;
修改記錄
update tb_door set tel=555 where id=1;
刪除記錄
Delete from tb_door where id=2;
排序
Select * from tb_door order by tel desc;
記錄總數
Select count(*) from tb_door;
數據類型 命名規則 字符
以utf8編碼計算的話,一個漢字在u8下占3個字節
注:不同數據庫版本長度限制可能會有不同
數字 日期 圖片 準備數據 部門表 dept 字段名稱數據類型是否為空備注
int
部門編號,PK主鍵
dname
(20)
Y
部門名稱
loc
(13)
Y
部門所在地點
CREATE TABLE dept(
deptno int primary key auto_increment ,
dname VARCHAR(20),
loc VARCHAR(13)
);
INSERT INTO dept VALUES(null,'accounting','一區');
INSERT INTO dept VALUES(null,'research','二區');
INSERT INTO dept VALUES(null,'operations','二區');
員工表 emp 字段名稱數據類型是否為空備注
empno
int
員工編號,PK主鍵
ename
(10)
Y
員工名稱
job
(10)
Y
職位
mgr
int
Y
上級編號
Y
入職時間
sal
Y
月工資
comm
(8,2)
Y
獎金
int
Y
所屬部門 FK外鍵
Mysql:
CREATE TABLE emp(
empno int primary key auto_increment,
ename VARCHAR(10),
job VARCHAR(10),
mgr int,
hiredate DATE,
sal double,
comm NUMERIC(7,2),
deptno int
);
INSERT INTO emp VALUES(100,'jack','副總',NULL,'2002-05-1',90000,NULL,1);
INSERT INTO emp VALUES(200,'tony','總監',100,'2015-02-02',10000,2000,2);
INSERT INTO emp VALUES(300,'hana','經理',200,'2017-02-02',8000,1000,2);
INSERT INTO emp VALUES(400,'leo','員工',300,'2019-02-22',3000,200.12,2);
INSERT INTO emp VALUES(500,'liu','員工',300,'2019-03-19',3500,200.58,2);
字段約束 主鍵約束
主鍵約束:如果為一個列添加了主鍵約束,那么這個列就是主鍵,主鍵的特點是唯一且不能為空。通常情況下,每張表都會有主鍵。
添加主鍵約束,例如將id設置為主鍵:
主鍵自增策略** **當主鍵為數值類型時,為了方便維護,可以設置主鍵自增策略(),設置了主鍵自增策略后,數據庫會在表中保存一個變量值,初始值為1,當需要id值,不需要我們指定值,由數據庫負責從獲取一個id值,作為主鍵值插入到表中。而且每次用完值,都會自增1. =1
create table abc(
id int primary key auto_increment
);
insert into abc values(null);
insert into abc values(null);
insert into abc values(null);
select * from abc;
非空約束
非空約束:如果為一個列添加了非空約束,那么這個列的值就不能為空sql數據庫入門到精通,但可以重復。
添加非空約束,例如為添加非空約束:
create table user(
id int primary key auto_increment,
password varchar(50) not null
);
show tables;
insert into user values(null,null);//不符合非空約束
insert into user values(null,123;);//OK
唯一約束
唯一約束:如果為一個列添加了唯一約束,那么這個列的值就必須是唯一的(即不能重復),但可以為空。
添加唯一約束,例如為添加唯一約束及非空約束:
create table test(
id int primary key auto_increment,
username varchar(50) unique--唯一約束
);
show tables;
insert into test values(null,'lisi');
insert into test values(null,'lisi');--username的值要唯一,重復會報錯的
select * from test;