MySQL數據庫表的基礎操做(增刪改查)---講解一

前言:初始mysql,mysql應該是全部程序員都會接觸的一門語言,它的重要性相信你們都知道,它是底層的底層,是後端的支柱,是程序中不可或缺的語言,倘若你尚未下載安裝mysql,please點擊---MaraiDB下載安裝--mysqlmysql


1.數據庫概述

1.1 什麼是數據庫

數據庫:存儲和管理數據的倉庫
數據庫是一個專業的存儲和管理數據的軟件系統,比傳統的人工或文件保存數據小路更高、更安全、更可靠。程序員

數據庫有哪些分類(瞭解)
早期:層次是數據庫、網絡型數據庫
如今:關係型數據庫和非關係型數據庫sql

1.2什麼是關係型數據庫?

關係型數據庫就是底層以二維表的形式保存數據的庫就是關係型數據庫
保存學生信息(student表)mongodb

編號 姓名 成績
1 王二妮 88
2 李鐵柱 74
3 陳翠花 97

常見的關係型數據庫有哪些?(瞭解)數據庫

  • SqlServer: 微軟提供、適用於中型、大型的項目中,收費,在Java中的使用佔比不高(不超過10%) .NET
  • Oracle: 甲骨文公司提供、適用於大型、超大型的項目中,收費,在Java中使用佔比很是高- 50%) 性能優異,功能強大。
  • Mysql:瑞典MYSQLAB公司提供,免費、開源,小巧輕量,在Java中佔比約爲20% 被甲骨文公司收購了。Mariadb
  • DB2: IBM公司提供, 適用於中型、大型的項目中,收費,銀行,金融,電信等行業中使用較多。
  • SQLite:迷你數據庫,適用於嵌入式設備中(智能家居),pad,手機

什麼是非關係型數據庫?(瞭解)後端

  • 非關係型數據庫底層是 鍵-值、列存儲結構存儲數據。 Redis、mongodb

1.3什麼是SQL語言

SQL:結構化查詢語言
是一門用於關係型數據庫的通用的語言安全

  • 數據庫:查詢、建立、刪除、進入、修改數據庫
  • 表:建立表、刪除表、修改表、查詢表
  • 表記錄:新增、刪除、修改、查詢表記錄
  • 視圖、索引、存儲過程等均可以操做

下載安裝MySQL
連接:https://pan.baidu.com/s/1QacdiQT_jB_POaA7V08_dw服務器

2鏈接MySQL服務器

經過命令行工具能夠登陸MySQL客戶端,鏈接MySQL服務器,從而訪問服務器中的數據。網絡

1.鏈接mysql服務器
mysql -uroot -proot
-u:後面的root是用戶名,這裏使用的是超級管理員root;
-p:(小寫的p)後面的root是密碼,這是在安裝MySQL時就已經指定的密碼;函數

C:\WINDOWS\System32>mysql -uroot -proot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 25
Server version: 10.3.7-MariaDB mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

2.鏈接mysql服務器並指定IP和端口
mysql -uroot -proot -h127.0.0.1 -P3306
-h:後面給出的127.0.0.1是服務器主機名或ip地址,能夠省略的,默認鏈接本機;
-P:(大寫的P)後面的3306是鏈接端口,能夠省略,默認鏈接3306端口;

3.退出客戶端命令:quit 或 exit 或 \q

4.註釋
可使用#、/* */、--等符號添加註釋

5.FAQ:常見問題:

解決方法:複製mysql安裝目錄下的bin目錄,將bin目錄的路徑添加到path環境變量中

3數據庫及表操做

3.1建立、刪除、查看數據庫

提示: (1)SQL 語句對大小寫不敏感。推薦關鍵字使用大寫,自定義的名稱(庫名,表名,列名等)使用小寫。
(2)而且在自定義名稱時,針對多個單詞不要使用駝峯命名,而是使用下劃線鏈接。(例如:tab_name,而不是 tabName)

-- 01.查看mysql服務器中全部數據庫
show databases;

-- 02.進入某一數據庫(進入數據庫後,才能操做庫中的表和表記錄)
-- 語法:USE 庫名;
use test;

-- 查看已進入的庫
SELECT DATABASE();

-- 03.查看當前數據庫中的全部表
show tables;

-- 04.刪除mydb1庫
-- 語法:DROP DATABASE 庫名;
drop database mydb1;

-- 思考:當刪除的庫不存在時,如何避免錯誤產生?
drop database if exists mydb1;

-- 05.從新建立mydb1庫,指定編碼爲utf8
-- 語法:CREATE DATABASE 庫名 CHARSET 編碼;
create database mydb1 charset utf8;

-- 若是不存在則建立mydb1;
create database if not exists mydb1 charset utf8;

-- 06.查看建庫時的語句(並驗證數據庫庫使用的編碼)
-- 語法:SHOW CREATE DATABASE 庫名;
show create database mydb1;

3.2建立、刪除、查看錶

編號 姓名 性別 生日 分數
--07.進入mydb1庫,刪除stu學生表(若是本來存在)
 --語法:DROP TABLE 表名
use mydb1;
drop table if exists stu;
-- 08.建立stu學生表(編號[數值類型]、姓名、性別、出生年月、考試成績[浮點型]),建表的語法:
--CREATE TABLE 表名(
  --  列名 數據類型,
  --  列名 數據類型,
  --  ...
--);

use mydb1;
drop table if exists stu;
create table stu(
    id int primary key auto_increment,  -- 設置id爲主鍵
    name varchar(50),
    gender varchar(10),
    birthday date,
    score double
);
-- 09.查看stu學生表結構
-- 語法:desc 表名
desc stu;

4 新增、更新、刪除表記錄

-- 10.往學生表(stu)中插入記錄(數據)
-- 語法:INSERT INTO 表名(列名1,列名2,列名3...) VALUES(值1,值2,值3...);
insert into stu(id,name,gender,birthday,score) value ( null,'王二妮','女','2001-3-4',89);
insert into stu values(null,'李鐵柱','男','1998-1-1', 84);
insert into stu values(null,'陳翠花','女','2000-2-5', 90);
insert into stu(name,gender) values('張三','男');

提示:

  • (1)當爲全部列插入值時,能夠省寫列名,但值的個數和順序必須和聲明時列的個數和順序保持一致!
  • (2)SQL語句中的值爲字符串或日期時,值的兩邊要加上單引號(有的版本的數據庫雙引號也能夠,但推薦使用單引號)。
  • (3)在(cmd中)插入數據以前,先設置編碼設置編碼:set names gbk;

或者用一下命令鏈接mysql服務器:
mysql --default-character-set=gbk -uroot -proot

-- 11.查詢stu表全部學生的信息
-- 語法:SELECT 列名 | * FROM 表名
select * from stu;

-- 12.修改stu表中全部學生的成績,加10分特長分
-- 修改語法: UPDATE 表名 SET 列=值,列=值,列=值...[WHERE子句];
update stu set score=score+10;
update stu set score+=10; -- 語法錯誤,mysql不支持+=

-- 13.修改stu表中編號爲1的學生成績,將成績改成83分。
update stu set score=83 where id=1;

提示:where子句用於對記錄進行篩選過濾,保留符合條件的記錄,將不符合條件的記錄剔除。

-- 14.刪除stu表中全部的記錄
-- 刪除記錄語法: DELETE FROM 表名 [where條件]
delete from stu;
truncate table stu;

-- 僅刪除符合條件的
delete from stu where id>3;

drop、delete、truncate三者的區別

  • (1)drop是用於刪除庫和表,delete和truncate是用於刪除表記錄
  • (2)delete是刪除表中的記錄,能夠刪除部分記錄,也能夠刪除全部記錄, 對錶自己沒有影響
  • (3)truncate是隻能刪除表中的全部記錄, 不能刪除部分記錄, 而且truncate刪除是將表摧毀再重建, 對錶有影響(好比,會將自增變量的值重置爲1)

5查詢表記錄

準備數據:將下面的數據粘貼在msql中

-- 建立db10庫、emp表並插入記錄
-- -----------------------------------
-- 刪除db10庫(若是存在)
drop database if exists db10;
-- 從新建立db10庫
create database db10 charset utf8;
-- 選擇db10庫
use db10;

-- 刪除員工表(若是存在)
drop table if exists emp;
-- 建立員工表
create table emp(
	id int primary key auto_increment,	-- 員工編號
	name varchar(50),					-- 員工姓名
	gender char(1),						-- 員工性別
	birthday date,						-- 員工生日
	dept varchar(50),					-- 所屬部門
	job varchar(50),					-- 所任職位
	sal double,							-- 薪資
	bonus double						-- 獎金
);

-- 往員工表中插入記錄
insert into emp values(null,'王富國','男','1995-10-25','市場部','部門總監','8400','1200');
insert into emp values(null,'齊雷鋒','男','1994-11-6','市場部','市場調查員','5600','800');
insert into emp values(null,'劉治雪','女','1996-09-14','市場部','營銷講師','3000','1300');
insert into emp values(null,'陳子封','男','1991-05-18','技術部','部門總監','4200','500');
insert into emp values(null,'劉海濤','男','1993-11-18','技術部','研發員','6600','500');
insert into emp values(null,'王明悅','女','1998-07-18','技術部','測試師','5400','600');
insert into emp values(null,'蒼若智','男','1995-08-18','人事部','部門總監','4850','800');
insert into emp values(null,'範中閒','男','1999-09-18','人事部','人力資源師','3600','600');
insert into emp values(null,'劉克','男','1990-10-18','人事部','助理','3200','400');
insert into emp values(null,'韓約','男','1980-12-18',null,'CEO','11000',null);

5.1 基礎查詢

SELECT 語句用於從表中選取數據。結果被存儲在一個結果表中(成爲結果集)。

提示:

  • (1) * (星號)爲通配符,表示查詢全部列。
  • (2) 但使用 * (星號)有時會把沒必要要的列也查詢出來,而且效率不如直接指定列名
-- 15.查詢emp表中的全部員工,顯示姓名,薪資,獎金
select name, sal, bonus from emp;

-- 16.查詢emp表中的全部部門和職位
select dept, job from emp;

--思考:若是查詢的結果中,存在大量重複的記錄,如何剔除重複記錄,只保留一條? */
-- 在select以後、列名以前,使用DISTINCT 剔除重複的記錄
select distinct dept, job from emp;

5.2 WHERE子句查詢

WHERE子句查詢語法:SELECT 列名稱 FROM 表名稱 WHERE 列 運算符 值

下面的運算符可在 WHERE 子句中使用:
在這裏插入圖片描述

-- 17.查詢emp表中薪資大於3000的全部員工,顯示員工姓名、薪資
select name, sal from emp
where sal>3000;

-- 18.查詢emp表中總薪資(薪資+獎金)大於3500的全部員工,顯示員工姓名、總薪資
select name, sal+bonus from emp
where sal+bonus > 6500; -- 結果不許確。

-- ifnull(列, 值)函數: 判斷指定的列是否包含null值,若是有null值,用第二個值替換null值
select name, sal+ifnull(bonus, 0) from emp
where sal+ifnull(bonus, 0) > 6500;

-- 注意查看上面查詢結果中的表頭,如何將表頭中的 sal+bonus 修改成 "總薪資"
select name as 姓名, sal+ifnull(bonus, 0) as 總薪資 from emp
where sal+ifnull(bonus, 0) > 6500;
-- as用於指定別名, as能夠省略。
-- where子句中不能使用列別名

-- 19.查詢emp表中薪資在3000和4500之間的員工,顯示員工姓名和薪資
select name, sal from emp
where sal>=3000 and sal<=4500;
-- 提示: between...and... 在..和..之間
select name, sal from emp
where sal between 3000 and 4500; -- 默認包含頭和尾

-- 20.查詢emp表中薪資爲 5600、3000、4200的員工,顯示員工姓名和薪資
select name, sal from emp
where sal=5600 or sal=3000 or sal=4200;
-- 或
select name, sal from emp
where sal in(5600,3000,4200);

-- 21.查詢薪資不爲5600、3000、4200的員工
select name, sal from emp
where sal!=5600 and sal!=3000 and sal!=4200;
-- 或
select name, sal from emp
where not(sal=5600 or sal=3000 or sal=4200);
-- 或
select name, sal from emp
where sal not in(5600,3000,4200);
-- 22.查詢emp表中薪資大於8000和薪資小於4000的員工,顯示員工姓名、薪資。(本身完成)
select name,sal from emp
where sal>=8000 or sal<=4000;

-- 23.查詢emp表中薪資大於3000而且獎金小於600的員工,顯示員工姓名、薪資、獎金。(本身完成)
select name,sal,bonus from emp
 where sal>6000 and bonus<1000;
-- 處理null值
select name,sal,bonus from emp
where sal>6000 and ifnull(bonus,0)<1000;

-- 24.查詢沒有部門的員工(即部門列爲null值)
select * from emp
where dept is null;

-- 思考:如何查詢有部門的員工(即部門列不爲null值)
select * from emp
where dept is not null; --正確

select * from emp
where dept not is null; -- 錯誤!

woo !!! you look

講解二,你值得擁有——————MySQL數據庫表的模糊/多行/分組/排序/分頁查詢以及字mysql數據類型的講解---講解二


try your best you can do it! 不要去懷疑本身有多大的能力,只要你敢,那就比猶豫不決的成功了一半,更況且,難道你不相信你本身?you can do it!

相關文章
相關標籤/搜索