事物 SQL分類 主鍵 自增 非空 注釋

2021-08-28 03:05:36 字數 4418 閱讀 1347

eclipse自定義**塊 自定義模板**

-新增方式:window->最後乙個->data management->sql develepment->sql editor->templates->new

name:是簡化後的**

description:描述

pattern:簡化前的**

應用場景:**比較複雜 並且頻繁使用的時候可用自定義**塊

主鍵及自增

每一張表通常會有乙個且只有乙個主鍵 來表示每條資料的唯一性 

主鍵其實是對某乙個欄位的 約束 

-主鍵特性:1.值不能重複 2.非空(不能賦值為null)

-主鍵約束寫法:    

create table student (id int primary key,age int); 

-主鍵+自增的寫法:    

create table student (id int primary key auto_increment,age int); 

非空

-非空約束 not null        

create table student (id int primary key auto_increment, age int not null);

表字段的注釋

-表字段的注釋關鍵字:comment

create table user (

id int comment '使用者的id', 

age int comment '使用者的年齡'

);單引號和`的區別

單引號:用於給字串賦值

`:用於給表名 和 欄位名賦值 可以省略不寫 

表設計

-在設計表字段的時候,如果某個欄位有可能出現大量的重複(稱為資料冗餘),需要把該字段單獨提出建立一張新錶,把可能重複的放到新錶內,在原表只需要使用新錶的id即可

###練習:

-建立員工表(emp) 和 部門表(dept) 分別在兩個表中插入幾條資料 id要進行主鍵約束並且自增 部門名稱不能為null

create table emp (

id int primary key auto_increment,

name varchar(20),

detpid int,

joindate date

);create table dept (

id int primary key auto_increment,

name varchar(20) not null

);insert into dept (name) values ('財務');

insert into dept (name) values ('市場');

insert into emp (name,deptid) values ('小明',1),('小紅',1),('小白',2),('小綠',2);

事務

-事務是資料庫中的執行單元 

-事務能夠保證事務內部的sql語句要麼都成功,要麼都失敗 

-mysql 客戶端(終端、命令列)事務是預設提交的

-修改mysql事務的自動提交

-檢視當前資料庫是否自動提交事務

show variables like '%autocommit%';

-給自動提交引數賦值為0 是關閉 1是開啟

set autocommit=0;

-演示事務:

建立user表 有id 和money欄位 

插入一條資料  id=1  money=100;

1.開啟兩個終端a、b,在a裡面 執行

set autocommit=0; 然後修改表中的某個資料

此時去b終端檢視,因為a開啟了事務此時並沒有提交,則a的操作是在記憶體中操作所以此時b終端看不到資料的改變,直到a執行commit才把記憶體中的操作執行到資料庫,如果在執行commit之前執行了rollback 則a視窗 會回到修改之前的狀態

begin:開啟事務

commit:提交事務

rollback:回滾 

sql分類

資料定義語言 ddl

data definition language

-ddl不支援事務 不能回滾

常見命令有: create alter drop 

資料操縱語言 dml

data manipulation language

-ddl支援事務

常見命令:insert update delete

select屬於dml

資料查詢語言 dql

data query language

select 是最常用的命令 

面試問的最多

tcltrainsaction control language 事務控制語言

常見命令:begin commit rollback

dcldata control language 資料控制語言

資料庫資料型別

1. 整數

-常用型別為 int(m) bigint(m)

-m代表顯示的位數 意思是當顯示的資料不足m值時在前面補0,前提是必須在字段的宣告後面新增zerofill

create table t_int (id int(6) zerofill);

注意:有個別公司把這個m 當成資料長度來用

2.浮點數

float(m,d): 不常用

double(m,d):比float精度高

decimal(m,d):比double精度還要高好多

m代表總長度,的代表小數的位數

當涉及到錢的時候需要用到高精度的型別 會使用decimal

3. 字串  

varchar(20) :可變長度 執行效率低 節省空間   abc  3           :65535  但是建議不超過255如果文字超過255則建議使用text

char(20) :固定長度 執行效率高 佔空間大   abc  20

長度255

text:長度可變最大65535 

4.日期

date:只能儲存日期

time:只能儲存時間

datetime:儲存日期+時間 如果不賦值預設值為null,最大值9999-12-31

timestamp:儲存日期+時間 如果不賦值預設為當前時間,最大值2038-01-19 

因為timestamp有預設值當前時間所以平時使用較多

案例:建立表t,欄位d1 date,d2 time,d3 datetime,d4 timestamp

create table t (d1 date,d2 time,d3 datetime, d4 timestamp);

insert into t (d1,d2) values ('2018-12-21','12:22:38');

insert into t values ('2018-12-21','12:22:38','9898-12-10 12:06:38','2028-05-06 11:11:11');

timestamp如果插入資料超出取值範圍則報錯

總結

1.主鍵

primary key  唯一  不能為null

2.自增

auto_increment 

3.非空

not null

4.注釋

comment 

5.`'區別  `欄位名和表名   '字串的值的時候

6.事務 資料庫的執行單元  

7.begin 開啟事務  commit 提交事務 rollback 回滾事務

檢視當前資料庫是否自動提交

show variables like '%autocommit%';

關閉自動提交 開啟為1

set autocommit=0;

8.sql分類

ddl 資料定義語言 不支援事務 create drop alter 

dml 資料操作語言 支援事務 insert update delete select(也屬於dql)

dql 資料查詢語言 select

tcl 事務控制語言 begin commit rollback

dcl 資料控制語言 控制許可權分配

9.資料型別

整數:int bigint 

浮點數:float double decimal(m,d) m總長度 d小數點後面的位數 

字串: char(20) varchar(20) text 

char 固定長度 text長度65535

日期:date time datetime timestamp

MySQL設定主鍵自增和非主鍵自增

mysql 每張表只能有1個自動增長字段,這個自動增長字段即可作為主鍵,也可以用作非主鍵使用,但是請注意將自動增長字段當做非主鍵使用時必須必須為其新增唯一索引,否則系統將會報錯。例如 將自動增長字段設定為主鍵 create table t1 id int auto increment primary...

SQL 主鍵 自動編號 主鍵自增

1.新建一資料表,裡面有欄位id,將id設為為主鍵 如下 create table tb id int,constraint pkid primary key id create table tb id int primary key 2.新建一資料表,裡面有欄位id,將id設為主鍵且自動編號 如下...

sql 設定主鍵自增從1開始

一 dbcc方法 dbcc checkident test reseed,0 1 首先建立乙個臨時表 create table tmp id int identity 1,1 not null,name varchar 50 null select from tmp 2 往這個臨時表中插入三條記錄 ...