MySQL學習筆記1

2021-10-14 08:47:58 字數 4490 閱讀 9513

#登入mysql

mysql -u username -p password

#退出mysql伺服器

exit

'''

顯示所有資料庫

'''show databases;

'''建立名為mydatabase資料庫

'''create database mydatabase;

'''切換資料庫

'''use mydatabase;

'''顯示當前資料庫中的所有表

'''show tables;

'''建立名為pet的資料表

'''create table pet(

name varchar(20),

owner varchar(20),

species varchar(20),

*** char(1),

birth date,

death date

);'''

檢視資料表結構

-- describe pet;

'''desc pet;

'''查詢表

'''select * from pet;

'''插入資料

'''insert into pet values('puffball', 'diane', 'hamster', 'f', '1990-03-30', null);

'''修改資料

'''update pet set name = 'squirrel' where owner = 'diane';

'''刪除資料

'''delete from pet where name = 'squirrel';

'''刪除pet表

'''drop table pet;

'''

主鍵約束

使某個欄位不重複且不能為空,確保表內所有資料的唯一性

'''create table user(

id int primary key,

name varchar(20)

);'''

聯合主鍵

聯合主鍵中的每個欄位都不能為空,並且加起來不能和已設定的聯合主鍵重複。

'''create table user (

id int,

name varchar(20),

password varchar(20),

primary key(id, name)

);'''

自增約束

自增約束的主鍵由系統自動遞增分配。

'''create table user (

id int primary key auto_increment,

name varchar(20)

);'''

新增主鍵約束

如果忘記設定主鍵,還可以通過sql語句設定(兩種方式);

'''alter table user add primary key(id);

alter table user modify id int primary key;

'''刪除主鍵

'''alter table user drop primary key;

'''

建表時建立唯一主鍵

'''create table user (

id int,

name varchar(20),

unique(name)

);'''

新增唯一主鍵

如果建表時沒有設定唯一主鍵,還可以通過sql語句設定(兩種方式)

'''alter table user add unique(name);

alter table user modify name varchar(20) unique;

'''刪除唯一主鍵

'''alter table user drop index name;

'''

建表時新增預設約束

約束某個欄位的預設值

'''create table user2 (

id int,

name varchar(20),

age int default 10

);'''

移除預設約束

'''alter table user modify age int

'''

'''

班級'''

create table classes (

id int primary key,

name varchar(20)

);'''

學生表這裡的 class_id 要和 classes 中的 id 字段相關聯

class_id 的值必須來自於 classes 中的 id 字段值

'''create table students (

id int primary key,

name varchar(20),

class_id int,

foreign key(class_id) references classes(id)

);'''

1、主表(父表)classes 中沒有的資料值,在副表(子表)students 中,是不可以使用的;

2、主表中的記錄被副表引用時,主表不可以被刪除。

'''

只要字段值還可以繼續拆分,就不滿足第一正規化。

正規化涉及得越詳細,對某些實際操作可能會更好,但並非都有好處,需要對專案實際情況進行設定。

在滿足第一正規化的前提下,其他列都必須完全依賴於主鍵列。如果出現不完全依賴,只可能發生在聯合主鍵的情況下:

#訂單表

create table myorder (

product_id int,

customer_id int,

product_name varchar(20),

customer_name varchar(20),

primary key (product_id, customer_id)

);

實際上,在這張訂單表中,product_name只依賴於product_idcustomer_name只依賴於customer_id。也就是說,product_namecustomer_id是沒用關係的,customer_nameproduct_id也是沒有關係的。這就不滿足第二正規化:其他列都必須完全依賴於主鍵列!如下拆分之後,myorder表中的product_idcustomer_id完全依賴於order_id主鍵,而productcustomer表中的其他欄位又完全依賴於主鍵,滿足了第二正規化的設計。

create table myorder (

order_id int primary key,

product_id int,

customer_id int

);create table product (

id int primary key,

name varchar(20)

);create table customer (

id int primary key,

name varchar(20)

);

在滿足第二正規化的前提下,除了主鍵列之外,其他列之間不能有傳遞依賴關係。

create table myorder (

order_id int primary key,

product_id int,

customer_id int,

customer_phone varchar(15)

);

表中的customer_phone有可能依賴於order_idcustomer_id兩列,也就不滿足了第三正規化的設計:其他列之間不能有傳遞依賴關係。如下修改後就不存在其他列之間的傳遞依賴關係,其他列都只依賴於主鍵列,滿足了第三正規化的設計!

create table myorder (

order_id int primary key,

product_id int,

customer_id int

);create table customer (

id int primary key,

name varchar(20),

phone varchar(15)

);

MySQL學習筆記(1)

第一章 mysql架構 客戶連線及認證,在伺服器擁有自己的執行緒,每個連線所屬的查詢都會在指定的某個單獨執行緒中完成 認證方式 基於使用者名稱 原始主機資訊和口令。對查詢請求,首先查詢快取,若不存在則對查詢進行解析,建立解析樹,對其進行優化 優化器 優化器不關心儲存引擎的差異,但儲存引擎可能對查詢優...

MySQL學習筆記1

前言 部落格裡更新的mysql知識多為總結常用方法方式,不保證嚴格的學術性。一.mysql 簡介 mysql是乙個小型關係型資料庫管理系統 二.mysql進入方法 1 直接開啟安裝好的mysql軟體,輸入密碼即可 2 在cmd中進入 轉到 mysql的安裝目錄中的 bin 目錄 輸入 mysql u...

mysql學習筆記(1)

1.官網 1.2 安裝 2.使用xampp for windows 2.1 官網 2.2 重新編譯版 二 資料庫基本指令 1.資料庫操作 1.1 關閉資料庫 net stop mysql 1.2 開啟資料庫 net start mysql 1.3 登入mysql 將本次使用記錄儲存到c mysql....