使用SQL
⒈ SQL對數據庫進行操作
⑴ 創建數據庫
create database 數據庫名稱 [character set 字符集 collate 字符集校對規則];
⑵ 查看數據庫
查看數據庫服務器中所有的數據庫:show databases;
查看某個數據庫的定義信息: show create database 數據庫名稱;
⑶ 修改數據庫
alter database 數據庫名稱 character set 字符集 collate 校對規則;
⑷ 刪除數據庫
drop database 數據庫名稱;
⑸ 其他數據庫操作
切換數據庫:use 數據庫名稱;
查看當前正在使用的數據庫:
⒉ SQL對數據庫表進行操作
⑴ SQL創建表
① 語法:create table 表名稱(字段名稱 字段類型(長度) 約束,字段名稱 字段類型(長度) 約束…);
② 字段類型:一個實體對應一個表,一個實體屬性對應表的一個字段。
② char和varchar的區別
* char代表是固定長度的字符或字符串。定義類型char(8),向這個字段存入字符串hello,那麼數據庫使用三個空格將其補全。
* varchar代表的是可變長度的字符串。定義類型varchar(8), 向這個字段存入字符串hello,那麼存入到數據庫的就是hello。
④ datetime和timestamp區別
* datetime就是既有日期又有時間的日期類型,如果沒有向這個字段中存值,數據庫使用null存入到數據庫中
* timestamp也是既有日期又有時間的日期類型,如果沒有向這個字段中存值,數據庫使用當前的系統時間存入到數據庫中。
⑤ 約束
⑥ 建表語句示例:
create database web_test1;
use web_test1;
create table user(
id int primary key auto_increment,
username varchar(20) unique,
password varchar(20) not null,
age int,
birthday date
);
⑵ SQL查看錶
① 查看某個數據庫下的所有的表
語法:show tables;
② 查看某個表的結構信息
語法:desc 表名;
⑶ SQL刪除表
drop table 表名;
⑷ SQL修改表
① 修改表:添加列
alter table 表名 add 列名 類型(長度) 約束;
② 修改表:修改列類型,長度和約束
alter table 表名 modify 列名 類型(長度) 約束;
③ 修改表:刪除列
alter table 表名 drop 列名;
④ 修改表:修改列名稱
alter table 表名 change 舊列名 新列名 類型(長度) 約束;
⑤ 修改表:修改表名
rename table 表名 to 新的表名;
⑥ 修改表:修改表的字符集
alter table 表名 character set 字符集;
⒊ SQL對數據庫表的記錄進行操作
⑴ SQL添加表的記錄
① 語法:
② 注意事項
值的類型與數據庫中表列的類型一致。
值的順序與數據庫中表列的順序一致。
值的最大長度不能超過列設置最大長度。
值的類型是字符串或者是日期類型,使用單引號引起來。
③ 添加記錄
添加某幾列:insert into user (id,username,password) values (null,'aaa','123');
添加所有列:insert into user values (null,'bbb','123',23,'1993-09-01');
④ 添加中文記錄
備註:直接向數據庫中插入中文記錄會出現錯誤!!!
解決方法:
show variables like '%character%'; --查看數據庫中與字符集相關參數:
需要將MySQL數據庫服務器中的客戶端部分的字符集改爲gbk。
找到MySQL的安裝路徑:my.ini文件,修改文件中[client]下的字符集
重新啓動MySQL的服務器:services.msc
⑵ SQL修改表的記錄
① 語法: update 表名 set 列名=值,列名=值 [where 條件];
② 注意事項
值的類型與列的類型一致。
值的最大長度不能超過列設置的最大長度。
字符串類型和日期類型添加單引號。
③ 修改某一列的所有值
④ 按條件修改數據
⑤ 按條件修改多個列
⑶ SQL刪除表的記錄
① 語法:
delete from 表名 [where 條件];
② 注意事項
刪除表的記錄,指的是刪除表中的一行記錄。
刪除如果沒有條件,默認是刪除表中的所有記錄。
③ 刪除某一條記錄
④ 刪除表中的所有記錄
備註:刪除表中的記錄有兩種做法!!!
方法一:delete from user;
刪除所有記錄,屬於DML語句,一條記錄一條記錄刪除。事務可以作用在DML語句上的
方法二:truncate table user;
刪除所有記錄,屬於DDL語句,將表刪除,然後重新創建一個結構一樣的表。事務不能控制DDL的
⑷ SQL查看錶的記錄
① 基本查詢
語法:select [distinct] *|列名 from 表 [條件];
環境的準備:
create table exam(
id int primary key auto_increment,
name varchar(20),
english int,
chinese int,
math int
);
insert into exam values (null,'張三',85,74,91);
insert into exam values (null,'李四',95,90,83);
insert into exam values (null,'王五',85,84,59);
insert into exam values (null,'趙六',75,79,76);
insert into exam values (null,'田七',69,63,98);
insert into exam values (null,'李老八',89,90,83);
查詢所有學生考試成績信息
查詢所有學生的姓名和英語成績
查詢英語成績信息(不顯示重複的值)
查看學生姓名和學生的總成績
別名查詢
② 條件查詢
查詢李四學生的成績:
查詢名稱叫李四學生並且英文大於90分
查詢姓李的學生的信息
like可以進行模糊查詢,在like子句中可以使用_或者%作爲佔位符。_只能代表一個字符,而%可以代表任意個字符。
* like ‘李_’ :名字中必須是兩個字,而且是姓李的。
* like ‘李%’ :名字中姓李的學生,李子後可以是1個或任意個字符。
* like ‘%四’ :名字中以四結尾的。
* like ‘%王%’ :只要名稱中包含這個字就可以。
查詢英語成績是69,75,89學生的信息
③ 排序查詢(使用order by 字段名稱 asc/desc;)
查詢學生信息,並且按照語文成績進行排序:
查詢學生信息,並且按照語文成績倒序排序:
查詢學生信息,先按照語文成績進行倒序排序,如果成績相同再按照英語成績升序排序
查詢姓李的學生的信息,按照英語成績降序排序
④分組統計查詢(聚合函數使用)
sum();
獲取所有學生的英語成績的總和:
獲取所有學生的英語成績和數學成績總和:
查詢姓李的學生的英語成績的總和
查詢所有學生各科的總成績:
count();
獲得學生的總數
獲得姓李的學生的個數
max();
獲得數學成績的最高分:
min();
獲得語文成績的最小值
avg();
獲取語文成績的平均值
⑤分組查詢
語法:使用group by 字段名稱;
環境準備
create table orderitem(
id int primary key auto_increment,
product varchar(20),
price double
);
insert into orderitem values (null,'電視機',2999);
insert into orderitem values (null,'電視機',2999);
insert into orderitem values (null,'洗衣機',1000);
insert into orderitem values (null,'洗衣機',1000);
insert into orderitem values (null,'洗衣機',1000);
insert into orderitem values (null,'冰箱',3999);
insert into orderitem values (null,'冰箱',3999);
insert into orderitem values (null,'空調',1999);
按商品名稱統計,每類商品所購買的個數:
按商品名稱統計,每類商品所花費的總金額:
按商品名稱統計,統計每類商品花費的總金額在5000元以上的商品
按商品名稱統計,統計每類商品花費的總金額在5000元以上的商品,並且按照總金額升序排序
總結:S(select)… F(from)…W(where)…G(group by)…H(having)…O(order by);