高明專業(yè)網(wǎng)站建設(shè)報(bào)價(jià)青海百度關(guān)鍵詞seo
數(shù)據(jù)庫的列類型
int:整型 ? ? ? ? ? ? ? ? ? ? ?用于定義整數(shù)類型的數(shù)據(jù)
float:單精度浮點(diǎn)4字節(jié)32位 ? ? ? ?準(zhǔn)確表示到小數(shù)點(diǎn)后六位 ? ? ? ?
double:雙精度浮點(diǎn)8字節(jié)64位
char:固定長度的字符類 ? ? ? 用于定義字符類型數(shù)據(jù),固定10字節(jié),如果你設(shè)定5字節(jié),顯示還是10字節(jié)
#Char如果存入數(shù)據(jù)的實(shí)際長度比指定長度要小,會(huì)補(bǔ)空格至指定長度,如果存入的數(shù)據(jù)的實(shí)際長度大于指定長度,低版本會(huì)被截取,高版本會(huì)報(bào)錯(cuò)
varchar:可變長度的字符類型 ? ? ? ? ? ? ? ? 固定10字節(jié),如果你設(shè)定5字節(jié),顯示就是5字節(jié)
text:文本
image:圖片
decimal(5,2):5個(gè)有效長度數(shù)字,小數(shù)點(diǎn)后面有2位 ? ? ? ?指定長度數(shù)組?
?
數(shù)據(jù)庫基本操作
SQL語言規(guī)范
在數(shù)據(jù)庫系統(tǒng)中,SQL 語句不區(qū)分大小寫,建議用大寫
SQL語句可單行或多行書寫,默認(rèn)以 " ; " 結(jié)尾
關(guān)鍵詞不能跨多行或簡寫
用空格和TAB 縮進(jìn)來提高語句的可讀性
子句通常位于獨(dú)立行,便于編輯,提高可讀性
SQL語句分類
DDL: Data Defination Language 數(shù)據(jù)定義語言,用于創(chuàng)建數(shù)據(jù)庫對象,用于數(shù)據(jù)庫的操作,如庫、表、索引等。eg:create、drop、alter。
數(shù)據(jù)庫相關(guān)操作(查show、增create、刪drop):
1、查看數(shù)據(jù)庫信息:show database;
2、創(chuàng)建數(shù)據(jù)庫:create database 數(shù)據(jù)庫名;
3、刪除數(shù)據(jù)庫:drop database 數(shù)據(jù)庫名;
?
DML: Data Manipulation Language 數(shù)據(jù)操縱語言,用于對表中的數(shù)據(jù)進(jìn)行管理,用來插入、刪除、修改數(shù)據(jù)庫中的數(shù)據(jù)。eg:insert、delete、update。
DQL:數(shù)據(jù)查詢語言,用于從數(shù)據(jù)表中查找符合條件的數(shù)據(jù)記錄。eg:select。
DCL:數(shù)據(jù)控制語言,用于設(shè)置或者更改數(shù)據(jù)庫用戶或角色權(quán)限(數(shù)據(jù)控制語句,用于控制語句,用于控制不同數(shù)據(jù)段直接的許可和訪問級別的語句,這些 語句定義了數(shù)據(jù)庫、表、字段、用戶的訪問權(quán)限和安全級別,如commit、follback、grant、revoke)
查看表,使用表
進(jìn)入mysql的方法
mysql -u root -p
查看當(dāng)前數(shù)據(jù)庫
show databases;
進(jìn)入指定表
#進(jìn)入指定的mysql表中
use mysql
查看表名
show tables;
查看表的結(jié)構(gòu)
describe user;
管理數(shù)據(jù)庫
創(chuàng)建數(shù)據(jù)庫和表
#創(chuàng)建數(shù)據(jù)庫
create database qzz;
#創(chuàng)建表
CREATE TABLE 表名 (字段1 數(shù)據(jù)類型,字段2 數(shù)據(jù)類型[,...][,PRIMARY KEY (主鍵名)]);use qzz; #創(chuàng)建一個(gè)info表,id int類型,name char類型,長度不能超過10且不能為空,age int型,sex char型,長度為4,sorce一共五位。保留小數(shù)點(diǎn)后兩位
create table info mysql> create table info(id int,name char(10) not null,age int,sex char(4),sorce decimal(5,2));#查看表結(jié)構(gòu)
desc info;
刪除數(shù)據(jù)庫和表
#進(jìn)入指定的數(shù)據(jù)庫內(nèi)刪除表
drop table qzz;#在數(shù)據(jù)庫外刪除
drop table qzz.qzz;
刪除指定數(shù)據(jù)庫
DROP DATABASE 數(shù)據(jù)庫名;
mysql> drop database cfs;
向數(shù)據(jù)表中添加數(shù)據(jù)
#向數(shù)據(jù)表中插入新的數(shù)據(jù)記錄
insert into 表名(字段1,字段2,字段3) values(字段1的值,字段2的值,字段3的值);insert into info(id,name,age,sex,sorce) values(1,'陳fs',20,'男',95.5);
insert into info(id,name,age,sex,sorce) values(2,'喬zz',20,'女',79);#查看info表
select * from info;
#直接使用表明加入字段,每個(gè)字段都要添加
insert into info values(3,'丁xl',24,'男',60.01);
#可以指定字段添加,沒有添加的就是默認(rèn)值NULL
insert into info(id,name,age)values(4,'袁ht',26);
查詢數(shù)據(jù)表中數(shù)據(jù)
#格式
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 條件表達(dá)式];#示例1:查看所有數(shù)據(jù)
select * from info;
#查詢指定數(shù)據(jù)
select name from info where id=1;
#只顯示前兩行
select * from info limit 2;
select * from info where id<=2;
只顯示3-4行
select * from info limit 2,2;
select * from info where id>2 and id<=4;
修改數(shù)據(jù)表的數(shù)據(jù)
#格式
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 條件表達(dá)式]; #修改名字
UPDATE info SET name='qzz' WHERE id=2;
刪除數(shù)據(jù)表中數(shù)據(jù)
#格式:
DELETE FROM 表名 [WHERE 條件表達(dá)式];#刪除表中id為4的數(shù)據(jù)
delete from info where id=4;
修改表明和表結(jié)構(gòu)
格式:
ALTER TABLE 舊表名 RENAME 新表名;#將表名info修改成base
alter table info rename base;
擴(kuò)展表結(jié)構(gòu)(增加字段)
#default 'default值':表示此字段設(shè)置默認(rèn)值 地址未填寫!;可與 NOT NULL 配合使用
ALTER TABLE 表名 ADD address varchar(50) default 'default值';alter table base add address varchar(50) default 'china';
修改字段(列)名,添加唯一鍵
唯一鍵的作用,設(shè)置這個(gè)字段不能重復(fù),比如說身份證、手機(jī)號,一般不作為主鍵,但也不能重復(fù),就設(shè)置為唯一鍵#格式
ALTER TABLE 表名 CHANGE 舊列名 新列名 數(shù)據(jù)類型 [unique key];alter table base change id sid char(4) unique key;
刪除表中字段
#格式
ALTER TABLE 表名 drop 字段名;alter table base drop age;
克隆表
方法一:
#通過 LIKE 方法,復(fù)制 base 表結(jié)構(gòu)生成 test01 表
create table 新表 like 源表;
#導(dǎo)入數(shù)據(jù)
insert into 新表 (select * from 源表); 數(shù)據(jù)一樣,表結(jié)構(gòu)一樣create table test1 like base;
insert into test1 select * from base;
方法二:
create table 新表 (select * from 源表); 數(shù)據(jù)一樣,表結(jié)構(gòu)可能不一樣create table test2 (select * from base);
#獲取數(shù)據(jù)表的表結(jié)構(gòu)、索引等信息show create table base\G;
清空表
方法一:
#DELETE清空表后,返回的結(jié)果內(nèi)有刪除的記錄條目;DELETE工作時(shí)是一行一行的刪除記錄數(shù)據(jù)的;如果表中有自增長字段,使用DELETE FROM 刪除所有記錄后,再次新添加的記錄會(huì)從原來最大的記錄 ID 后面繼續(xù)自增寫入記錄。delete from 表名; 一條一條的刪除,效率較慢,自增長字段仍然會(huì)按照清空前的順序自增delete from test1
方法二:
TRUNCATE 清空表后,沒有返回被刪除的條目;TRUNCATE 工作時(shí)是將表結(jié)構(gòu)按原樣重新建立,因此在速度上 TRUNCATE 會(huì)比 DELETE 清空表快;使用 TRUNCATE TABLE 清空表內(nèi)數(shù)據(jù)后,ID 會(huì)從 1 開始重新記錄(相當(dāng)于格式化)truncate table 表名; 直接重置表,清空效率快,自增長字段會(huì)從1重新開始
truncate table test2;
臨時(shí)表
臨時(shí)表創(chuàng)建成功之后,使用SHOW TABLES命令是看不到創(chuàng)建的臨時(shí)表的,臨時(shí)表會(huì)在連接退出后被銷毀。 如果在退出連接之前,也可以可執(zhí)行增刪改查等操作,比如使用 DROP TABLE 語句手動(dòng)直接刪除臨時(shí)表。臨時(shí)表 create temporary table 表名 (....); 臨時(shí)表只能在當(dāng)前會(huì)話中有效,且退出當(dāng)前會(huì)話則會(huì)失效create temporary table test1(id int(4) zerofill primary key auto_increment,name varchar(10) not null,cardid int(18) not null unique key,score varchar(50));
外鍵約束
保證數(shù)據(jù)的完整性和一致性
外鍵的定義:如果同一個(gè)屬性字段x在表一中是主鍵,而在表二中不是主鍵,則字段x稱為表二的外鍵。主鍵表與外鍵表的理解:(1)以公共關(guān)鍵字作主鍵的表為主鍵表(父表、主表)(2)以公共關(guān)鍵字作為外鍵的表為外鍵表(從表、外表)與外鍵關(guān)聯(lián)的子表的字段必須設(shè)置為主鍵。要求主表外鍵字段和子表的字段具備相同的數(shù)據(jù)類型、字符長度和約束。主鍵表: alter table 表名 add primay key (主鍵字段);
外鍵表: alter table 表名 [constraint FK_外鍵別名] add foreign key (外鍵字段) references 主鍵表名 (主鍵字段);
插入數(shù)據(jù)時(shí),是先主表再外表;刪除數(shù)據(jù)時(shí),是先外表再主表
#創(chuàng)建主表prof
create table prof (pid int,pname char(10));#創(chuàng)建從表student
create table student (id int,name varchar(10),age int,proid int);#為主表prof添加一個(gè)主鍵約束,主鍵名建議以“PK_”開頭
alter table prof add primary key(pid);#為從表student添加外鍵,并將student表的proid字段和prof表的pid字段建立外鍵關(guān)聯(lián),外鍵名建議以“FK_”開頭
alter table student add constraint FK_PRO foreign key (proid) references proff(pid);必須先給主表插入數(shù)據(jù)后,從表才能插入
insert into prof values(1,'云計(jì)算');
insert into prof values(2,'大數(shù)據(jù)');
insert into prof values(3,'JAVA');
insert into prof values(4,'前端');
insert into prof values(5,'UI設(shè)計(jì)');給從插入數(shù)據(jù)
insert into student values(1,'yht',26,1);
insert into student values(1,'qzz',22,4);
insert into student values(1,'dxl',22,3);