什么是關(guān)系型數(shù)據(jù)庫荒叼,是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫。關(guān)系模型就是指二維模型坏晦,即以行和列的形式存儲數(shù)據(jù)嫁乘。
SQL的分類:
DDL(Data Defintion Language):數(shù)據(jù)定義語言CREATE、ALTER仓蛆、DROP等
DML(Data Manipulation Language):數(shù)據(jù)操作語言SELECT看疙、UODATE、INSERT能庆、DELETE等
DCL(Data Control Language):數(shù)據(jù)控制語言GRANT、COMMIT弥搞、ROLLBACK
數(shù)據(jù)庫的相關(guān)操作
創(chuàng)建數(shù)據(jù)庫:create database dbName character set utf8(字符集);
切換數(shù)據(jù)庫:use dbName;
查看數(shù)據(jù)庫服務(wù)器中所有的數(shù)據(jù)庫:showdatabases
查看某個數(shù)據(jù)庫的定義信息:showcreate database dbName;
查看當(dāng)前正在使用的數(shù)據(jù)庫信息:selectdatabase();
刪除數(shù)據(jù)庫:dropdatabase dbName;
修改數(shù)據(jù)的字符集:alter database dbName character set gbk(新字符集);
表的相關(guān)操作
創(chuàng)建表
createtable表名(字段名 類型(長度)約束,字段名 類型(長度)約束,……);
約束(單表約束)
主鍵約束:primary key(默認(rèn)就是唯一非空的)
唯一約束:unique
非空約束:not null
查看數(shù)據(jù)庫中有哪些表:show tables;
查看表結(jié)構(gòu):desc表名;
查看表信息:show create table表名;
刪除表:drop table表名;
改表名:rename table舊表名to新表名;
修改表的結(jié)構(gòu)語法格式:alter table表名 關(guān)鍵字
關(guān)鍵字有以下幾個:
1.add----添加列操作alter table表名add列名 類型;
2.modify--修改列的類型alter table表名modify列名類型;
3.drop --刪除列alter table表名drop列名.
4.change--修改列名稱alter table表名change舊列名新列名類型;
插入記錄:
插入指定列的值:insert into表名(列名1攀例,列名2顾腊,…) values (值1,值2);
插入指定列的值:insert into values(值1,值2冠骄,…);
注意事項:列名的個數(shù)與值的個數(shù)對應(yīng).
列的類型與值的類型對應(yīng)凛辣,位置也要對應(yīng)。
類的類型如果是字符串或者日期防泵,寫值的時候使用單引號將值引起來.
插入的值的最大長度不能超過列的最大長度.
修改記錄:update表名set列名1=值蝗敢,列名2=值where條件
例:1.將user表中所有人的password修改為”456”
updateuser set password = 456;
2.將user表名字叫tom的用戶email修改為tom@hang.cn
updateuser set email =tom@hang.cnwhere name = tom;
3.將tom的gender修改為”female”,并且introduce修改為”good girl”
Updateuser set gender = ‘female’ , introduce = ‘good gile’ where name = tom;
刪除記錄:delete from表名where條件
truncate table表名
關(guān)于delete與truncate的區(qū)別?(筆試題)
1.delete是一行一行刪除truncate是將表結(jié)構(gòu)銷毀,在重新創(chuàng)建表結(jié)構(gòu).
如果數(shù)據(jù)比較多锁右,truncate的性能高讶泰。
2.delete是dml語句
truncatedcl語句
delete是受事務(wù)控制.可以回滾數(shù)據(jù).
truncate是不受事務(wù)控制.不能回滾.
查詢操作
查詢指定的列:select字段from表名
查詢只當(dāng)字段信息(多列) select字段1痪署,字段2,… from表名余寥;
查詢所有列:select * from表名;
去掉重復(fù)記錄:select distinct字段from表名;(去重)
條件查詢
where條件種類:
1.比較運算符
> >= < <= = !=(<>)
2.邏輯運算符
andornot
3.between ...and
相當(dāng)于>= and <=
注意:between后面的值必須是小值and后面的是大值
4.in
可以比較多個值
5.like
模糊查詢
通配符使用:
1.%匹配多個
2._匹配一個
6.null值操作
is null;判斷為空
is not null;判斷不為空
排序order by
orderby字句是select的最后一個子句劈狐。
asc升序(默認(rèn))
desc降序
聚合函數(shù)
count:統(tǒng)計指定列不為NULL的記錄行數(shù);
sum:計算指定列的數(shù)值和莲兢,如果指定列類型不是數(shù)值類型续膳,那么計算結(jié)果為0;
max:計算指定列的最大值谒兄,如果指定列是字符串類型社付,那么使用字符串排序運算;
min:計算指定列的最小值燕鸽,如果指定列是字符串類型啼辣,那么使用字符串排序運算;
avg:計算指定列的平均值党远,如果指定列類型不是數(shù)值類型富弦,那么計算結(jié)果為0;
分組操作
分組查詢是指使用group by字句對查詢信息進行分組,例如:我們要統(tǒng)計出products表中所有分類商品的總數(shù)量,這時就需要使用group by來對products表中的商品根據(jù)category進行分組操作.
分組后我們在對每一組數(shù)據(jù)進行統(tǒng)計花沉。
分組操作中的having子名是用于在分組后對數(shù)據(jù)進行過濾的碱屁,作用類似于where條件蛾找。
筆試題: having與where的區(qū)別:
1.having是在分組后對數(shù)據(jù)進行過濾.
where是在分組前對數(shù)據(jù)進行過濾
2.having后面可以使用分組函數(shù)(統(tǒng)計函數(shù))
where后面不可以使用分組函數(shù)。