1. 程式人生 > 資料庫 >MySql之表的建立、插入與刪除

MySql之表的建立、插入與刪除

表的建立、插入與刪除

1>表的建立

建表語句得到語法格式:

create table 表名{
	欄位名1 資料型別,
	欄位名2 資料型別,
	欄位名3 資料型別,
	...
};

MySQL中的資料型別

常用的資料型別:

資料型別中文名
int整數型
bigint長整型(java中的long)
float浮點型 (java中的float double)
char定長字串(java中的String型別)
varchar可變長字串,可以存最多255個字元 java中的StringBuffer/StringBuilder
date日期型別 (對應Java中的java.sql.Date型別)
BOLB二進位制大物件(儲存圖片、視訊等流媒體資訊) Binary Large OBject(對應java中的Object)
CLOB字元大物件(儲存較大文字,比如,可以儲存4個G的字串) (對應java中的Object)

char和varchar如何選擇

  • char(6) 可以儲存的不超過6個字元,每個資料都只分配6個字元的空間。(比如 存取 性別欄位 )
  • varchar(6) 根據實際存入資料動態分配不超過6個字元的空間。

     ~~~~     在實際開發中,當某個字元中的長度不發生改變時,是定長的。例如:性別、生日等都是採用char。優點:無需計算資料長度 效率高。

     ~~~~     當一個欄位的資料長度不確定時,例如:簡介、姓名等都是採用varchar。

BLOB和CLOB型別的使用

id(int) name(varchar) playtime(date,char) haibao(BLOB) history(CLOB)
--------------------------------------------------------------------
1		蜘蛛俠			
2
3

    ~~~    表名在資料庫當中一般建議以:t_或者tab_開始。 資料庫中處理表還有檢視等。

建立學生表:
         ~~~~~~~~         學生資訊包括:
    ~~~    學號、姓名、性別、班級編號、生日
    ~~~    學號:bigint
    ~~~    姓名:varchar
    ~~~    性別:char
    ~~~    班級編號:int
    ~~~    生日:char

create table t_student{
	no bigint,
	name varchar(255),
	sex char(1),
	classno varchar(255),
	birth char(10)
};

2>表中插入資料

insert語句插入資料
語法格式:

insert into 表名(欄位名1,欄位名2,欄位名3,...) values(值1,值2,值3,....)
//要求:欄位的數量和值的數量相同
//並且資料型別要對應相同
insert into t_student(no,name,sex,classno,birth) 
values('zhangsan','1','gansan1ban','1950-10-12');
insert into t_sudent(name,sex,classno,birth,no) values('lisi','1','gansan1ban','1950-10-12',2);
//前後能對上就行,順序不重要
insert into t_sudent(name) values('wangwu');
//除name以外,所有其他欄位自動插入NULL;

將性別的預設值改為1

create table t_student{
	no bigint,
	name varchar(255),
	sex char(1) default 1,
	classno varchar(255),
	birth char(10)
};

需要注意的地方:
    ~~~    當一條insert語句執行成功之後,表格當中必然會多一行記錄。
    ~~~    即使多的這一行記錄當中某些欄位是NULL,後期也沒有辦法在執行insert語句插入資料了,只能使用update進行更新。

insert into t_student values(1,'jack','0','gaosan2ban','1986-10-23');
//省略欄位名的話
//後面的values必須數量和順序都一致
//一次插入多行資料
insert into 
	t_student(no,name,sex,classno,birth)
values
(1,'jack','0','gaosan2ba','1952-12-14'),(4,'laotie','1','gaosi2ban','1955-12-14');

表的複製:
語法:

create table 表名 as select 語句;

將查詢結果當做表創建出來。

//複製表
create table emp1 as select * from emp;
//區域性複製
create table emp2 as select empno.ename from emp;

將查詢結果插入到一張表中

insert into dept1 select * from dept;
//欄位數有要求

修改資料

語法格式:

	update 表名 set 欄位名1=值1,欄位名2=值2,... where 條件;
	//注意:沒有條件整張表資料全部更新
	//注意欄位名=值1後是','不是and
	

    ~~~    案例:將部門10的LOC修改為SHANGHAI,將部門名稱修改為RENSHIBU。

update dept1 set loc ='SHANGHAI',dname = 'RENSHIBU' where deptno  = 10;
//更新所有記錄
update dept1 set loc = 'x',dname = 'y';

刪除資料

語法格式

delete from 表名 where 條件;
//注意:沒有條件全部刪除
//刪除10部門資料
delete from dept1 where deptno = 10;
//刪除所有記錄
delete from dept1;

delete語句類似橡皮擦,擦完之後格還留著,沒有釋放格的空間,可以回滾。

怎麼刪除大表

不能回滾,不存在反悔空間,速度快,僅僅留下表頭。(需要反覆確認,才進行)。

truncate table emp1;
//表被截斷,不可回滾,永久丟失

3>刪表

//當這個表存在話刪除
drop table if exists t_student;

4>表結構修改

     ~~~~     這裡不講,使用工具很方便,因為在實際開發中表一旦設計好之後,對錶結構修改是很少的,修改表結構就是對之前的設定進行了否定,即使需要修改表結構,我們也可以直接使用工具即可。修改表結構的語句不會出現在JAVA程式碼當中。
     ~~~~     出現在Java程式碼當中的sql包括:insert delete update select (這些都是表中的資料操作。)
增刪改查有一個術語:CRUDE操作
Create(增) Retrieve(檢索) Update(修改) Delete(刪除)