什么是關系型數據庫,是建立在關系模型基礎上的數據庫。關系模型就是指二維模型,即以行和列的形式存儲數據。
SQL的分類:
DDL(Data Defintion Language):數據定義語言CREATE、ALTER、DROP等
DML(Data Manipulation Language):數據操作語言SELECT、UODATE、INSERT、DELETE等
DCL(Data Control Language):數據控制語言GRANT、COMMIT、ROLLBACK
數據庫的相關操作
創建數據庫:create database dbName character set utf8(字符集);
切換數據庫:use dbName;
查看數據庫服務器中所有的數據庫:showdatabases
查看某個數據庫的定義信息:showcreate database dbName;
查看當前正在使用的數據庫信息:selectdatabase();
刪除數據庫:dropdatabase dbName;
修改數據的字符集:alter database dbName character set gbk(新字符集);
表的相關操作
創建表
createtable表名(字段名 類型(長度)約束,字段名 類型(長度)約束,……);
約束(單表約束)
主鍵約束:primary key(默認就是唯一非空的)
唯一約束:unique
非空約束:not null
查看數據庫中有哪些表:show tables;
查看表結構:desc表名;
查看表信息:show create table表名;
刪除表:drop table表名;
改表名:rename table舊表名to新表名;
修改表的結構語法格式:alter table表名 關鍵字
關鍵字有以下幾個:
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,…);
注意事項:列名的個數與值的個數對應.
列的類型與值的類型對應,位置也要對應。
類的類型如果是字符串或者日期,寫值的時候使用單引號將值引起來.
插入的值的最大長度不能超過列的最大長度.
修改記錄: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表名
關于delete與truncate的區別?(筆試題)
1.delete是一行一行刪除truncate是將表結構銷毀,在重新創建表結構.
如果數據比較多,truncate的性能高。
2.delete是dml語句
truncatedcl語句
delete是受事務控制.可以回滾數據.
truncate是不受事務控制.不能回滾.
查詢操作
查詢指定的列:select字段from表名
查詢只當字段信息(多列) select字段1,字段2,… from表名;
查詢所有列:select * from表名;
去掉重復記錄:select distinct字段from表名;(去重)
條件查詢
where條件種類:
1.比較運算符
> >= < <= = !=(<>)
2.邏輯運算符
andornot
3.between ...and
相當于>= and <=
注意:between后面的值必須是小值and后面的是大值
4.in
可以比較多個值
5.like
模糊查詢
通配符使用:
1.%匹配多個
2._匹配一個
6.null值操作
is null;判斷為空
is not null;判斷不為空
排序order by
orderby字句是select的最后一個子句。
asc升序(默認)
desc降序
聚合函數
count:統計指定列不為NULL的記錄行數;
sum:計算指定列的數值和,如果指定列類型不是數值類型,那么計算結果為0;
max:計算指定列的最大值,如果指定列是字符串類型,那么使用字符串排序運算;
min:計算指定列的最小值,如果指定列是字符串類型,那么使用字符串排序運算;
avg:計算指定列的平均值,如果指定列類型不是數值類型,那么計算結果為0;
分組操作
分組查詢是指使用group by字句對查詢信息進行分組,例如:我們要統計出products表中所有分類商品的總數量,這時就需要使用group by來對products表中的商品根據category進行分組操作.
分組后我們在對每一組數據進行統計。
分組操作中的having子名是用于在分組后對數據進行過濾的,作用類似于where條件。
筆試題: having與where的區別:
1.having是在分組后對數據進行過濾.
where是在分組前對數據進行過濾
2.having后面可以使用分組函數(統計函數)
where后面不可以使用分組函數。