目錄html
天天給本身一個但願,努力作好本身,不爲明天煩惱,不爲昨天嘆息。當夢想還在,告訴本身:努力,就總能碰見更好的本身!前端
1.建立數據庫語法:(命令行窗口操做)mysql
CREATE DATABASE DATABASENAME
示例:建立名爲MySQLTest的數據庫sql
CREATE DATABASE MySQLTest;
2.刪除數據庫語法:(命令行窗口操做)數據庫
DROP DATABASE DATABASENAME
示例:刪除名爲MySQLTest的數據庫服務器
DROP DATABASE MySQLTest;
1.整數類型:tinyint(微小的整數),smallint(小的整數),int(普通的整數),bigint(大的整數)
存儲的空間不一樣:tinyint只有一個字節,smallint有兩個字節,int有四個字節,bigint有8個字節數據庫設計
2.小數點的數據類型:定點數(decimal(p,s))和浮點數float(p,s)四個字節,double(p,s)八個字節。
定點數的小數點是固定的,而浮點數的小數點是不固定的,區別:定點數的小數點是固定的因此他的小數精度準確,
而浮點數的小數點是不固定的,因此浮點數的小數點的精度沒有定點數的精度準確度高。可是浮點數表示的範圍更大命令行
3.日期/時間類型:date(某個日期,不包含時間), time(一天當中某一個點數) datetime(連日期帶時間)設計
4.文本類型:char(固定長度的文本) ,varchar , text(是存儲大文本的數據類型)code
5.二進制的數據類型:bit(若是使用了bit類型,系統就會將數據存儲爲二進制的形式)
(1.數據庫設計基本步驟(分四個階段):
1.需求分析階段:分析客戶的業務和數據處理需求
2.概要設計階段:將需求設計成數據庫的E-R模型圖,確認需求信息的正確和完整
3.詳細設計階段:將E-R模型圖轉換爲多張表,進行邏輯設計,並應用數據量設計的三大範式進行審覈
4.代碼編寫階段:選擇具體數據庫進行物理實現,並編寫代碼實現前端應用
例子:
模型QQ遊戲大廳項目
1.需求分析:系統要記錄哪些信息?中國象棋,撲克遊戲和玩家的信息,分數信息等
2.數據表:遊戲表,玩家表,分數表
3.每一個表的字段
遊戲表 玩家表 分數表
1.編號 1.QQ號 1.遊戲編號
2.名稱 2.暱稱 2.玩家QQ
3.類型 3.性別 3.得分
4.難度 4.生日
5.手機號
將這些數據用E-R作一個模型實體關係圖
用長方形符號表示實體,通常是名詞 用圓形符號表示屬性,通常是名詞 用三角形符號表示關係,通常是名詞
2 範式:設計關係數據庫時,聽從不一樣的規範要求,設計出合理的關係型數據庫,
這些不一樣的規範要求被稱爲不一樣的範式,各類範式呈遞次規範,越高的範式數據庫冗餘越小
3 Dr E,F,codd最初定義了規範化的幾個級別,範式用以定義具備最小的冗餘的表結構
第一範式(1st NF)
若是每列都說不可再分的最小數據單元(也稱爲最小的原子單元),側知足第一範式(1NF)
第一範式的目標是確保每列的原子性
示例: 玩家QQ 地址 玩家QQ 國家 城市 12301 中國北京 -》修改成 12301 中國 北京 12302 美國紐約 12302 美國 紐約
第二範式(2nd NF)
若是一個關係知足1NF,而且除了主鍵覺得的其餘列,都徹底依賴於該主鍵,側知足第二範式(2NF)
第二範式要求每一個表只描述一件事情
示例: 遊戲 遊戲 字段 值 字段 值 遊戲編號 1 遊戲編號 1 遊戲名稱 3D桌球 遊戲名稱 3D桌球 -》修改成 遊戲類型 體育 遊戲類型 體育 遊戲難度 1 遊戲難度 1 勝者得分 100 難度獎勵 字段 值 遊戲難度 1 勝者得分 100
第三範式(3rd NF)
若是一個關係知足2NF,而且除了主鍵之外的其餘列都不傳遞依賴於主鍵列,側知足第三範式(3NF)
第三範式要求表中不存在冗餘字段
示例: 分數表 分數表 字段 值 字段 值 遊戲編號 1 遊戲編號 1 玩家QQ 12301 -》修改成 玩家QQ 12301 玩家暱稱 悟空 得分 2760 得分 2760
(2.使用客戶端建立數據表
步驟:
1.打開連接,選擇數據庫
2.右鍵選擇新建表
3.填寫表各個字段的名稱,數據類型,勾選是否容許空
4.保存表
(3.使用命令行的方式建立數據表
步驟:
1.從命令行窗口登陸MySQL
2.使用CREATE TABLE語句建立表
語法公式:
CREATE TABLE table_name{ col_name1 col_type[not null]. col_name1 col_type[not null]. ... }
(1.主鍵約束
1.約束的概念和做用(約束就是檢查官,檢查數據是否有重複的內容)
2.主鍵約束做用:保證明體完整性
3.PRIMARY KEY是檢查兩條表中的語句是否有重複
示例:爲玩家表的玩家QQ列添加主鍵約束
create table users( user_qq varchar(20) not null PRIMARY KEY, user_name varchar(50) not null, user_sex char(2) not null, user_birthday date not null, user_mobile char(11) not null )
(2.外鍵約束
1.外鍵約束做用,保證引用完整性
2.references關鍵字的意思是引用的意思。
示例:爲分數表添加外鍵約束
create table scores( user_qq varchar(20) not null references users(user_qq), gno int not null, score int not null )
(3.檢查約束
1.檢查約束做用,保證域完整性
2.check()關鍵字的意思是遊戲編號等要大於0,不然錯誤
例如:爲遊戲表添加檢查約束
create table games( gno int not null check(gno>0), gname varchar(50) not null, gtype varchar(20) not null )
(4.默認約束
1.做用:保證域完整性
2.DEFAULT'男'
(5.自增列
1.做用:保證明體完整性
2.AUTO_INCREMENT是自增列的關鍵字
例:爲遊戲表添加自增列
CREATE TABLE Games( GNO INT NOT NULL AUTO_INCREMENT, GName varchar(50) NOT NULL, GType varchar(20) NOT NULL }
查看錶的基本結構
語法:DESCRIBE/DESC TABLE_NAME
結果含義: Field:字段名 Type:字段類型 NULL:是否能夠爲空 Key:是否編制索引 Default:默認值 Extra:附加信息,如自增列
查看錶的詳細結構
語法:SHOW CREATE TABLE TABLE_NAME
格式化結果:SHOW CREATE TABLE TABLE_NAME\G
修改表名
語法:ALTER TABLE OLD_NAME RENAME TO NEW_NAME
示例: ALTER TABLE GAMES RENAME TO QQ_GAME
修改字段名
語法:ALTER TABLE TABLE_NAME CHANGE OLD_NAME NEW_NAME NEW_TYPE
示例: ALTER TABLE GAMES CHANGE GNO GAME_ID VARCHAR(20)
修改字段數據類型
語法:ALTER TABLE TABLE_NAME MODIFY COL_NAME NEW_TYPE
示例: ALTER TABLE GAMES MODIFY GNO VARCHAR(20)
添加和刪除字段
添加字段語法:ALTER TABLE TABLE_NAME ADD NEW_COL_NAME NEW_TYPE
刪除字段語法:ALTER TABLE TABLE_NAME DROP COL_NAME
增補約束
添加主鍵語法:ALTER TABLE TABLE_NAME ADD CONSTRAINT CON_NAME PRIMARY KEY(COL_NAME)
示例:ALTER TABLE USERS ADD CONSTRAINT PK_USERS_USERQQ PRIMARY KEY(USERQQ) 添加外鍵語法:ALTER TABLE F_TABLE ADD CONSTRAINT CON_NAME FOREIGN KEY(F_COL)REFERENCES M_TABLE(M_COL) 示例:ALTER TABLE SCORES ADD CONSTRAINT FK_SCORES_GAMES FOREIGE KEY(GNO)REFERENCES GAMES(GNO) 添加檢查約束語法:ALTER TABLE TABLE_NAME ADD CONSTRAINT CON_NAME CHECK(EXP) 示例:ALTER TABLE GAMES ADD CONSTRAINT CK_GAMES_GNO CHECK(GNO>0) 添加默認值語法:ALTER TABLE TABLE_NAME ALTER COL_NAME SET DEFAULT VALUE 示例:ALTER TABLE USERS ALTER USER_SEX SET DEFAULT'男'
刪除無關聯數據表
語法:DROP TABLE [IF EXISTS] TABLE_NAME1,TABLE_NAME2
示例:DROP TABLE SCORES
刪除有關聯數據表
先解除關聯關係語法:ALTER TABLE F_TABLE_NAME DROP FOREIGN KEY CON_NAME
刪除表:DROP TABLE TABLE1,TABLE2
爲全部列都插入值
語法:INSERT[INTO] TABLE_NAME VALUES(V1,V2...Vn)
特色--列值同數,列值同序
示例;INSERT INTO USERS VALUES('12301'.'周天'.'男','1982-02-01','1371111222')
爲特定列插入值
語法:INSERT[INTO] TABLE_NAME(COL1,COL2...COLn)VALUES(V1,V2...Vn)
特色:指定順序,列值對應
示例:INSERT INTO USERS(USER_QQ,USER_NAME,USER_MOBILE)VALUES('20020106','叮噹','13834561278')
一次性插入多條記錄
語法:INSERT[INTO] TABLE_NAME[(COL1,COL2...COLn)]VALUES(V1,V2...V1n),(V21,V22...V2n),(V23,V23...V3n)
示例:INSERT[INTO] USERS(USER_QQ,USER_NAME,USER_BIRTHDAY,USER_MOBILE) VALUES('20020106'.'周天','1980-07-08','1371111555'),('20025564'.'立飛','1983-09-08','1382111555')
修改所有數據
語法:UPDATE TABLE_NAME SET{COL_NAME=EXPRESSION}[...n]
示例1:把全部玩家的性別都改成男性
UPDATE USERS=SET USER_SEX='男'
示例2:把全部玩家的全部遊戲分數都增長100分 UPDATE SCORES SET SCORE=SCORE+100
修改特定數據
語法:UPOATE TABLE_NAME SET{COL_NAME=EXPRESSION}[...n]
WHERE CONDITION_EXPRESSION
示例:把QQ爲'12302'的玩家性別都改成女性 UPDATE USERS SET USER_SEX='女' WHERE USER_QQ='12302'
#### 十、刪除數據
使用DELETE命令刪除數據表中的數據
語法:DELETE[FROM] TABLE_NAME
[WHERE CONDITION_EXPRESSION]
示例:刪除玩家表中全部女性玩家的信息 DELETE FROM USERS WHERE USER_SEX='女'
使用TRUNCATE TABLE刪除數據
語法:TRUNCATE TABLE TABLE_NAME
示例:清空分數表中全部信息 TRUNCATE TABLE SCORES
查詢和提取數據的過程
1.客戶端與服務器交互
2.語法:SELECT COL1,COL2,...COLn
FROM TABLE1,TABLE2...TABLEn
[WHERE CONDITIONS][GROUP BY GROUP_BY_LIST]
HAVING CONDITIONS[ASC|DESC]]
3.SELECT的意思是:我要查詢或者顯示出哪幾個列的結果
FROM的意思是:這些列來源於哪些表
WHERE的意思是:符合部分條件的語句就寫上WHERE
GROUP BY的意思是:把查詢的結果進行分組
HAVING的意思是:統計結果
ORDER BY的意思是:把查詢的結果進行排序
1.查詢表的所有行和列
示例:查詢玩家表中所有的行和列 SELECT USER_QQ,USER_NAME,USER_SEX,USER_BIRTHDAY,USER_MOBILE FROM USERS
簡便的查詢表的所有行和列的方法
語法:SELECT *FROM USERS
2.查詢表的部分列
示例:從玩家表中查詢玩家QQ和暱稱
SELECT USER_QQ,USER_NAME FROM USERS
3.別名的使用
示例:從玩家表中查詢玩家QQ和暱稱,並顯示爲「玩家QQ」和「玩家暱稱」
SELECT USER_QQ AS'玩家QQ',USER_NAME AS'玩家姓名'
FROM USERS
4.DISTINCT關鍵字
做用:消除結果集中的重複行
示例:顯示參與了遊戲的玩家QQ,要求參與了多個遊戲的玩家不重複顯示QQ號
語法: SELECT DISTINCT USER_QQ FROM SCORES
5.LIMIT關鍵字 做用:指定結果集中數據的顯示範圍 示例:顯示玩家表中第三至第5條數據 語法:SELECT * FROM USERS LIMIT2,3