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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mac mysql 列表_Mac终端操作Mysql,以及Mysql的操作方法详解

發布時間:2023/12/1 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mac mysql 列表_Mac终端操作Mysql,以及Mysql的操作方法详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先手動啟動Mysql應用程序

打開終端輸入如下命令: ?/usr/local/mysql/bin/mysql -u root -p

(注意:Windows下的是: ?mysql -u root -p)

其中root為用戶名。這時會出現如下命令:Enter password: ?123456

這樣就可以訪問你的數據庫服務器了。

數據庫操作

下面介紹一些關于從數據庫創建到使用的一些簡單的方法;

創建一個名字為mydatabase數據庫:create database mydatabase ;

可以用以下地命令來查看創建的數據庫是否成功:show databases ;

更改數據庫名字 :alter databases ?Hdatabase ;

更改數據庫mydatabase的字符集 :alter database mydatabase charset GBK ;

進入數據庫:use mydatabase ;

用下面的命令來查看該數據庫中的表:show tables ;

表操作

用下面的命令來創建表:create table student (

name varchar(10) ,

gender?varchar(10) ,

sno ? ?int ? ?primary key(id)

)charset utf8;

用下面的命令來檢查表的創建是否成功:show tables;

查看該表結構,表中字段的信息:desc 表名 ; ? ? ? ?describe 表名; ? ? ? show columns from ?表名;

修改表名:rename命令用于修改表名。 ?rename命令格式:rename table 原表名 to 新表名;

alter ?table ?舊表名 ?rename ?新表名; ? ? ? ? alter table student ?rename ?my_student;

修改字段,字段操作很多:新增(add)、修改(modify)、重名(change)、刪除(drop)

--給學生表增加ID放到第一個位置。 ? ? ? ? ? ? ? ? ? ? ? ? ?alter?table ?表名 ?add ?字段名 ?數據類型[位置];

alter ?table my_student add ?id int first;

---將學生表中的number學號字段變成固定長度,且放到第二位。 ? alter table 表名 ?modify ?字段名 ?數據類型 ?[位置];

alter ?table ?my_student ?modify ?number ?char(10) ?after id;

---修改學生表中的gender字段為sex。 ? ? ? ? ? ? ? ? ? ? ??alter table 表名 ?change ?舊字段名 ?新字段名 ?數據類型 ;alter table my_student ?change ?gender ?sex ?varchar(10);

---刪除學生表中的字段age。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?alter ?table ?表名 ? drop ? 字段名;

alter ?table ?my_student ?drop ?age;

刪除數據表: drop ?table ?表名1,表名2,……; ? ? ? ? 一次性刪除多個表

數據操作

---新增數據(插入全表字段數據) insert into my_student values('Jim','female',1106101);

---新增數據(指定字段列表) ? insert into ?my_student(number,sex) ?values(1106,'male');

---查看所有的數據 ?select ?*

from ?表名

[where 條件];

---更新數據 ? ?alter是操作數據庫,表,字段。 update更新數據

--更新名字叫Jim的性別。 ? ? ?update ?表名 ?set ?字段 = 值[where 條件];

update my_student set sex = 'female' where name = 'Jim';

---刪除數據

--刪除表中性別男的 ? ? ?delete ?from ?表名 ?[where ?條件];

delete ?from my_student ?where ?sex = 'male';

中文數據問題本質是字符集問題,set names ?gbk; ? 一定要設置字符集。

外鍵:如果一張表中有一個字鍵段(非主鍵)指向另外一張表的主鍵,那么將該字段稱之為外鍵。

主鍵問題

主鍵直接在字段之后,可以有多個字段作為主鍵,這樣的主鍵稱為復合主鍵。

沒有主鍵,追加主鍵 ? ?alter ?table ?my_database ?modify ?course ?char(10) ?primary key;

沒有主鍵,追加復合主鍵 ?alter table ?my_student ?add ?primary key (sno,cno);

更新主鍵 & 刪除主鍵 ?alter ?table ?表名 drop primary ?key;

范式:終極目標為了減少數據的冗余,凡是通過關系尋找出來的數據,堅決不再重復存儲。

第一范式:在設計表存儲數據時,數據具有原子性。

如表(姓名,性別,教課時間(開始,結束)) ?此表的教課時間仍可拆分,不具備原子性。

解決辦法(姓名,性別,開始,結束)

第二范式:解決表設計出現的部分依賴,部分依賴就是存在字段依賴主鍵中某個字段(主鍵的部分)。只要不存在復合主鍵,表的設計就一定滿足2NF

如一張表中有(講師,性別,班級,教室,帶課時間,開始時間,結束時間) ? 因為講師沒辦法作為主鍵,需要結合講師班級才能作為主鍵(一個老師在一個班只帶一個階段的課,性別并不依賴班級,只依賴講師;教室不依賴講師,只依賴班級,因此出現了性別和教室依賴主鍵中的一部分)

解決方案: 可以將性別與講師單獨成表,班級與教室也單獨成表,以此取消復合主鍵。

有人也認為可以使用邏輯主鍵,例如增加IDP。這樣真的可以嗎? ?不可以,如下,會出現傳遞依賴。

第三范式:理論上講,應該一張表中的所有字段都直接依賴主鍵,如果表設計中存在一個字段,并不直接依賴主鍵,而是通過某個非主鍵字段依賴,最終實現依賴主鍵,如一張表中有(主鍵IDP,講師,性別,班級,教室,帶課時間,開始時間,結束時間) ?性別依賴于講師,講師依賴于主鍵IDP;教室依賴班級,班級依賴主鍵IDP。性別和教師都存在傳遞依賴。

解決方案:將存在傳遞依賴的字段,以及依賴的字段本身單獨取出,形成一個單獨的表,然后在需要對應的信息的時候,使用對應的實體表的主鍵加進來。一句話就是實體單獨建表。

查詢數據完整語法

select 字段名/*

from ?數據源

[where 條件子句]

[group by 子句]

[having 子句]

[order by 子句]

[limit 子句];

select * ?from my_student;

---去重

select distinct * ?from ?my_student;

--插入數據

insert into my_student values(null,'itcast01','張三','男'),(null,'itcast02','李四','男'),(null,'itcast03','王五','女'),(null,'itcast03','男');

--字段別名

select id,number as 學號,name as 姓名, sex 性別

from my_student;

where子句

原理:where是唯一一個直接從磁盤獲取數據的時候就開始判斷的條件:從磁盤取出一條記錄,開始進行where判斷,判斷的結果如果成立保存到內存,反之放棄。

---找學生id為1,3,5的學生

select ?* ?from ?my_student ?where id =1 || id =3 || id =5;

或者select * from my_student where id in(1,3,5);

group by ?字段 [asc/desc]; ? 分組 ?根據某個字段進行分組,相同的放一組,不同的分到不同的組。統計的是數據,不是記錄

--按性別分組

select * from my_student group by sex; 這是絕對錯誤的,分組是為了統計數據,按分組字段進行數據統計

SQL提供了一系列統計函數

Count(); ?統計分組后的記錄數,每一相同的組有多少行記錄

Max(); ? 統計每組最大的值

Min(); ? 統計每組最小的值

Avg(); ? 統計每組的平均值

Sum(); ? 統計每組的和

---身高高矮,平均年齡,和總年齡

select sex,count(*),max(height),min(height),avg(age),sun(age) ? from my_student ?group by sex;

注意使用group by卻不使用統計函數,沒意義!

多字段分組:先根據一個字段進行分組,然后對分組后的結果再次按照其他字段分組。

having子句

與where子句一樣進行條件判斷,思考:為什么是group by……having…… 而不是group by……where???

進行數據統計時,是數據進入內存之后,會進行分組-》統計-》having條件判斷。而where是針對從磁盤讀取數據時進行判斷,此刻還沒分組,進行統計就判斷了。所以錯誤!!!

---求出所有班級人數大于等于2的學生人數

order by 子句

order by根據某個字段進行升序或降序排序,依賴校對集

基本語法: order by 字段名 [asc/desc]; ?asc升序 可不寫 ? ? ?desc降序

limit子句是一種限制結果的語句

1)用來限制數量

--查詢學生前兩個 ? select * from my_student limit 2;

2)限制起始位置 ?limit 起始位置,長度

--查從編號4開始,詢找兩個學生

select * from my_student limit 4,2;

內連接,外連接,自然連接,交叉連接

內連接,從左表中取出每一條記錄,和右表中所有的記錄進行匹配,匹配必須是左表中與右表中某個條件相同,最終會保留結果,否則不保留。

基本語法: ?左表 [inner] join 右表 ?on 左表.字段 = 右表.字段;

select * from my_student inner join my_class on my_student.C_id = mu_class.id;

左外連接:左表為主,然后每條記錄與右表進行連接,不管能不能匹配的上,左表都會保留。能匹配,右表某條記錄保留,不能匹配,某條記錄置為NULL,最終記錄數至少不少于左表已有的記錄。

基本語法: ?左表 ?left join ?右表 ?on ?左表.字段 = 右表.字段;

a表 ? ? id ? name ? ? ?b表 ? ? id ? job ? parent_id

1 ? 張3 ? ? ? ? ? ? ? ? ? 1 ? ? 23 ? ? 1

2 ? 李四 ? ? ? ? ? ? ? ? 2 ? ? 34 ? ? 2

3 ? 王武 ? ? ? ? ? ? ? ? 3 ? ? 34 ? ? 4

a.id同parent_id ? 存在關系

--------------------------------------------------

1) 內連接

select ? a.*,b.* ? from ? a ? inner ? join ? b ? ? on ? a.id=b.parent_id

結果是

1 ? 張3 ? ? ? ? ? ? ? ? ? 1 ? ? 23 ? ? 1

2 ? 李四 ? ? ? ? ? ? ? ? ?2 ? ? 34 ? ? 2

2)左連接

select ? a.*,b.* ? from ? a ? left ? join ? b ? ? on ? a.id=b.parent_id

結果是

1 ? 張3 ? ? ? ? ? ? ? ? ? 1 ? ? 23 ? ? 1

2 ? 李四 ? ? ? ? ? ? ? ? ?2 ? ? 34 ? ? 2

3 ? 王武 ? ? ? ? ? ? ? ? ?null

3)?右連接

select ? a.*,b.* ? from ? a ? right ? join ? b ? ? on ? a.id=b.parent_id

結果是

1 ? 張3 ? ? ? ? ? ? ? ? ? 1 ? ? 23 ? ? 1

2 ? 李四 ? ? ? ? ? ? ? ? ?2 ? ? 34 ? ? 2

null ? ? ? ? ? ? ? ? ? ? ? ?3 ? ? 34 ? ? 4

4)?完全連接

select ? a.*,b.* ? from ? a ? full ? join ? b ? ? on ? a.id=b.parent_id

結果是

1 ? 張3 ? ? ? ? ? ? ? ? ?1 ? ? 23 ? ? 1

2 ? 李四 ? ? ? ? ? ? ? ??2 ? ? 34 ? ? 2

null ? ? ? ? ? ? ?   ? 3 ? ? 34 ? ? 4

3 ? 王武 ? ? ? ? ? ? ? ? null

總結

以上是生活随笔為你收集整理的mac mysql 列表_Mac终端操作Mysql,以及Mysql的操作方法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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