日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【一周入门MySQL—1】数据库概述、数据定义、数据操作

發布時間:2025/3/20 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【一周入门MySQL—1】数据库概述、数据定义、数据操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據庫概述、數據定義、數據操作

一、數據庫概述

數據庫基礎概念:按照一定的數據結構來組織、存儲和管理數據的倉庫。

企業數據存儲面臨的問題:

  • 存儲大量數據;
  • 大量數據的檢索和訪問;
  • 保證數據信息的一致性和完整性;
  • 數據共享和安全;

數據庫分類:

  • 關系型數據庫(RDBMS):結構化的數據集;
  • 非關系型數據庫(NOSQL):非結構化的數據集;

表結構數據:

由固定列和任意行構成的表結構的數據集;

表中的列稱為字段,表中的行稱為記錄

以字段為基本的存儲單元和計量單位;

每一個字段必須有字段名,且同一個表中的字段名不能重復;

每個字段的數據類型必須一致;

除去Excel、WPS之外的其他分析工具,都是使用二維表結構的存儲格式。

表格與表的區別:(Excel中表格數據選擇套用表格格式轉成表數據)

  • 表格數據的最小單位是一個單元格,表數據的最小單位是一個字段;
  • 表格數據中可以沒有列名,表數據中每一個字段必須有字段名,且同一個表中的字段名不能重復;
  • 表格數據中每個單元格的數據類型可以不一致,表數據中每一列的數據類型必須一致;

在Excel中可以通過“套用表格格式”將表格轉換為表。

主流的關系型數據庫:(表結構數據形式,都是使用SQL語法)

  • Oracle:運行穩定,可移植性高,功能齊全,性能超群,適用于大型企業;
  • DB2:速度快,可靠性好,適用于海量數據,恢復性極強,適用于大中型企業;
  • MySQL:開源,體積小,速度快,適用于中小型企業;
  • SQL Server:全面高效,界面友好易操作,但不是跨平臺(Windows系統),適用于中小型企業;

現狀:

多臺MySQL服務器建立集群 – 性價比更高;

阿里 - 去IOE(IBM、Oracle、EMC)化口號 – 選擇MySQL替換Oracle,自研開發阿里Ocean Base;

國企、央企也開始使用自研數據庫,以及華為、騰訊、阿里等企業;

2009年MySQL所屬的Sun公司被Oracle收購,加強了企業級的特性;

MySQL 8.0支持開窗函數;

數據庫、數據庫管理系統和SQL之間的關系:

數據庫(DB)是長期存儲在計算機內,有組織的,統一管理的相關數據的集合;

數據庫管理系統(DBMS)是用于管理數據庫的軟件,它對數據庫進行統一的管理和控制,以保證數據庫的安全性和完整性;

SQl是一種結構化的查詢語言(Structure Query Language),它是國際標準化組織(ISO)采納的標準數據庫語言;

我們以數據庫管理系統為載體來學習SQL。

SQL就好比駕照,數據庫管理系統就是什么牌子的車子,有了駕照,什么牌子的車都可以開。

SQL語言的分類:

  • 數據定義語言DDL:用于創建、修改、刪除數據庫中的各種對象,比如數據庫、表、視圖、索引等,常用的命令有Create、Alter、Drop等;
  • 數據操作語言DML:用于操作數據庫表中的記錄,常用的命令有Insert、Update、Delete等;
  • 數據查詢語言DQL:用戶查詢數據庫表中的記錄,基本結構是SELECT <字段名> FROM <表或者視圖> WHERE <查詢條件>;
  • 數據控制語言DCL:用于定于數據庫訪問權限和安全級別,常用命令有Grant、Revoke等;

SQL書寫要求:

  • SQL語言可以單行或者多行書寫,用分號結尾;
  • SQL關鍵字用空格分隔,也可以用縮進來增強語句的可讀性;
  • SQL對大小寫不敏感;
  • 用#或者—單行注釋,用/* */多行注釋,注釋的語句不可以執行;

安裝MySQL Workbench進行數據庫連接

使用MySQL Workbench客戶端操作MySQL數據庫,它是官方提供的免費工作臺

SQL語句執行方式:(如上圖所示)

  • 全部執行,或者選中行執行;
  • 光標所在行執行(Ctrl + Enter);

進入MySQL Workbench前需理解的基本概念:

數據庫:組織、存儲和管理相關數據的集合,同一個數據庫管理系統中的數據庫名必須唯一;

表:由固定的列數和任意的行數構成的二維表結構的數據集,同一個數據庫中表名必須唯一;

字段:一列即為一個字段,同一個表中的字段名必須唯一;

記錄:一行即為一條記錄;

以字段為基本存儲和計算單位,每個字段的數據類型必須一致。

MySQL常用數據類型:

  • int:大整數型;
  • float:單精度浮點型,默認float(10,2),表示最多10個數字,其中2位小數;
  • decimal:十進制小數型;
  • char:固定長度字符串型,1-255;
  • varchar:可變長度字符串型,1-255;
  • text:長文本字符串型,最大65535,不能指定長度;
  • data:日期型,yyyy-MM-dd;
  • time:時間型,hh:mm:ss;
  • datetime:日期時間型,yyyy-MM-dd hh:mm:ss;
  • Timestamp:時間戳;

二、數據定義

以下操作需在MySQL Workbench客戶端執行操作

-- 查看系統中有哪些數據庫show databases;-- 創建test數據庫(不能使用關鍵字作為數據庫名)create database test;-- 選擇進入數據庫use test;-- 刪除數據庫test(慎用)drop database test;-- 創建數據表(建表之前先選擇進入數據庫)use test;create table department(deptno int,dname varchar(10),num int);-- 查看當前數據庫中有哪些數據庫表show tables;-- 查看表結構desc department;describe department;-- 刪除數據庫表(刪除表結構和表數據 慎用)drop table department;

約束條件:

約束條件是在表上強制執行的數據檢驗規則;

用來保證創建的表的數據的完整性和準確性

主要在兩方面對數據進行約束:空值和重復值

約束條件

備注

說明

PRIMARY KEY

主鍵約束

非空不重復

NOT NULL

非空約束

不能為空

UNIQUE

唯一約束

不能重復

AUTO_INCREMENT

自增字段

自動增長

DEFAULT

默認約束

默認值

FOREIGN KEY

外鍵約束

與主鍵相對應

主鍵約束(primary key)

每個表中只能有一個主鍵;

主鍵值須非空不重復

可設置單字段主鍵,也可以設置多字段聯合主鍵;

聯合主鍵中多個字段的取值完全相同時,才違反主鍵約束;

添加主鍵約束:

列級添加主鍵約束:create table <表名>(<字段名稱1><字段類型1>primary key, ……<字段名稱n><字段類型n>);

表級添加主鍵約束:create table <表名>(<字段名稱1><字段類型1>, ……<字段名稱n><字段類型n>,primary key(<字段名稱1>));

聯合主鍵必須使用第二種方法。

比如員工表中的工號就可以設置為主鍵。

唯一約束(unique)

指定字段的取值不能重復,可以為空,但只能出現一個空值;

也可以在列級和表級添加唯一約束。

自動增長列(auto_increment)

指定字段的取值自動生成,默認從1開始,每增加一條記錄,該字段的取值會加1;

只適用于整數型,配合主鍵一起使用;

創建自動增長約束 : create table <表名>(<字段名稱1><字段類型1>primary key auto_increment, ……<字段名稱n><字段類型n>);

比如員工表中的工號就可以設置為主鍵,并設置為自動增長列,每次新添加一個員工就加1。

一個字段可以設置多個約束條件,用空格分隔,且沒有先后順序。

非空約束(not null)

字段的值不能為空;

創建非空約束 : create table <表名>(<字段名稱1><字段類型1>not null, ……<字段名稱n><字段類型n>);

默認約束(default)

如果新插入一條記錄時沒有為該字段賦值,系統會自動為這個字段賦值為默認約束設定的值;

創建默認約束 :create table <表名>(<字段名稱1><字段類型1> default value, ……<字段名稱n><字段類型n>);

外鍵約束(foreign key)

在一張表中執行數據插入、更新、刪除等操作的時候,DBMS都會跟另一張表進行對照,避免不規范的操作,以確保數據存儲的完整性。

某一表中的某字段的值依賴于另一張表中某字段的值;

主鍵所在的表為主表,外鍵所在的表為從表;

每一個外鍵值必須與另一個表中的主鍵值相對應;

創建外鍵約束 : create table <表名>(<字段名稱1><字段類型1>, ……<字段名稱n><字段類型n> foreign key(字段名) references <主表>(主鍵字段));

比如上圖中的部門表和員工表,因為有外鍵約束條件,所以需要先創建主表<部門表>,再創建從表<員工表>。

-- 創建帶有約束條件的表create table dept(deptno int primary key,dname varchar(10),loc varchar(15));create table employee(empid int primary key auto_increment,ename varchar(15) unique,job varchar(10) not null,mgr int,hiredate date,sal float default 0,comm float,deptno int,foreign key(deptno) references dept(deptno));

三、數據操作

修改數據表:修改數據庫中已經存在的數據表的結構

-- 修改表名alter table employee rename emp;show tables;-- 修改字段名alter table emp change empid empno int;desc emp;# 刪除原有主鍵alter table emp drop primary key;# 添加新的聯合主鍵alter table emp add primary key(ename,deptno);-- 修改字段類型alter table emp modify sal decimal default 0;desc emp;-- 添加字段(默認添加到最后一列,first第一列)alter table emp add city varchar(10);desc emp;-- 修改字段的排列位置alter table emp modify city varchar(10) after job;desc emp;alter table emp modify city varchar(10) first;desc emp;-- 刪除字段alter table emp drop city;desc emp;

插入數據

字段名稱和字段值的數據類型、個數、順序必須一一對應。

可以指定字段名插入,也可以不指定字段名插入(為表中每一個字段指定值,且值得順序必須和數據表中得順序一致)。

批量導入數據:路徑中不能有中文,并且要將“\”改為“\\”或者“/”

load data infile ‘文件路徑.csv’ into table tablename fields terminated by ',' ignore 1 lines;

MySQL 默認得數據格式是UTF-8 既支持中文也支持英文

指定外部路徑需要管理員進行相應的設置賦予權限(MySQL 8.0),這里為了簡便可以直接從以下路徑進行導入:

C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/loaddata.csv

-- 插入數據:指定字段名desc dept;insert into dept(deptno,dname,loc) value (10,'財務部','北京總部'),(20,'行政部','北京總部'),(30,'銷售部','上海分部');select * from dept;-- 插入數據:不指定字段名insert into dept value (40,'總裁辦','null'),(50,'采購部','null'),(60,'電商部','上海分部');select * from dept;-- 批量導入數據load data infile "C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/loaddata.csv"?into table deptfields terminated by ','# ignore 1 lines # 忽略第一條記錄;select * from dept;

更新數據

update 表名 set 字段名1 = 字段值1 [,字段名2 = 字段值2 ……] [where 更新條件];

刪除數據

delete from 表名 ?[where 刪除條件];

truncate 表名; 與delete from 表名是一樣的,都是刪除表中的全部數據,保留表的結構。

delete 和 truncate 的區別:

  • delete可以添加where子句刪除表中的部分數據,但是truncate只可以刪除表中的全部數據。
  • (執行原理)delete刪除表中的數據保留結構(掃描全部的數據,花費的時間更長),truncate直接把表刪除(drop table)然后再創建一張新表(create table),執行速度比delete更快。
-- 對表中已經存在的數據進行更新update dept set dname = '總裁辦公室' where deptno = 40;set sql_safe_updates=0;# 設置數據庫安全權限(放開,默認是等于1)update dept set deptno = deptno+1;# 沒有where條件的話就是全部更新,全部更新需要打開上面的權限select * from dept;-- 刪除表數據delete from dept where dname = 'IT部';delete from dept; # 刪除表中全部記錄select * from dept;-- 清空數據truncate dept;

【課后練習】

創建salgrade表并添加數據

通過create和insert命令的語法練習,理解數據庫的基本結構,熟悉掌握數據定義語言和數據操作語言的使用。

-- 作業:創建salgrade表并添加數據create table salgrade(grade int primary key,losal int,hisal int);desc salgrade;insert into salgrade value(1,700,1200),(2,1201,1400),(3,1401,2000),(4,2001,3000),(5,3001,9999);select * from? salgrade;?

總結

以上是生活随笔為你收集整理的【一周入门MySQL—1】数据库概述、数据定义、数据操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。