資料庫的簡介和MySQL增刪改查
1、資料庫的介紹
1.1、資料庫概述
資料庫的儲存方式
Java中建立物件,物件儲存在記憶體中,學習了IO流,可以把資料儲存到檔案中。
儲存位置 | 優點 | 缺點 |
---|---|---|
記憶體 | 速度快 | 不能永久儲存,資料是臨時狀態 |
檔案 | 資料可以永久儲存 | 運算元據不方便,查詢某個資料 |
資料庫 | 1)資料可以永久儲存 2)查詢速度快 3)對資料管理方便 | 佔用資源,需要購買 |
什麼是資料庫
1)DB:資料庫(Database)即儲存資料的倉庫,它儲存類一系列有組織的資料。
2)本質上是一個檔案系統,還是以檔案的方式儲存在伺服器上的
3)所有的關係型資料庫都可以使用SQL語句進行管理
4)DBMS (DataBase Management System)資料庫管理系統:是一種操作和管理資料庫的大型軟體,例如:資料庫的建立、維護等
5)關係型資料庫是目前最普遍的一種資料庫型別
1.2、資料庫對比
MySQL:開源免費的資料庫,小型的資料庫,已經被Oracle收購了。MYSQL也有收費版本。Sun公司收購了MySQL,然後Oracle又收購了Sun公司。
Oracle:收費的大型資料庫
DB2:IBM公司的資料庫產品,收費的,常應用在銀行系統中
SQL Server:MicroSoft公司收費的中型資料庫,C#、.Net等語言開發常使用
SQLite:嵌入式的小型資料庫,應用在移動終端
1.3、為什麼選擇MySQL
1)免費
2)功能強大
MySQL是一種開放原始碼的關係型資料庫管理系統,開發者為瑞典MySQL AB公司,在2008年被Sun公司收購,而2009年,Sun又被Oracle收購。目前MySQL被廣泛用在Interne上,無論大小企業目前都在很廣泛的使用MySQL。由於其體積小、速度快、成本低、尤其開源這一特點,使得很多的網際網路公司都選擇類MySQL作為資料庫。(Facebook,Twitter、YoutuBe、阿里系、去哪兒、攜程、騰訊等等)。
阿里系(螞蟻金服)主要使用兩種關係型資料庫:OceanBase和MySQL。
關係型資料庫:關係型資料庫的表採用二維表格來儲存資料,是一種按行與列排列的具有相關資訊的邏輯組,它類似於Excle工作表。一個資料庫可以包含任意多個資料表。表中的一行即為一條記錄。資料表中的每一列稱為一個欄位,表是由其包含的各種欄位定義的,每個欄位描述了它所含有的資料的意義,資料表的設計實際上就是對欄位的設計。建立資料表時,為每個欄位分配一個資料型別,定義它們的資料長度和其它屬性。行和列的交叉位置表示某個屬性值。
1.4、MySQL目錄結構
MySQL目錄結構 | 描述 |
---|---|
bin目錄 | 所有mysql的可執行檔案,如mysql.exe |
include目錄 | 本地系統檔案 |
lib | 所需要的第三方庫 |
share | 共享檔案目錄 |
1.5、資料庫管理系統
資料庫管理系統(DataBase Management System,簡稱:DBMS):指一種操作和管理資料庫的大型軟體,用於建立、使用和維護資料庫,對資料庫進行統一管理和控制,以保證資料庫的安全性和完整性。使用者通過資料庫管理系統訪問資料庫中表內的資料。
1.6、資料庫管理系統、資料庫和表的關係
資料庫管理系統(DBMS)可以管理多個資料庫,一般開發人員會針對每一個應用建立一個或多個資料庫。為儲存應用中實體(物件)的資料,一般會在資料庫建立多個表,以儲存程式中物件的資料。
1.7、結論
一個資料庫伺服器可以包含多個資料庫
一個資料庫可以包含多張表
每張表中都可以儲存多條記錄
2、SQL
2.1、什麼是SQL
Structured Query Language 結構化查詢語言,一個專門用來操作關係型資料庫的語言。
2.2、SQL作用
是一種所有關係型資料庫的查詢規範,不同的資料庫都支援
通用的資料庫操作語言,可以用在不同的資料庫中
不同的資料庫SQL語句有一些區別
SQL規範就是普通話,MYSQL特有(方言)、Oracle特有(方言)
2.3、 SQL語句的分類
Date Definition Lanuage(DDL 資料定義語言)如,建立資料庫,建立表
Data Manipulation Language(DML資料操作語言)如,對錶中記錄操作增刪改
Data Query Language(DQL資料查詢語言),如,對錶中的資料進行查詢操作
Data Control Language(DCL資料控制語言)如:對使用者許可權設定
2.4、 MySQL的語法
1)每條語句以分號結尾
2)SQL中不區分大小寫,關鍵字大寫和小寫一樣
3)註釋
註釋語句 | 說明 |
---|---|
- -空格 | 單行註釋 |
/**/ | 多行註釋 |
# | 這是mysql特有的註釋方式 |
2.5、DDL運算元據庫
2.5.1、建立資料庫
建立資料庫:CREATE DATABASE 資料庫名;
判斷資料庫是否已經存在,不存在則建立資料庫:CREATE DATABASE IF NOT EXISTS 資料庫名;
建立資料庫並指定字符集:CREATE DATABASE 資料庫名 CHARACTER SET 字符集;
-- 直接建立資料庫 db1
create database db1;
-- 判斷是否存在,如果不存在則建立資料庫db2
CREATE DATABASE IF NOT EXISTS DB2;
-- 建立資料庫並且指定字符集為utf8
CREATE DATABASE DB3 default character set utf8;
2.5.2、檢視資料庫
-- 檢視所有的資料庫
show databases;
-- 檢視某個資料庫的定義資訊
show create database db3;
show create database db2;
2.5.3、修改資料庫
修飾資料庫預設的字符集:
ALTER DATABASE 資料庫名 DEFAULT CHARACTER SET 字符集;
-- 修改資料庫預設的字符集
alter database DB3 default character set gbk;
2.5.4、刪除資料庫
語法:DROP DATABASE 資料庫名;
-- 刪除資料庫
drop database db3;
2.5.5 、使用資料庫
檢視正在使用的資料庫:SELECT DATABASE();
使用/切換資料庫:USE 資料庫名;
-- 檢視正在使用的資料庫
select database();
-- 改變要使用的資料庫
USE db1;
2.6、DDL操作表結構
前提先使用某個資料庫:use 資料庫名;
2.6.1、建立表
語法格式:
CREATE TABLE 表名(
欄位名1 欄位型別,
欄位名2 欄位型別
);
2.6.2、 MYSQL資料型別
分類 | 型別名稱 | 型別說明 |
---|---|---|
整數 | tinyInt | 微整型,很小的整數(佔8位) |
smallInt | 小整型(佔16位) | |
mediumint | 中整型(佔24位) | |
int(integer) | 整型(32位) | |
小數 | float | 單精度 |
double | 雙精度 | |
日期型別 | time | 表示時間型別 |
date | 表示日期型別 | |
datetime | 同時可以表示日期和時間型別 | |
字串 | char(m) | 固定長度的 |
varchar(m) | 可變長度的字串,使用幾個字元佔用幾個,m為0-65535之間的資料 | |
大二進位制 | blob | 允許長度0-65535 |
longblob | ||
大文字 | text | 允許長度0-65535 |
longtext | 最大可以儲存4G的內容 |
2.6.3、建立表
建立一個student表,包含id,name,birthday欄位
create table student(
id int,
name varchar(20),
birthday date
);
2.6.4、檢視錶
檢視某個資料庫中所有的表:show tables
檢視錶結構:DESC 表名;
檢視建立表的SQL語句:show create table 表名;
2.6.5、快速建立一個表結構相同的表(MYSQL特有)
create table 新表名 LIKE 舊錶名;
2.6.6、刪除表
直接刪除表:DROP TABLE 表名;
判斷表是否存在,如果存在則刪除表:DROP TABLE IF EXISTS 表名;
2.6.7、修改表結構
新增列:ALTER TABLE 表名 ADD 列名 型別;
修改列型別:ALTER TABLE 表名 MODIFY 列名 新的型別;
修改列名:ALTER TABLE 表名 CHANGE 舊列名 新列名 型別;
刪除列:ALTER TABLE 表名 DROP 列名;
修改表名:RENAME TABLE 表名 TO 新表名;
修改字符集:ALTER TABLE 表名 character set 字符集;
2.7、DML操作表中的資料
用於對錶中的記錄進行增刪改操作
2.7.1、插入記錄
插入全部欄位,所有的欄位都寫出來:
INSERT INTO 表名(欄位名1,欄位名2,…) VALUES(值1,值2,…)
值和欄位一一對應
不寫欄位名
INSERT INTO 表名 VALUES(值1,值2,…)
插入部分資料
INSERT INTO 表名(欄位1,欄位2) VALUES(值1,值2)
insert into students(id,stuName,birthday) values(1001,'zhangsan','2000-10-21');
insert into students values(1002,'lisi','2001-11-05');
insert into students(id,stuName) values(1001,'wangwu');
2.7.2 、更新表記錄
更新表中所有相關的資料
UPDATE 表名 SET 列名=更新值,列名=更新值
帶條件的修改
UPDATE 表名 SET 列名=更新值,列名=更新值 WHERE 欄位名=值;
update students set birthday='2019-01-01';
update students set birthday='2010-10-01' where id=1002;
2.7.3、刪除表記錄
不帶條件刪除資料:delete from 表名;
帶條件刪除資料:delete from 表名 where 欄位名=值;
重置表:truncate table 表名
truncate相當於刪除表的結構,在建立一張表,實際上就是表的重置
delete from students where id=1002;
delete from students;
truncate table students;
2.8、DQL查詢表中的資料
2.8.1、簡單查詢
查詢表中所有行和列的資料:
SELECT * FROM 表名;
查詢指定列:
SELECT 欄位名1,欄位名2,… FROM 表名;
給列指定別名:
SELECT 欄位名1 AS 別名,欄位名2 AS別名 FROM 表名;
select * from students;
select id ,stuName from students;
select id as '編號',stuName as '姓名' from students;
查詢指定列並且結果不出現重複資料
SELECT DISTINCT 欄位名 FROM 表名;
select distinct stuName,id from students;
列資料算術運算:
SELECT 列名1+固定值 FROM 表名;
某列資料和其它列資料參與運算:
SELECT 列名1+列名2 FROM 表名;
2.8.2、條件查詢
如果沒有查詢條件,則每次查詢所有的行,實際應用中,一般要指定查詢條件,對記錄進行過濾。
語法:SELECT * FROM 表名 WHERE 條件;
比較運算子:
比較運算子 | 說明 |
---|---|
>、<、<=、>=、=、<> | <>在SQL中表示不等於,在mysql中也可以使用!= 沒有== |
BETWEEN AND | 在一個範圍內,比如:between 1002 and 1005,包含頭和尾 |
IN(值1,值2,…) | 匹配值列表就是符合條件的 |
LIKE ‘規則’ | 模糊查詢,_ 代表一個字元,%代表任意字元 |
IS NULL | 查詢某一列為NULL的值 |
select * from students where id<>1001;
select * from students where id between 1001 and 1004;
select * from students where id in(1001,1002,1003);
select * from students where stuName like '_h%';
use db1;
update students set age=20;
select * from students where age is null;
邏輯運算子:
邏輯運算子 | 說明 |
---|---|
and 或 && | 與shu |
or 或 II | 或 |
not 或 ! | 非 |
select * from students where id=1001 and stuName='haha';
select * from students where id=1001 or stuName='haha';
select * from students where age is not null;
select * from students where id not in(1001,1002,1003);
select * from students where id not between 1003 and 1005;
select * from students where stuName not like 'z%';
相關文章
- MySQL資料庫 ---MySQL表的增刪改查(進階)MySql資料庫
- mybatis實現MySQL資料庫的增刪改查MyBatisMySql資料庫
- MySql 表資料的增、刪、改、查MySql
- mysql資料增刪改查操作MySql
- Golang原生sql操作Mysql資料庫增刪改查GolangMySql資料庫
- Oracle、mysql資料庫增、刪、改OracleMySql資料庫
- MySQL server的安裝以及增刪改查遠端資料庫MySqlServer資料庫
- 關於mongodb資料庫的增刪改查MongoDB資料庫
- mysql增刪改查MySql
- Flutter資料庫Sqflite之增刪改查Flutter資料庫
- Python操作SQLServer資料庫增刪改查PythonSQLServer資料庫
- mogoose 建立資料庫並增刪改查Go資料庫
- 自寫的使用PDO對mysql資料庫的增刪改查操作類MySql資料庫
- 03-mysql資料庫怎刪改查MySql資料庫
- mysql基本增刪改查MySql
- YII1 增、刪、改、查資料庫操作資料庫
- MySQL——表的約束,資料型別,增刪查改MySql資料型別
- 連線資料庫並實現增、刪、改、查資料庫
- JDBC連線資料庫實現增刪改查JDBC資料庫
- 利用Express+MySQL進行簡單的增刪改查ExpressMySql
- CoreData - 簡單 增刪改查
- JSP實現servlet對資料庫的增刪查改操作JSServlet資料庫
- Node+Express+MySql實現簡單增刪改查和登入ExpressMySql
- 使用Mongoose類庫實現簡單的增刪改查Go
- MySQL表的增刪查改(提高篇)MySql
- MySQL的基本語法(增,刪,改,查)MySql
- MySQL表的增刪改查(基礎)MySql
- 利用Java的API實現HBase資料庫的增刪查改JavaAPI資料庫
- 如何使用 Node.js 和 MySQL 快速搭建簡單的增刪查改 APINode.jsMySqlAPI
- mysql指令1:增刪改庫,資料型別,建立表MySql資料型別
- MySQL基礎操作(增刪改查)MySql
- Numpy array資料的增、刪、改、查例項
- ORM實操之資料的增刪改查ORM
- Go實現對MySQL的增刪改查GoMySql
- MySQL表的增刪改查(進階)下MySql
- Android 中關於增刪改查資料庫表實踐Android資料庫
- 資料的增刪改
- mysql中建庫、建表、增刪改查DDL語句MySql