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。優點:無需計算資料長度 效率高。
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(刪除)