本文主要记录MySQL中SQL语句常见的语法使用。
注:以下语法展示中中括号 ‘[]’ 里的内容是可选项
一、数据库表
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.某列名
三、数据增删改操作
# 插入数据
insert into 表名[(列名1,列名2,…)] values(a,b,…)
# 修改数据
update 表名 set 列名=表达式 [where 条件]
# 删除数据
delete from 表名 where 条件