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

歡迎訪問 生活随笔!

生活随笔

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

数据库

2018-4-25mysql数据库基础

發布時間:2023/12/20 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2018-4-25mysql数据库基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2018-4-25mysql數據庫基礎

新建?模板?小書匠?

1. 數據庫分類

RDBMS:關系數據庫管理系統
非結構化和半結構化的數據:NoSQL(Not only SQL)

2. mysql簡介

1.MYSQL數據庫由服務器端和客戶端(C/S)組成。服務器中主要存儲數據文件和服務程序。

2.要訪問數據庫服務器,必須通過客戶端。
SQL:結構化的查詢語言,以mysql數據庫作為載體。

3.客戶端可以分為兩大類:命令行(自帶),可視化工具。
Mysql的核心是存儲引擎,常用的有InnoDB(事務性數據庫的首選引擎,支持事務安全表(ACID)),MyISAM(數據倉庫,檢索速度快)

4.通過命令行客戶端訪問數據庫服務器:
1) 配置環境變量path
path = %path%;+路徑
2) 打開命令行窗口
開始—輸入”cmd”—回車
3) 啟動mysql客戶端程序(mysql.exe),指定帳號和密碼,連接服務器
mysql -u root –p —回車—輸入密碼1234—回車
mysql -h +服務器地址— -u root –p
4) 查看當前有哪些數據庫:
mysql> show databases;
5) 使用某個數據庫之前,要先選擇它:
mysql> use world;
6) 看看當前這個數據庫中,有哪些數據表:
mysql> show tables;
7) 退出服務器:mysql>exit

3.常用命令

創建數據庫:mysql>create database+數據庫名;
刪除指定的數據庫:mysql>drop database+數據庫名;
打開要操作的數據庫:mysql>use+數據庫名;
查看有哪些數據表:mysql>show tables;
創建數據表(部門表:depid,depname): mysql>creat table department(depid int,depname varchar(100));
查看數據表的結構:mysql>desc department;
主鍵約束:行完整性—要求每行記錄不能重復,
主鍵能夠唯一的標識表中的一條記錄。
創建數據表,首先設計表的結構(有哪些字段/列):
員工信息表

create table employee( empid int primary key auto_increment,#auto_increment只有在MYSQL中有,其他數據庫中是沒有的 empname varchar(50) not null,#空間長度可變,你需要多少就給你多少 gender char(1) default ‘m’, salary float(9,2), dept varchar(20), depid int, constraint fk_depid foreign key(depid) references department(depid) );

部門信息表

create table department( depid int primary key, depname varchar(50) not null, location varchar(100) );

一次性導入多條記錄,只需要在values后面跟多個括號,括號之間用逗號連接,最后一個跟分號。括號內依次輸入字段對應的值。

修改表結構:

alter table

將數據表的名稱department改為depart:

alter table department rename depart;

為department增加一個新的字段location varchar(200):

alter table department add location varchar(200);

修改已有字段的數據類型:

alter table department modify location varchar(100);

修改已有字段的名稱和數據類型:

alter table department change location address varchar(100);

在數據庫中已經存在的數據表的結構上增加表字段:

alter table +表名 add +字段及字段的各種屬性

在數據庫中已經存在的數據表的結構上刪除表字段:

alter table +表名 drop +字段

刪除表的外鍵約束:

alter table+表名 drop foreign key +外鍵字段

刪除/添加表的主鍵約束:

alter table+表名 drop(add) primary key(字段名)

刪除數據表

就是將數據庫中已經存在的表從數據中刪除,在刪除表的同時,表的定義和表中所有的數據均會被刪除,刪除被其他表關聯的主表,分幾種情況:

先刪除與它關聯的子表,再刪除父表

如果要保留子表, 則只需將關聯的表的外鍵約束條件取消,然后就可以刪除父表

為id=2002的員工分配部門:

update employee set deptid=103 where empid=2002;

將員工2006調動到市場營銷部,并且月薪上漲10%:

update employee set deptid=103 ,salary=salary*1.1 where empid=2006;

將所有月薪低于10000的員工薪資上漲10%:

update employee set salary=salary*1.1 where salary<10000;

刪除記錄:

delete from department where deptid=101;

查看數據表中已有的數據:

select * from+表的名稱;

查看基本表結構:

desc+表名

刪除表內的所有的數據:

delete/truncate table +表名;

delete與truncate刪除數據的區別:

delete進行刪除時是逐列進行檢查,具有約束的列不能被直接刪除,具有數據的安全性及引用的完整性;

truncate是直接刪除整張表然后再進行表的重建;

單表查詢

查看表內滿足條件的信息:select * from+表名 where+條件(*表示所有的字段),若只查詢某些字段的滿足條件的信息,則用:select +字段名 from + 表名 where +條件(字段名之間用逗號連接)

帶in關鍵字的查詢:select * from +表名 where + 字段名 in ( , );(括號內為范圍,若要查詢不再范圍內的信息,則用not in,用于離散型數據或者字段)

帶between 關鍵字的查詢:select * from +表名 where + 字段名 between+最小值 and +最大值;(用于連續型數據,不包含范圍的邊界值)

帶like的字符匹配查詢(模糊查詢)(%匹配任意長度的字符,_表示精確的單個字符):select * from +表名 where + 字段名like+’%條件%’;(%標識有字段)
select * from +表名 where + 字段名like+’_條件’;(一個_標識一個字符)

在排查過程中,任何值與null進行運算,運算結果都是null.要對其進行比較時,要用is null或者is not null.

多條件查詢and: select * from +表名 where +條件 and 條件(!=表示不等于,and表示和,必須滿足所有條件);and的優先級要高于or.

or(表示或者,只要滿足一個條件即可):select * from +表名 where +條件 or 條件

distinct 去重:select distinct+字段名 from + 表名 where +條件(挑出滿足條件的值,無重復)

order by排序:select * from +表名 where +表名 order by+條件(默認是升序,要降序的話則在最后加上desc)
分組查詢
分組統計(group by對數據進行分組,通常和集合函數一起使用)
select count(*) from +表名 group by +字段名(count(*)是對整行進行統計總數)
select+字段名,count(*) from +表名 group by +字段名(分組統計,前后兩個字段名相同)

分組查詢

(group_countat()函數將每個分組中各個字段的值顯示出來)
select+字段名,count(*) as +種類 group_countat(字段名) as+名稱from +表名 group by +字段名
分組查詢、排序
select+字段名,count(*) as +種類 group_countat(字段名) as+名稱from +表名 group by +字段名+order by numbers.
篩選having與group by一起使用,分組查詢以后對數據進行篩選,having后加條件。
在查詢最后添加一個統計欄:with rollup

限制查詢:limit(只有MYSQL數據庫支持limit關鍵字),顯示前幾條記錄:limit+數字;
從第m條記錄開始,顯示n條記錄:limit (m-1),n;

case when語句:用于計算條件列表并返回多個可能結果的表達式之一。
聚合函數
avg()求平均,max()最大值,min()最小值,sum()求和count()計數
sum()在計算時遇到null會自動忽略。
加快查詢速度
使用索引,索引是加快查詢的重要工具
創建索引的方法:create index 索引名 on 表名(列名)
刪除指定索引的命令:drop index 索引名 on 表名(列名)

不適合使用索引的場合:
--索引是加快查詢的最重要的工具
--模糊查詢要求后方一致或者部分一致的場合
--對方使用了運算/函數的場合
--復合索引的第一列沒被包含在where條件語句中的場合。

多表連接查詢
內鏈接查詢(inner join):進行表間某些列數據的比較操作,并列出這些表中與連接條件相匹配的數據行,組合成新的紀錄。(select 字段名 from 表一,表二 where 條件——將表一和表二滿足條件的列連接起來,并顯示某些字段)

內鏈接查詢-自連接:如果在一個連接查詢中,涉及到的兩個表都是同一個表,這種查詢稱為自連接查詢,自連接是一種特殊的內連接,它是指相互連接的表在物理上為同一張表,但可以在邏輯上分為兩張表

外連接查詢:有時需要包含沒有關聯到的行數據,即返回的查詢結果集合中不僅包含符合連接條件的行,而且還包括左表、右表、或兩個連接表中的所有數據行。left join:左連接返回包括左表中的所有記錄和右表中連接字段相等的記錄。right join:右連接,返回包括左表中的所有記錄和右表中連接字段相等的記錄
注:使用左外連接:左側的連接表中所有的記錄都會顯示
也可使用右外連接:右側的連接表中所有的記錄都會顯示
復合條件連接查詢:復合條件連接查詢是在連接查詢的過程中,通過添加過濾條件,限
制查詢的結果,使查詢的結果更加準確

子查詢:子查詢指一個查詢語句嵌套在另一個查詢語句內部的查詢

帶any/some關鍵字的子查詢,這兩個關鍵字是同義詞,表示滿足其中任一條件,它們允許創建一個表達式對子查詢的返回值列表進行比較,只要滿足內層子查詢中的任何一個比較條件,就返回一個結果作為外層查詢的條件。any關鍵字接在一個比較操作符的后面,表示若與子查詢返回的任何值比較為TRUE,則返回TRUE。

帶all關鍵字的子查詢:帶all關鍵字與any和some不同,使用all時需要同時滿足所有的內層查詢的條件。all關鍵字接在一個比較操作符的后面,表示若與子查詢返回的任何值比較為TRUE,則返回TRUE。

帶exists關鍵字的子查詢:exists關鍵字后面的參數是任意的子查詢,系統對子查詢進行運算以判斷他是否返回行,如果至少返回一行,那么exists返回的結果是false,此時外層語句將不進行查詢。

帶in關鍵字的子查詢:in關鍵字進行子查詢時,內層查詢語句僅僅返回一個數據列,這個數據列里的值將提供給外層查詢語句進行比較操作。Select語句中可以使用not in關鍵字,其作用與in正好相反。

帶比較運算符的子查詢:子查詢時可以使用其他的比較運算符,如“<”、“<=”、“=”、“>=”、“!=”等。

合并查詢結果:利用union關鍵字,可以給出多條select語句,并將它們的結果組合成單個結果集。合并時,兩個表對應的列數和數據類型必須相同,各個select語句之間使用union或union all關鍵字分隔。Union不使用關鍵字all,執行的時候刪除重復記錄,所有返回的行都是唯一的;使用關鍵字all的作用是不刪除重復行也不對結果進行自動排序。基本語法格式如下:select column… from table1 union[all] select column…from table2

使用union all包含重復的行,在前面的例子中,分開查詢時,兩個返回結果中有相同的記錄,union從查詢結果集中自動去除了重復的行,如果要返回所有匹配的行,而不進行刪除,可以使用union all。

為表/字段取別名:當表/字段的名字很長或執行一些特殊查詢是,為了方便操作或者多次使用相同的表/字段時,可以為表/字段指定別名,用這個別名替代原來的表/字段名稱,為表/字段取別名的語法格式為:表名/字段名 【as】 表/字段別名。

轉載于:https://www.cnblogs.com/shgwater/p/8953519.html

總結

以上是生活随笔為你收集整理的2018-4-25mysql数据库基础的全部內容,希望文章能夠幫你解決所遇到的問題。

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