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

歡迎訪問 生活随笔!

生活随笔

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

数据库

姓名大全 导入mysql_My SQL常用操作汇总详解

發布時間:2023/12/20 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 姓名大全 导入mysql_My SQL常用操作汇总详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫這篇隨筆的目的是我發現了在上一篇關于My?SQL的隨筆中存在一些不嚴謹的代碼問題,在這里再次簡單的總結一下并加以改進,以代碼為主。

#?!每行命令必須以分號(;)結尾

先通過命令行進入數據庫客戶端

mysql?-h服務端ip地址?-P(大寫)服務端使用的端口,一般為3306?-p(小寫)

回車之后輸入密碼,進入

顯示所有數據庫

show?databases;

創建數據庫并設置編碼

-?數據庫創建時可以設置字符集以及排序規則

-?字符集一般使用utf8的,排序規則一般使用忽略大小寫的,其實也不能說是忽略大小寫

-?它的原理是放進數據庫的都轉換成大寫,然后不管用戶輸入的大寫還是小寫都轉換成大寫再去數據庫里查

-?所以看起來就相當于是忽略了大小寫

-?如果不設置中文會亂碼

create?database?數據庫名字?character?set?utf8;

create?database?數據庫名字?charset=utf8;

修改數據庫編碼

alter?database?數據庫名字?character?set?utf8;

展示創建數據庫的過程

show?create?database?數據庫名字;

使用某個數據庫

use?數據庫名字;

判斷當前在哪個數據庫里

select?database();

查看該數據庫有哪些表

show?tables;

創建數據庫中的表

create?table?表的名字(

字段名字?類型(范圍)?[約束],

字段名字?類型(范圍)?[約束],

字段名字?類型(范圍)?[約束]);

查看某表的字段(屬性)

desc?表的名字;

show?create?table?表的名字;

往表中添加字段

alter?table?表的名字?add?字段名字?類型(范圍)?[約束];

修改表字段類型

alter?table?表名字?modify?字段名字?新類型(范圍)?[約束];

修改表字段的名字和類型

alter?table?表名字?change?舊的字段名字?新的字段名字?新類型(范圍)?[約束];

給表中的字段添加約束

主鍵,外鍵,檢查,唯一四個約束要用add?constraint,其他的約束可以用modify

alter?table?表的名字?add?constraint?起個名字(隨意)?約束(字段名字);

往表中添加數據

insert?into?表的名字(字段名字)?values(要添加的數據);

查詢表中的數據

select?*?from?表的名字;

根據范圍查詢表里的數據

select?*?from?table?limit?m,n;

-?顯示范圍是:[m+1行,m+n行],包括m+1和m+n行

根據字段查詢表里的數據

select?字段名字1,字段名字2?from?表的名字;

給從表里查詢出來的數據的字段取別名

select?字段名字1?as?要取的別名,字段名字2?as?要取的別名?from?表的名字;

根據字段查詢表里的數據(去重)

select?distinct?字段名字?from?表的名字;

根據條件查詢表里的數據(條件可使用not,!=,or,in(值1,值2...),and,between..and..)

select?*?from?表的名字?where?條件;

模糊查詢表里的數據

在根據條件查詢的條件中使用like和通配符%(任意字符),_(一個字符)

查詢表里的某字段為NULL的值條件必須用is?null,不能用=?null

對表里的數據排序(先按字段1排,有相同的則再按字段2排)

select?*?from?表的名字?order?by?字段名字1?asc(默認升序)/desc(降序),字段名字2?asc(默認升序)/desc(降序);

修改表中某字段的所有數據

update?要修改的表的名字?set?要修改的字段?=?修改后的內容;

修改表中某字段的指定數據(where?后面是查找條件)

update?要修改的表的名字?set?要修改的字段?=?修改后的內容?where?字段?=?內容;

刪除表中的一個字段(這里要注意不能全刪光)

alter?table?表的名字?drop?column?字段名字;

刪除表中的數據

truncate?表的名字;?(后面不能跟where)

delete?from?表的名字;

delete?from?表的名字?where?字段名字?=?內容;

刪除數據庫/表

drop?database/table?存在的數據庫名字/表的名字;

清屏

system?clear

導入導出數據庫

導出(終端中):?mysqldump?-uroot?-p?存在的要導出的數據庫的名字?>?要導出位置的絕對路徑/新名字.sql

導入(終端中):?mysql?-uroot?-p?新數據庫的名字?

導入(客戶端中):?1.?先建一個新的數據庫,名字隨意

2.?use?這個空的數據庫

3.?source?寫要導入的.sql文件的絕對路徑

約束

兩種添加的時機:1.?建表的時候?2.?alter?添加約束

演示代碼(不想打的可以直接復制,我寫全了,不過代碼里也有會報錯的地方,認真看錯誤的原因才能理解的更深):

主鍵約束(自帶唯一約束):

create?database?yueshu?character?set?utf8;

use?yueshu;

show?tables;

create?table?tbl_PK(

id?int?unsigned(無符號)?primary?key?auto_increment(自動增長),(順序不能錯)

name?varchar(30));

insert?tbl_PK?values(1,'張三'),(2,'李四'),(3,'王五');

select?*?from?tbl_PK;

insert?tbl_PK?values(0,'張三'),(0,'李四'),(0,'王五');

唯一約束:

create?table?tbl_UQ(

id?int?unsigned?primary?key?auto_increment,

card_id?varchar(18)?unique);

insert?into?tbl_UQ?values(0,'123123');

select?*?from?tbl_UQ;

insert?into?tbl_UQ?values(0,'123123');

insert?into?tbl_UQ?values(0,'123123321');

select?*?from?tbl_UQ;

非空約束:

create?table?tbl_NN(

id?int?unsigned?primary?key?auto_increment,

name?varchar(10)?not?null);

alter?table?tbl_NN?add?age?int?unsigned;

desc?tbl_NN;

insert?into?tbl_NN?values(0,?'張三');

insert?into?tbl_NN(id,name)?values(0,?'張三');

select?*?from?tbl_NN;

insert?into?tbl_NN(id,age)?values(0,?18);

默認約束:

create?table?tbl_Default(

id?int?unsigned?primary?key?auto_increment,

gender?char(2)?not?null?default?'男');

alter?table?tbl_Default?add?name?varchar(30);

insert?into?tbl_Default(id,?name)?values(0,'張三');

select?*?from?tbl_Default;

檢查約束:(MySQL中不起作用)

create?table?tbl_Check(

id?int,

age?int?check?(?age?>?0?and?age?

gender?char(2)?check?('男'?or?'女'));

insert?into?tbl_Check?values(0,?180,?'中性');

select?*?from?tbl_Check;

外鍵約束:

create?table?Employees(

EmpId?int?unsigned?primary?key?auto_increment,

EmpName?varchar(50),

EmpGender?char(2),

EmpAge?int,

EmpEmail?varchar(100),

EmpAddress?varchar(500)

DeptId?int);

create?table?Department(

DepId?int?unsigned?primary?key?auto_increment,

DepName?varchar(50));

alter?table?Employees?add?constraint?FK_DeptId_DepId?foreign?key(DeptId)?references?Department(DepId);

外鍵必須和主鍵關聯

insert?into?Department?values(0,'一部門'),(0,'二部門');

select?*?from?Department;

insert?into?Employees(EmpId,DeptId)?values(0,1);

select?*?from?Employees;

insert?into?Employees(EmpId,DeptId)?values(0,3);

drop?table?Department;

drop?table?Employees;

drop?table?Department;

聚合函數(聚合函數不計算null值)

-?對多條數據進行統計

把某字段中的數據分組

select?字段名字1?from?表的名字?group?by?字段名字1;

根據某字段(字段名字1)分組,顯示其它字段(字段名字2)成分

select?字段名字1,group_concat(字段名字2)?from?表的名字?group?by?字段名字1;

求和

select?sum(字段名字)?as?'別名'?from?表的名字;

求最大

select?max(字段名字)?as?'別名'?from?表的名字;

求最小

select?min(字段名字)?as?'別名'?from?表的名字;

求平均

select?avg(字段名字)?as?'別名'?from?表的名字;

求某字段所含數據的總個數(不算null那一行)

select?count(字段名字)?as?'別名'?from?表的名字;

分組之后顯示每組的數據個數

select?字段名字1,count(*)?from?表的名字?group?by?字段名字1;

保留小數指定位數

select?round(那個小數,保留的位數)?from?表的名字;

having?對分組之后的數據進行進一步的篩選

類似于?select?和?where?之間的關系

select?字段名字1?from?表的名字?group?by?字段名字1?having?條件;

多表查詢

-?盡量避免多表查詢

-?多表查詢會出現笛卡爾積

內連接,滿足條件顯示(還是會產生笛卡爾積,只是用on進行了條件篩選)

select?*?from?表1的名字?inner?join?表2的名字?on?表1的名字.字段的名字?=?表2的名字.字段的名字;

左連接,以表1為基礎,表1全顯示,表2不夠的用null補全

select?*?from?表1的名字?left?join?表2的名字?on?表1的名字.字段的名字?=?表2的名字.字段的名字;

右連接,以表2為基礎,表2全顯示,表1不夠的用null補全

select?*?from?表1的名字?right?join?表2的名字?on?表1的名字.字段的名字?=?表2的名字.字段的名字;

自關聯

-?讓表自己和自己進行連接

-?表中的某一列關聯了表中的另外一列,但是他們的業務含義是不一樣的

select?*?from?表的名字?inner?join?表的名字?on?表的名字.字段的名字?=?表的名字.字段的名字;

代碼示例:

Create?table?areas

(

id?int,

atitle?varchar(100),

pid?int

)

如:

id?編號?pid?上級編號

id??atitle?????pid

1???河北省???null

2???石家莊????1

3???平山縣????2

子查詢

select?*?from?表1的名字?where?字段1的名字=(select?字段2的名字?from?表2的名字?where?條件)

執行順序:

1—from?表名

2—where

3—group?by

4—select?distinct?*

5—having

6—order?by

7—limit

注意事項:

enum?,添加數據的時候是從1開始的不是從0開始的?,比如enum('男','女')-----1是男,2是女,以此類推

總結

以上是生活随笔為你收集整理的姓名大全 导入mysql_My SQL常用操作汇总详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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