本文主要记录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 条件