每天給自己一個希望,努力做好自己,不為明天煩惱,不為昨天嘆息,當夢想還在,告訴自己:努力,就總能遇見更好的自己!
目錄
- MySql筆記(一)
- 1、創建資料庫以及洗掉
- 2、Sql常用資料型別
- 3、創建資料表以及范式
- 4、為佇列添加約束
- 5、查看表資料
- 6、修改資料表
- 7、洗掉資料
- 8、插入資料
- 9、修改資料
- 11、洗掉資料
- 12、洗掉資料
MySql筆記(一)
1、創建資料庫以及洗掉
1.創建資料庫語法:(命令列視窗操作)
CREATE DATABASE DATABASENAME
示例:創建名為MySQLTest的資料庫
CREATE DATABASE MySQLTest;
2.洗掉資料庫語法:(命令列視窗操作)
DROP DATABASE DATABASENAME
示例:洗掉名為MySQLTest的資料庫
DROP DATABASE MySQLTest;
2、Sql常用資料型別
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(是存盤大文本的資料型別)
5.二進制的資料型別:bit(如果使用了bit型別,系統就會將資料存盤為二進制的形式)
3、創建資料表以及范式
(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)
第三范式要求表中不存在冗余欄位
示例:
<b> 分數表</b> <b>分數表</b>
欄位 值 欄位 值
游戲編號 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].
...
}
4、為佇列添加約束
(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
}
5、查看表資料
查看表的基本結構
語法:DESCRIBE/DESC TABLE_NAME
結果含義:
Field:欄位名
Type:欄位型別
NULL:是否可以為空
Key:是否編制索引
Default:默認值
Extra:附加資訊,如自增列
查看表的詳細結構
語法:SHOW CREATE TABLE TABLE_NAME
格式化結果:SHOW CREATE TABLE TABLE_NAME\G
6、修改資料表
修改表名
語法: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'男'
7、洗掉資料
洗掉無關聯資料表
語法: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
8、插入資料
為所有列都插入值
語法: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')
9、修改資料
修改全部資料
語法: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'
#### 10、洗掉資料
使用DELETE命令洗掉資料表中的資料
語法:DELETE[FROM] TABLE_NAME
[WHERE CONDITION_EXPRESSION]
示例:洗掉玩家表中所有女性玩家的資訊
DELETE FROM USERS WHERE USER_SEX='女'
使用TRUNCATE TABLE洗掉資料
語法:TRUNCATE TABLE TABLE_NAME
示例:清空分數表中所有資訊
TRUNCATE TABLE SCORES
11、洗掉資料
查詢和提取資料的程序
1.客戶端與服務器互動
? 2.語法:SELECT COL1,COL2,...COLn
? FROM TABLE1,TABLE2...TABLEn
? [WHERE CONDITIONS][GROUP BY GROUP_BY_LIST]
? [HAVING CONDITIONS][ORDER BY ORDER_LIST][ASC|DESC]]
? 3.SELECT的意思是:我要查詢或者顯示出哪幾個列的結果
? FROM的意思是:這些列來源于哪些表
? WHERE的意思是:符合部分條件的陳述句就寫上WHERE
? GROUP BY的意思是:把查詢的結果進行分組
? HAVING的意思是:統計結果
? ORDER BY的意思是:把查詢的結果進行排序
12、洗掉資料
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
[ORDER BY ORDER_LIST]:
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/86031.html
標籤:MySQL
上一篇:快速回顧MySQL:匯總和分組
下一篇:MySql筆記(二)
