数据库_7_SQL基本操作——表操作
SQL基本操作——表操作
建表的過(guò)程就是聲明列的過(guò)程。
表與字段是密不可分的。
一、新增數(shù)據(jù)表
create table [if not exists] 表名( 字段名字 數(shù)據(jù)類(lèi)型, 字段名字 數(shù)據(jù)類(lèi)型 -- 最后一行不需要逗號(hào) )[表選項(xiàng)];if not exists:如果表名不存在,那么就創(chuàng)建,否則不執(zhí)行創(chuàng)建代碼,起到檢查功能的作用 表選項(xiàng):控制表的表現(xiàn)字符集:charset/character set 具體字符集; --保證表中數(shù)據(jù)存儲(chǔ)的字符集校對(duì)集:collate 具體校對(duì)集; --表采用數(shù)據(jù)比較的方式存儲(chǔ)引擎:engine 具體的存儲(chǔ)引擎(innodb和myisam)?舉例:
-- 創(chuàng)建表 create table if not exists student( name varchar(10), gender varchar(10), number varchar(10), age int )charset utf8;?
任何一個(gè)表的設(shè)計(jì)都必須指定數(shù)據(jù)庫(kù)
方案1:顯示的指定表所述的數(shù)據(jù)庫(kù)
crate table 數(shù)據(jù)庫(kù)名.表名;???? --將當(dāng)前數(shù)據(jù)表創(chuàng)建到指定的數(shù)據(jù)庫(kù)下
-- 創(chuàng)建表 create table if not exists mydatabase.student( -- 顯示的將student表放到mydatabase數(shù)據(jù)庫(kù)下 name varchar(10), gender varchar(10), number varchar(10), age int )charset utf8;方案2:隱式的指定表所屬的數(shù)據(jù)庫(kù):先進(jìn)入到某個(gè)數(shù)據(jù)庫(kù)環(huán)境,然后這樣創(chuàng)建的表自動(dòng)歸屬到某個(gè)指定的數(shù)據(jù)庫(kù)
進(jìn)入數(shù)據(jù)庫(kù)環(huán)境:use 數(shù)據(jù)庫(kù)名字;
-- 先進(jìn)入數(shù)據(jù)庫(kù),再創(chuàng)建表 use mydatabase; create table class( name varchar(10), room varchar(10) )charset utf8;?
當(dāng)創(chuàng)建數(shù)據(jù)表的SQL指令執(zhí)行之后,到底發(fā)生了什么?
二、查看數(shù)據(jù)表
?數(shù)據(jù)庫(kù)能查看的方式,表都可以查看。
-
查看所有表:show tables;
-
查看部分表:模糊匹配???? show tables like 'pattern';? --pattern是匹配模式,? %:表示匹配多個(gè)字符, _:表示匹配單個(gè)字符
-- 查看以s結(jié)尾的表(盡量不要用這種方式查,效率低) show tables like '%s'; -
查看表的創(chuàng)建語(yǔ)句:show create table 表名;
-- 查看表的創(chuàng)建語(yǔ)句 show create table student\g -- \g等價(jià)于; show create table student\G -- \G表示將查到的結(jié)構(gòu)旋轉(zhuǎn)90度變成縱向 -
查看表結(jié)構(gòu):查看表中的字段信息?????? desc/describe/show columns from 表名;
-- 查看表結(jié)構(gòu) desc class; describe class; show columns from class;注:上圖最后一行寫(xiě)錯(cuò)了,將form改成from
三、修改數(shù)據(jù)表
表本身存在,還包括字段,所以表的修改分為兩個(gè)部分:修改表本身和修改字段
修改表本身:
表本身可以修改:表名和表選項(xiàng)
修改表名:rename table 老表名 to 新表名;
-- 重命名:student表 -> my_student(取數(shù)據(jù)庫(kù)名字前兩個(gè)字母) rename table student to my_student;
修改表選項(xiàng):字符集,校對(duì)集和存儲(chǔ)引擎 alter table 表名 表選項(xiàng) [=] 值;
show create table my_student;-- 修改表選項(xiàng):比如字符集 alter table my_student charset =GBK;show create table my_student;?
修改字段:
字段操作很多:新增,修改,重名,刪除
-
新增字段??? alter table 表名 add [column] 字段名 數(shù)據(jù)類(lèi)型 [列屬性] [位置]
位置:字段名可以存放表中的任意位置,存放方式分為兩類(lèi),第一類(lèi)為first:第一個(gè)位置,第二類(lèi)為after:在哪個(gè)字段之后(after 字段名;默認(rèn)的是在最后一個(gè)字段之后)
use mydatabase; desc my_student; -- 給學(xué)生表增加ID放到第一個(gè)位置 alter table my_student add column id int first; -- mysql會(huì)自動(dòng)尋找分號(hào)作為語(yǔ)句結(jié)束符 desc my_student;?
-
修改字段(通常修改屬性或者數(shù)據(jù)類(lèi)型)???????? alter table 表名 modify 字段名 數(shù)據(jù)類(lèi)型 [屬性] [位置];
?
-
重名字段? alter table 表名 change 舊字段 新字段名 數(shù)據(jù)類(lèi)型 [屬性] [位置];
desc my_student; -- 修改學(xué)生表中的gender字段為sex alter table my_student change gender sex varchar(10); desc my_student;?
-
刪除字段??? alter 表名 drop 字段名;
desc my_student; -- 刪除學(xué)生表中的年齡字段(age) alter table my_student drop age; desc my_student;?
小心:如果表中已經(jīng)存在數(shù)據(jù),那么刪除字段會(huì)清空該字段的所有數(shù)據(jù)(不可逆)
注:varchar
VARCHAR(M)是一種比CHAR更加靈活的數(shù)據(jù)類(lèi)型,同樣用于表示字符數(shù)據(jù),但是VARCHAR可以保存可變長(zhǎng)度的字符串。其中M代表該數(shù)據(jù)類(lèi)型所允許保存的字符串的最大長(zhǎng)度,只要長(zhǎng)度小于該最大值的字符串都可以被保存在該數(shù)據(jù)類(lèi)型中。因此,對(duì)于那些難以估計(jì)確切長(zhǎng)度的數(shù)據(jù)對(duì)象來(lái)說(shuō),使用VARCHAR數(shù)據(jù)類(lèi)型更加明智。
四、刪除數(shù)據(jù)表
drop table 表名1,表名2,...;?? -- 可以一次性刪除多張表(刪除數(shù)據(jù)庫(kù)沒(méi)有這種方式;盡量別用這種一次性刪表的方式太危險(xiǎn))
show tables; -- 刪除數(shù)據(jù)表 drop table class; show tables;當(dāng)刪除數(shù)據(jù)表指令執(zhí)行之后發(fā)生了什么?
刪除數(shù)據(jù)表指令執(zhí)行之后:
?
?注意:刪除有危險(xiǎn),操作需謹(jǐn)慎(不可逆)
轉(zhuǎn)載于:https://www.cnblogs.com/tianqizhi/p/8987911.html
總結(jié)
以上是生活随笔為你收集整理的数据库_7_SQL基本操作——表操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: VS中的scanf_s函数和scanf
- 下一篇: 打针小说软件测试,UPDATE注射(my