小白上手Mysql数据库指南~~
? ?數 據 庫 原 理 及 簡 單 操 作
?
?一、數據庫定義語言(DDL)及簡單操作
1、登錄數據庫
? ? ??
?????mysql -u root -p ? ? ? ? ?然后鍵入密碼
?
2、數據庫定義語言常用關鍵字
? ??
? ? ?create ?創建表
? ?? alter ? ? 修改表中對應的列
? ?? drop ? ? 刪除表TRUNCATE 刪除表中所有內容
?
3、數據庫的增刪查改
?
- 創建數據庫: create database chen;
- 刪除數據庫: drop database wang;
- 查看系統里面有哪些數據庫: show databases;
- 每一次進入一個數據庫的時候,都要用use 加上數據庫名字 ,表示使用它。
- 可用show create table chen;? ? //最后一個chen,為表名。可以查看創建該表時的一些設定屬性。
- 之后,便可以創建表了:比如:
?????create table Person1(personID int NOT NULL ? ? ? ? ? ? ? ? ? ? ? ? ??
?????AUTO_INCREMENT,PRIMARY KEY(personID),FirstName ? ??
?????varchar(15),LastName varchar(15),Age int);
- 也可以在int后面加上成績信息:score, float 等。 ? ?
- 刪除表:可以用drop table? chen;? ?最后為表名。
- 選中查看表格為:select * from chen; *表示表格所有內容,最后一個為表名
?
4、修改表的某一行----alter的使用
?
修改表:使用alter table 語句? 追加, 修改, 或刪除列的語法。
?
例如:
//增加一列
alter table persons add addr varchar(15); ?
//修改列名addr為addr1? ? ?
alter table persons change addr addr1 varchar(15); ?
//刪除表格中某一列
alter table score drop column chen; ? ? ? ?score為表名,chen為列名
注:關于數據庫常見數據類型后面補。
?
二、數據庫操縱語言(DML)
?
1、數據操縱語言常用關鍵字
? ? ?insert update delete ? ? ? ? ? ? ? ?//插入 ? 修改 ?? 刪除?
?
2、操縱語言的一些實例:
?
- //使用insert 語句向表中插入數據
-
- insert into persons (FirstName,LastName,Age) values('Peter','bob','40');
- //通過使用 update語句修改表中數據
? ? ?//語法為:set子句指示要修改哪些列和要給予哪些值。where子句指定應更新哪
? ? ? ?些行。如沒有where子句,則更新所有的行。
-
- update persons set LastName='sky' where personID=2;
- 要修改where處的personID=2所對應的LastName的值改為sky項。
- ?使用 delete語句刪除表中數據:是刪除的是where處設定的那一行。
-
- 如果不使用where子句,將刪除表中所有數據。Delete語句不能刪除某一列的值(可使用update)使用delete語句僅刪除記錄,不刪除表本身。
- ?delete from persons where personID=2;
?
?
? 注:如要刪除表,使用drop table語句。 同insert和update一樣,從一個表中刪除
? ? ? 記錄將引起其它表的參照完整性問題,在修改數據庫數據時,頭腦中應該始終不
? ? ? 要忘記這個潛在的問題。
?
?
三、簡單的數據查詢語言(DQL)
?
?
1、常用關鍵字: ? ? ? ? select
?
語法:Select 指定查詢哪些列的數據。
column指定列名。 *號代表查詢所有列。from指定查詢哪張表。distinct可選,指顯示結果時,是否剔除重復數據
?
2、Select的用法
?
在select語句中可使用表達式對查詢的列進行運算eg:可進行對應的加減乘除
select gongzi+score from score;
select gongzi*score from score;
?
在select語句中可使用as語句 來給對應的列起別名。
? ? ? ? select column as 別名 from 表名;
?
select語句使用order by 子句排序查詢結果。
select column1, column2. column3.. ? from? table; order by column asc|desc ? ? ? ?//asc? 遞增升序? ? ? //desc 表示降序?
?
語法:order by 指定排序的列,排序的列即可是表中的列名,也可以是select 語句后指定的列名。
asc 升序、desc 降序
order by子句應位于select語句的結尾
?
3、select語句在where子句中經常使用的運算符:
???????????????????????????????????????? ?
??
4、數據完整性簡介及主鍵的作用
?
數據完整性定義:
?
數據完整性主要分為以下三類:實體完整性: 規定表的一行(即每一條記錄)在表中是唯一的實體。實體完整性通過表的主鍵來實現。域完整性: 指數據庫表的列(即字段)必須符合某種特定的數據類型或約束。比如NOT NULL。參照完整性: 保證一個表的外鍵和另一個表的主鍵對應。
?
數據庫主鍵闡述:一個表只能有一個PRIMARY KEY約束,而且PRIMARY KEY約束中的列不能接受空值。由于 PRIMARY KEY 約束確保唯一數據,所以經常用來定義標識列。
?
主鍵的作用 : 1)保證實體的完整性;
2)加快數據庫的操作速度
3) 在表中添加新記錄時,會自動檢查新記錄的主鍵值,不允許該值與其他記錄的主鍵值重復。 4) 自動按主鍵值的順序顯示表中的記錄。如果沒有定義主鍵,則按輸入記錄的順序顯示表中的記錄。
?
創建外鍵例子:
create table pats(patID int NOT NULL AUTO_INCREMENT,PRIMARY KEY(patID),person1ID int default NULL,FOREIGN KEY (person1ID) REFERENCES persons(personID));
?
5、定義表的約束
?
定義表的約束:
?
定義主鍵約束 ? primary key:不允許為空,不允許重復(可以區分兩條記錄的唯一性)
?
刪除主鍵:alter table tablename drop primary key ;
定義主鍵自動增長 ? auto_increment
定義唯一約束 ? unique
定義非空約束 ? not null
定義外鍵約束 constraint ordersid_FK foreign key(ordersid) references orders(id),
?
?
四、數據庫常見的數據類型
?
?
?
五、數據查詢語言(實用篇)
?
?
1、連接查詢類別
?
交叉連接(cross join):不帶on子句,返回連接表中所有數據行的笛卡兒積。
?
內連接(inner join):返回連接表中符合連接條件及查詢條件的數據行。
?
外連接:分為左外連接(left out join)、右外連接(right outer join)。
與內連接不同的是,外連接不僅返回連接表中符合連接條件及查詢條件的數據行,也返回左表(左外連接時)或右表(右外連接時)中僅符合查詢條件但不符合連接條件的數據行。
?
例:交叉連接查詢CUSTOMER表和ORDERS表 SELECT * FROM customer CROSS JOIN orders;
?
2、內連接
?
內連接分三種:
1、等值連接:在連接條件中使用等于號(=)運算符比較被連接列的列值,其查詢結 果中列出被連接表中的所有列,包括其中的重復列。
例,下面使用等值連接列出authors和publishers表中位于同一城市的作者和出版社:select * from authors as a inner join publishers as p on a.city=p.city
?
2、不等連接: 在連接條件使用除等于運算符以外的其它比較運算符比較被連接的列的列值。這些運算符包括>、>=、<=、<、!>、!<和<>。
?
3、自然連接:在連接條件中使用等于(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,并刪除連接表中的重復列。
?
3、左外連接查詢
?
使用left outer join關鍵字,在on子句中設定連接條件
SELECT * FROM customer as c LEFT OUTER JOIN orders as o ON c.id=o.customer_id;
?
不僅包含符合c.id=o.customer_id連接條件的數據行,還包含左表中的其他數據行聯合查詢能夠合并兩條查詢語句的查詢結果,去掉其中的重復數據行,然后返回沒有重復數據行的查詢結果。
?
聯合查詢使用union關鍵字
eg:
SELECT * FROM orders WHERE price>100 UNION
SELECT * FROM orders WHERE customer_id=1;
注意:聯合查詢的各子查詢使用的表結構應該相同,同時兩個子查詢返回的列也應相同
?
4、報表查詢對數據行進行分組統計
?
其語法格式為: select …? from … [where…] [ group by … [having… ]] [ order by … ]其中group by 子句指定按照哪些字段分組,having子句設定分組查詢條件。
?
5、常見統計函數
?
count()? ? sum()? ? avg()? ? max()? ? min()
- Count(列名)返回某一列,行的總數(有多少條記錄)
- Select count(*)|count(列名) from tablename [WHERE where_definition]?? ? ? ? ?//其中|就是或者的意思
- Sum函數返回滿足where條件的行的和 ?
- Select sum(列名){,sum(列名)…} from tablename ? ? ? ? [WHERE where_definition]
- AVG函數返回滿足where條件的一列的平均值
- Select avg(列名){,avg(列名)…} from tablename ? ? ? ? [WHERE where_definition]??
- Max/min函數返回滿足where條件的一列的最大/最小值
- Select max(列名) from tablename [WHERE where_definition]?
?
6、group by 子句的使用
?
elect語句使用group by 子句對列進行分組
SELECT column1, column2. column3.. FROM? ? table; ? ? group by column
Select語句使用having 子句過濾
SELECT column1, column2. column3.. FROM? ? table; group by column having ...
?
7、數據庫備份
?
數據庫備份: cmd命令下 mysqldump -u root -p test>test.sql數據庫恢復:
?
創建數據庫并選擇該數據庫 在cmd命令下:mysql -u root -p test<test.sql
或者: 在mysql >命令行下 執行? SOURCE 數據庫文件
總結
以上是生活随笔為你收集整理的小白上手Mysql数据库指南~~的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL SERVER备份脚本
- 下一篇: source 1.5 中不支持 diam