摘自(https://blog.csdn.net/One_L_Star/article/details/97130887)
目錄
一、SQL 分類
二、數據庫操作
1、創建數據庫
2、查看數據庫
3、刪除數據庫
4、切換數據庫
三、表操作
1、創建表
2、主鍵約束
3、查看表
4、刪除表
5、修改表結構
6、插入表數據
7、更新表數據
8、刪除表數據
四、查詢語句
1、基本查詢
2、排序查詢
3、聚合查詢
4、分組查詢
一、SQL 分類
- 數據定義語言(DDL):用來定義數據庫對象 ==> 數據庫、表、列等。關鍵字:create、alter、drop 等
- 數據操作語言(DML):用來對數據庫中表的記錄進行更新。關鍵字:insert、delete、update 等
- 數據控制語言(DCL):用來定義數據庫的訪問權限和安全級別以及創建用戶
- 數據查詢語言(DQL):用來查詢數據庫中表的記錄。關鍵字:select、from、where 等
常用數據類型
二、數據庫操作
1、創建數據庫
create database 數據庫名; #默認編碼創建
create database 數據庫名 character set 字符集; #指定編碼創建
2、查看數據庫
show databases; #查看所有數據庫
show database 數據庫名; #查看某個數據庫定義的信息
select database(); #查看正在使用的數據庫
3、刪除數據庫
drop database 數據庫名; #刪除指定數據庫
4、切換數據庫
use 數據庫名; #切換指定數據庫
三、表操作
1、創建表
在創建表之前,先要指定在哪個數據庫中創建表,即先使用數據庫,使用:use 數據庫名;來指定
#創建表
create table 表名(
字段名 類型(長度) 約束,
字段名 類型(長度) 約束
);
eg:
#創建學生表
CREATE TABLE S(
Sno char(9) primary key, #主鍵約束
Sname varchar(8) not null,
Ssex char(2)
);
2、主鍵約束
主鍵是用於標識當前記錄的字段,是飛空的、唯一的,在開發過程中,主鍵是不具備任何含義,只是用於標識當前記錄,創建主鍵有兩種方法,一種是在創建表時,在字段后面加上 primary key;另一種是在創建表時,在表創建的最后來指定主鍵。
(1) 創建主鍵
- 在字段后面加上 primary key
create table tablename(
id int primary key, #字段后面加上主鍵約束
....
)
在表的最后指定主鍵
create table tablename(
id int,
....
primary key(id) #指定主鍵
)
(2) 刪除主鍵
alter table 表名 drop primary key;
alter table tablename drop primary key;
3、查看表
查看數據庫中所有表
show tables;
- 查看表結構:
desc 表名;
4、刪除表
drop table 表名;
5、修改表結構
(1) 修改表添加列
- alter table 表名 add 列名 類型(長度) 約束;
eg:為學生表 S 添加新的字段 Sage smallint
alter table S add Sage smallint;
(2) 修改表列的類型和長度以及約束
- alter table 表名 modify 列名 類型(長度) 約束;
eg:對學生表的 Sname 以及其長度和約束進行修改
alter table S modify Sname varchar(50) not null;
(3) 修改表列名
- alter table 表名 change 舊列名 新列名 類型(長度) 約束;
eg:對學生表的 Sname 列名修改為 Name varchar(20)
alter table S change Sname Name varchar(20);
(4) 修改表刪除列
- alter table 表名 drop 列名;
eg:對學生表的 Sage 進行刪除
alter table S drop Sage;
(5) 修改表名
- rename table 表名 to 新表名;
eg:修改表名 S 為 Student
rename table S to Student;
(6) 修改表的字符集
- alter table 表名 character set 字符集;
eg:將 Student 表編碼表改為 gbk
alter table Student character set gbk;
6、插入表數據
語法:
- insert into 表(列名1,列名2,列名3...) values (值1,值2,值3....); #向表中插入某些列
- insert into 表(值1,值2,值3...); #向表中插入所有列
eg:往學生表中插入數據
insert into Student(Sno,Sname,Ssex) values('15450132','一顆星','男');
insert into Student(Sno,Sname,Ssex) values('15450133','兩顆星','男');
insert into Student values('15450134','三顆星','男');
insert into Student values('15450135','四顆星','男');
注意:
- 插入的數據應與對應的數據類型相同
- 數據的大小應在列的長度范圍內
- 在 values 中列出的數據位置必須與被加入列的排列位置對應
- 除了數值類型外,其他的字段類型的值必須使用引號引起
- 如果要插入空值,可以不寫字段或者插入 null
- 對於自動增長的列操作時,直接插入 null 值即可
7、更新表數據
語法:
- update 表名 set 字段名=值,字段名=值;
- update 表名 set 字段名=值,字段名=值 where 條件;
eg:修改 Student 學生表中的 Sname 中的值
update Student set Sname='星星';
update Student set Sname='派大星' where Sno='15450132';
注意:
- 列名的類型與修改的值要一致
- 修改值的時候不能超過最大長度
- 值如果是字符串或者日期需要加 ‘ ’
8、刪除表數據
語法:
- delete from 表名 [where 條件];
- truncate table 表名;
eg:刪除表中數據
delete from Student where Sname='派大星'; #刪除一條數據
truncate table Student; #刪除表中所有數據
delete from Student; #刪除表中所有數據
四、查詢語句
1、基本查詢
(1) 查詢指定字段
- select 字段1,字段2,...from 表名;
select Sno,Sname from Student;
(2) 查詢表中所有字段
- select * from 表名;
select * from Student;
(3) 除去重復記錄查詢
- select distinct 字段 from 表名;
select distinct Sname from Student;
(4) 別名查詢
別名可以給表中的字段,表設置別名,在查詢語句復雜的時候,使用別名極大的簡便操作
- select * from 表名 as 別名;
- select * from 表名 別名;
- select 字段名 as 別名 from 表名;
- select 字段名 別名 from 表名;
2、排序查詢
使用 order by 進行升序降序排序
- select * from 表名 order by 字段 ASC; #升序(默認)
- select * from 表名 order by 字段 DESC; #降序
select * from Student order by Sage asc; #升序
select * from Student order by Sage desc; #降序
3、聚合查詢
聚合函數查詢是縱向查詢,它是對一列的值進行計算,然后返回一個單一的值,聚合函數會忽略空值,列出五個常用的聚合函數。
- count:統計指定列不為NULL的記錄行數
- sum:計算指定列的數值和
- max:計算指定列的最大值
- min:計算指定列的最小值
- avg:計算指定列的平均值
#查詢學生表中有多少條記錄
select count(*) from Student;
#查詢學生表中年齡大於15歲的有多少條記錄
select count(*) from Student where Sage>15;
#查詢學生表中所有年齡的總和
select sum(Sage) from Student;
#查詢學生表中最大和最小的年齡
select max(Sage),min(Sage) from Student;
#查詢學生表中所有年齡的平均值
select avg(Sage) from Student;
4、分組查詢
分組查詢是指使用group by字句對查詢信息進行分組,格式如下:
- select 字段1,字段2......from 表名 group by 字段 having 條件;
eg:對學生表分姓名統計,求出每個學生對應姓名的年齡
select Sname,sum(Sage) from Student group by Sname;
————————————————
版權聲明:本文為CSDN博主「oneLstar」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/One_L_Star/article/details/97130887