必知必會——SQL語句基本語法整理

陈晓猛發表於2024-03-14

一、資料庫表

1. 新建資料庫
2. 新建資料庫表
create table 表名(列名1 資料型別 [約束條件]
                ,列名2 資料型別 [約束條件]
                ,……
                )

'''
建立一個demo1表
a列資料型別為int,是主鍵
b列資料型別為char,該列的資料必須唯一不可重複
c列資料型別為短整型samllint, 該列必須非空
d列資料型別為可變字串,無約束條件
'''
create table demo1(a int primary key
                , b char(3) unique
                , c smallint not null
                , d varchar(30)
                )

'''
建立一個參照demo1的表demo2
demo2中的y列是參照了被參照表demo1中的主碼a
'''
create table demo2(x int primary key
                , y int
                , foreign key(y) references demo1(b)
                )

3. 資料庫表操作
  • 修改基本表
# 修改表名
alter table 表名 rename 新表名

# 新增列
alter table 表名 add [column] 新列名    資料型別    約束
# 示例,為demo1表新增一列e
ALTER TABLE demo1 ADD e INT not null

# 刪除列
alter table 表名 drop [column] 列名
# 示例,刪除demo1中的列e
alter table demo1 drop [column] e

# 修改列 
alter table 表名 modify column 列名 資料型別        # 修改資料型別
alter table 表名 change column 原始列名 新列名 資料型別    # 修改列名

  • 刪除基本表
drop table 表名
4. 資料庫表索引
# 建立索引
create index 索引名 on 表名(列名)    # 主鍵不能用create index建立索引
alter table 表名 ADD INDEX 索引名(列名)    # 修改表建立索引

# 修改索引
# mysql沒有修改索引的操作,可以先刪除原始索引再新建一個同名索引

# 刪除索引
ALTER TABLE 表名 DROP INDEX 索引名

二、資料查詢操作

# 列查詢
select 列名1[,列名2…] from 表名
select 列名 新列名 from 表名        # 可以修改查詢結果展示時候的列名

# 帶條件列查詢
select 列名 from 表名 where 查詢條件

# 消除取值重複的行
select distinct 列名 from 表名

# order by
select 列名 from 表名 where 查詢條件 order by 列名 [DESC|ASC]    # 對查詢結果進行排序,預設為ASC升序

# 聚集函式
'''
count(*)    #統計元組個數
count([distinct|all] 列名)     # 統計一列中值的個數(去重/全部)
sum([distinct|all] 列名)    # 計算一列的總和(數值型)
avg([distinct|all] 列名)    # 計算一列的平均值(數值型)
max([distinct|all] 列名)    # 求最大值
min([distinct|all] 列名)    # 求最小值
'''
select count(*) from 表名    # 查詢表中資料個數
select count(列名) from 表名        # 統計某一列的值的個數
select avg(列名) from 表名        # 統計該列的平均值

# group by子句
select 列名 from 表名 group by 列名        # 對查詢結果進行分組,該列中值相同的為一組
select 列名 from 表名 group by 列名 having 條件    # 條件查詢,再對查詢結果分組。where 與group by不能同用。

# 連線查詢
select 表1.列名…, 表2.列名… from 表1, 表2 where 表1.某列名=表2.某列名
# 示例:student存放學生資訊,course存放選課資訊,現在需要查詢學生對應的選課資訊(哪個學生選了哪門課)
select student.name, course.name from student, name where student.studentId=course.studenId

# 左外連線
select 表1.列名…, 表2.列名… from 表1 left outer join 表2 where 表1.某列名=表2.某列名

相關文章