零食網(wǎng)站頁面模板湖南專業(yè)seo公司
常用的數(shù)據(jù)類型
int? ? ? ? ? ?整型 | 用于定義整數(shù)類型的數(shù)據(jù) |
float????????單精度浮點4字節(jié)32位? | 準確表示到小數(shù)點后六位?? |
double????雙精度浮點8字節(jié)64位 | 雙精度浮點8字節(jié)64位 |
char????????固定長度的字符類型 | 用于定義字符類型數(shù)據(jù) |
varchar | 可變長度的字符類型?? |
text | 文本 |
image | 圖片 |
decimal(5,2)??指定長度數(shù)組 | 5個有效長度數(shù)字,小數(shù)點后面有2位 |
Char | 如果存入數(shù)據(jù)的實際長度比指定長度要小,會補空格至指定長度,如果存入的數(shù)據(jù)的實際長度大于指定長度,低版本會被截取,高版本會報錯 |
主鍵 | 是唯一的,可以由多個字段構(gòu)成 |
數(shù)據(jù)庫管理
SQL語言分類:
DDL:數(shù)據(jù)定義語言,用于創(chuàng)建數(shù)據(jù)庫對象,如庫、表、索引等
DML:數(shù)據(jù)操縱語言,用于對表中的數(shù)據(jù)進行管理
DQL:數(shù)據(jù)查詢語言,用于從數(shù)據(jù)表中查找符合條件的數(shù)據(jù)記錄
DCL:數(shù)據(jù)控制語言,用于設(shè)置或者更改數(shù)據(jù)庫用戶或角色權(quán)限
1、DDL創(chuàng)建刪除
create
drop
創(chuàng)建新的數(shù)據(jù)庫
CREATE DATABASE 數(shù)據(jù)庫名;創(chuàng)建新的表
CREATE TABLE 表名 (字段1 數(shù)據(jù)類型,字段2 數(shù)據(jù)類型[,...][,PRIMARY KEY (主鍵名)]);
#主鍵一般選擇能代表唯一性的字段不允許取空值(NULL),一個表只能有一個主鍵。
CREATE DATABASE chx;
USE chx;
CREATE TABLE chx (id int NOT NULL,name char(10) NOT NULL,age int NOT NULL,address char(48) ,PRIMARY KEY (id));
DESC zzz;#NOT NULL 不允許為空值PRIMARY KEY :主鍵一般選擇沒有重復(fù)并且不為空值的字段
刪除指定的數(shù)據(jù)表
use 數(shù)據(jù)庫名
DROP TABLE 表名DROP TABLE [數(shù)據(jù)庫名.] 表名;
#如不用USE進入庫中,則需加上數(shù)據(jù)庫名刪除指定的數(shù)據(jù)庫
DROP DATABASE 數(shù)據(jù)庫名;
?2、DML管理表中的數(shù)據(jù)記錄
insert?
update
delete
INSERT格式:
INSERT INTO 表名(字段1,字段2[,...]) VALUES (字段1的值,字段2的值,...);示例:
INSERT INTO chx (id,name,age,address) values(06,'',21,'');關(guān)于PASSWORD的使用
#PASSWORD('123456'):查詢數(shù)據(jù)記錄時,密碼字串以加密形式顯示
若不使用PASSWORD(),查詢時以明文顯示。INSERT INTO chx VALUES(09,'lisi',90,'中國');
SELECT * FROM chx ; #查詢表的數(shù)據(jù)記錄
#修改、更新數(shù)據(jù)表中的數(shù)據(jù)記錄
UPDATE格式:
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 條件表達式];示例:
UPDATE chx SET id=7 WHERE name='lisi';
UPDATE chx SET name='jcc',address='中國北京' WHERE id=7;
在數(shù)據(jù)表中刪除指定的數(shù)據(jù)記錄
DELETE格式:
DELETE FROM 表名 [WHERE 條件表達式];示例:
DELETE FROM chx WHERE id=7;
3、DQL查詢數(shù)據(jù)記錄
select
格式:
SELECT 字段名1,字段名2[,...] FROM 表名[WHERE 條件表達式];示例:
SELECT * FROM chx;
SELECT id,name,score FROM chx WHERE id=2;
select name from chx\G #以列表方式豎向顯示
select * from chx limit 2; #只顯示頭2行
select * from chx limit 2,3; #顯示第2行后的前3行
4.修改表和結(jié)構(gòu)?
修改表名和表結(jié)構(gòu)
ALTER TABLE 舊表名 RENAME 新表名;例:
ALTER TABLE fimily RENAME home;
----------------------------------------------------------------------------------擴展表結(jié)構(gòu)(增加字段)
ALTER TABLE 表名 ADD passwd varchar(50) ;
ALTER TABLE home ADD passwd varchar(50) ;
----------------------------------------------------------------------------------修改字段(列)名,添加唯一鍵
ALTER TABLE 表名 CHANGE 舊列名 新列名 數(shù)據(jù)類型 [unique key];ALTER TABLE home CHANGE name user_name varchar(10) unique key;
#CHANGE可修改字段名、數(shù)據(jù)類型、約束等所有項。desc
----------------------------------------------------------------------------------刪除字段
格式:
ALTER TABLE 表名 DROP 字段名;示例:
ALTER TABLE fimily DROP address;
擴展(關(guān)鍵詞含義)
create table if not exists info (
id int(4) zerofill primary key auto_increment, ? ? #指定主鍵的第二種方式
name varchar(10) not null,
cardid int(18) not null unique key
#if not exists:表示檢測要創(chuàng)建的表是否已存在,如果不存在就繼續(xù)創(chuàng)建
#int(4) zerofill:表示若數(shù)值不滿4位數(shù),則前面用"0"填充,例0001
#auto_increment:表示此字段為自增長字段,即每條記錄自動遞增1,默認從1開始遞增;
自增長字段數(shù)據(jù)不可以重復(fù);自增長字段必須是主鍵;如添加的記錄數(shù)據(jù)沒有指定此字段的值且
添加失敗也會自動遞增一次
#unique key:表示此字段唯一鍵約束,此字段數(shù)據(jù)不可以重復(fù):一張表中只能有一個主鍵,但是一張表中可以有多個唯一鍵
#not null:表示此字段不允許為NULL
?
?高級操作
克隆表
克隆1
create table test like home; #復(fù)制格式,通過LIKE方法,復(fù)制yyy表結(jié)構(gòu)生成yyy2表
insert into test select * from home; #備份內(nèi)容克隆2,將數(shù)據(jù)表的數(shù)據(jù)記錄生成到新的表中
CREATE TABLE test02 (SELECT * from test); #復(fù)制test 表數(shù)據(jù)到test02中 直接復(fù)制到新表中show create table test02\G #獲取數(shù)據(jù)表的表結(jié)構(gòu)、索引等信息
SELECT * from test02;
?清空表
清空表,刪除表內(nèi)的所有數(shù)據(jù)
方法一:
delete from test2;
#DELETE清空表后,返回的結(jié)果內(nèi)有刪除的記錄條目;
DELETE 工作時是一行一行的刪除記錄數(shù)據(jù)的;
如果表中有自增長字段,使用DELETE FROM 刪除所有記錄后,再次新添加的記錄會從原來最大的記錄ID后面繼續(xù)自增寫入記錄。方法二:
truncate table home2;
#TRUNCATE清空表后,沒有返回被刪除的條目TRUNCATE 工作時是將表結(jié)構(gòu)按原樣重新建立,因此在速度上TRUNCATE會比DELETE清空表快;
使用TRUNCATE TABLE 清空表內(nèi)數(shù)據(jù)后,ID會從1開始重新記錄
???
?刪除命令的比較
速度:drop> truncate > delete
安全性:delete 最好
創(chuàng)建臨時表
臨時表創(chuàng)建成功之后,使用SHOWTABLES命令是看不到創(chuàng)建的臨時表的,臨時表會在連接退出
后被銷毀。
如果在退出連接之前,也可以可執(zhí)行增刪改查等操作,比如使用DROP TABLE語句手動直接刪除
臨時表。
PS:無法創(chuàng)建外鍵臨時表創(chuàng)建命令格式:
CREATE TEMPORARY TABLE 表名 (字段1 數(shù)據(jù)類型,字段2 數(shù)據(jù)類型[, ...]
[, PRIMARY KEY (主鍵名)]);
示例:
CREATE TEMPORARY TABLE `mytmp` (`id` int(10) NOT NULL AUTO_INCREMENT,`NAME` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`level` int(10) NOT NULL,PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into mytmp(name,level) values('aa',10);select * from mytmp;
MySQL中常見的約束
主鍵約束(primary key)
外鍵約束(foreign key)
非空約束(not null)
唯一性約束(unique [key|index])
默認值約束(default)
自增約束(auto_increment)
?什么是外鍵?
定義:如果同一個屬性字段x在表一中是主鍵,而在表二中不是主鍵,則字段x稱為表二的外鍵。
創(chuàng)建外鍵:約束作用(誤刪,修改),保證數(shù)據(jù)的完整性和一致性。
主鍵表和外鍵表的理解
(1)以公共關(guān)鍵字作主鍵的表為主鍵表(父表、主表)
(2)以公共關(guān)鍵字作外鍵的表為外鍵表(從表、外表)
注意:與外鍵關(guān)聯(lián)的主表的字段必須設(shè)置為主鍵。要求從表不能是臨時表,
主表外鍵字段和從表的字段具備相同的數(shù)據(jù)類型、字符長度和約束
#創(chuàng)建主表test04
create table test04 (hobid int(4),hobname varchar(50));#創(chuàng)建從表test05
create table test05 (id int(4) primary key auto_increment,
name varchar(10),age int(3),hobid int(4)) ;#為主表test04添加一個主鍵約束。主鍵名建議以"PK_”開頭。
alter table test04 add constraint PK_hobid primary key (hobid);#為從表test05表添加外鍵,并將test05表的hobid字段和test04表的hobid字段建立外鍵關(guān)聯(lián)。
外鍵名建議以"FK_”開頭。
alter table test05 add constraint FK_hob foreign key (hobid) references
test04 (hobid);#可以使用查詢表語句結(jié)構(gòu)命令查看外鍵關(guān)聯(lián)
show create table test05;desc test04;
desc test05;#插入新的數(shù)據(jù)記錄時,要先主表再從表
insert into test04 values(1,'runing');
insert into test05 values(1,'zhangsan',18,1);#刪數(shù)數(shù)據(jù)記錄時,要先從表再主表,也就是說刪除主鍵表時必須先刪除其他與之關(guān)聯(lián)的表。
drop tables test05;
drop tables test04;#查看和刪除外鍵約束
#如果要刪除外鍵約束字段先刪除外鍵約束,再刪除外鍵名
show create table test05;
alter table test05 drop foreign key FK_hob;
alter table test05 drop key FK_hob;
desc test05;