MySQL基礎和資料庫的建立命令,約束

2021-07-29 16:56:59 字數 4087 閱讀 8476

首先講解一下常見的命令:

net start mysql57 (mysql57 是 服務名), 啟動服務

net stop mysql57 關閉服務

mysql -uroot -p 根據使用者名稱,密碼登陸資料庫 (root是使用者名稱)

prompt mysql> 修改提示符

mysql的預設埠號 3306

預設使用者 root

mysql語句的規範:

1. 關鍵字和函式名必須大寫;

2. 資料庫名稱,表名稱,欄位名稱 必須小寫;

3. sql語句必須以分號; 結尾

show databases

show variables like」%datadir%」 顯示模糊查詢為datadir的變數名稱

select version(); 顯示資料庫的版本

select user(); 顯示當前使用者

select now(); 顯示當前時間

資料庫建立,修改,刪除語句

createdatabase t1 default character set = gbk; // 建立乙個資料庫,編碼方式為 gbk

create database t1 if exists t1 default character set = gbk; //根上面一句的區別是,如果建立的時候 t1 已經存在了,則不會出現錯誤,只是給出乙個 warning

alterdatabase t1 default character set = utf-8; // 修改資料庫的編碼方式為 utf-8

dropdatabase t1 if exists t1; // 刪除資料庫t1

建立的資料庫名字為test, 資料表的建立為 user

// 首先進入資料庫test

use test;

// 可以查詢test中的所有表

show tables

// 建立乙個表

create table user(

id int,

name varchar(10),

age tinyint

);// 為該錶增加乙個新的列

alter table user add salary float(8,2);

// 顯示該錶的所有列

show columns from user;

// 插入一行資料

insert user values(1,』wang』, 20, 100);

insert user values(1,』wang』); // 不能插入,當你沒有在前面表明要插入的列時,必須要將全部資料補齊,否則插入失敗

insert user(id, name, age, salary) values (2, 『wang』, 20, 100);

//顯示所有的資料

select * from user;

約束作用: 保證資料的一致性和完整性, 實現一對一或者一對多的關係

約束分為列級約束, 表級約束

對乙個資料列建立的約束,叫列級約束

對多個資料列建立的約束,叫表級約束

約束型別 :

not null , 非空約束

primary key , 主鍵約束

unique key, 唯一約束

default , 預設約束

foreign key, 外來鍵約束

為表的字段新增不為空約束

create table user(

id int not null, // 增加 id欄位約束不為空

name varchar(10),

age tinyint

);為表的字段 id 設定為自增型, 而且自增型別必須要與主鍵組合使用, 定義為主鍵

create table user(

id int unsigned not null auto_increment primary key, // 增加 id欄位約束不為空, 無符號整數, 自增, 主鍵

name varchar(10),

age tinyint

); 乙個表只有乙個主鍵, 主鍵保證記錄的唯一性,主鍵自動不為null, 主鍵並不意味著只是乙個列,可以是幾個列的組合

為表的字段 name 設定唯一約束,可以保證記錄的唯一性, 唯一約束的字段可以為空值,一張表可以存在多個唯一約束

create table user(

id int unsigned not null auto_increment primary key, // 增加 id欄位約束不為空, 無符號整數, 自增, 主鍵

name varchar(10) unique key

age tinyint

);預設值: 當插入記錄時,如果沒有明確為字段賦值,則自動賦予預設值default

外來鍵約束

外來鍵使用要求:

1.父表和子表使用相同的儲存引擎 , 且只能為 innodb,禁止使用臨時表

2. 外來鍵列(字表) 和參照列(父表) 必須具有相似的資料型別,其中數字長度或者有無符號位必須相同, 字元的長度則可以不同

3. 外來鍵列和參照列必須建立索引,如果外來鍵列不存在索引,則mysql將自動建立索引, 但是參照列不存在索引,mysql不會為其自動建立索引

create table provience(

id tinyint unsigned auto_increment,

pname varchar(20) not null,

primary key (id)

); create table city(

id tinyint unsigned auto_increment,

pname varchar(20) not null,

cityname varchar(20) not null,

foreign key (pname) references provence (pname),

primary key(id)

);外來鍵約束的幾種許可權:種約束是一種物理層次的約束,一般不建議使用(設定成no action或者 restrict),我們一般會設定邏輯層次的約束實現跟這個外來鍵物理約束相同的功能,比如在父表的參照欄位上建立觸發器。外來鍵一般來說可以保證資料的一致性和完整性,但是有時會大大的降低效率,因為其要進行檢查, 而且不易於後期維護修改,無法擴充套件(分庫分表的時候,約束無法擴充套件), 所以可以將外來鍵的約束交給程式來做。

cascade: 級聯,從父表刪除或者更新的話,會自動刪除和更新子表中的匹配的行

set null: 從父表中刪除或者更新行,會將字表中匹配的行的外來鍵列設定為 null, 如果要使用該選項,必須保證字表中的外來鍵字段不能設定成not null。

restrict: 拒絕對父表的刪除或者更新操作, 父表中的刪除或者更新不影響字表中的列。

no action: 標準sql語句,與mysql 中 的 restrict功能相同

// 建立表後為某一列新增約束

alter table user add constraint unique (id);

mySQL建立資料庫和資料表

sql 的主要功能是和資料庫建立連線,進行增刪改查的操作。sql是關係型資料庫管理系統的標準語言。sql 語言的作用 使用 sql 運算元據庫時,所有的 sql 語句都以分號結束。切換資料庫時可以不用分號 在 sql 語句中,不區分大小寫,編寫 sql 語句時可以根據情況用大小寫的區別來增加可讀性。...

mysql 基礎 建立資料庫

一.資料庫 database db 1.資料庫 儲存資料結構的倉庫 2資料庫的分類 1 關係型資料庫 二維表結構儲存,mysql.sqlserver.oracle.db2.2 非關係型資料庫 nosql mongdb 3.mysql 1 安裝 2 配置檔案 a.windows my.ini b.li...

mysql查資料庫 mysql檢視資料庫命令

mysql檢視資料庫命令 2012 11 29 19 51 25 標籤 it mysql檢視資料庫命令 開啟的資料庫的命令 mysql use mysql database changed 檢視資料庫的命令 mysql show databases 檢視資料表的詳細結構 mysql desc fun...