二、结构化查询语言SQL
结构化查询语言(Structured Query Language 简称SQL ),是一种特殊的编程语言,用于存取数据以及查询、更新和管理关系型数据库。
SQL是一种高级的非过程化编程语言,用户使用SQL对数据操作时,并不需要知道数据的存储方式和操作细节。不同的关系型数据库底层存储方式不同,但是可以使用相同的SQL语句进行操作,对于用户来说,操作方式类似,可以快速在不同的数据库上进行移植。
SQL语言不仅可独立使用,还可嵌入到其他高级语言(如Java、Python等)中,两种方式下SQL语法结构基本一致,为用户提供了极大的灵活性和便利性。
(一)创建数据库表:create table [if not exists] 表名
语句格式:
create table if not exists 表名 (
列名1 数据类型,
列名2 数据类型,
列名3 数据类型,
....)
功能:创建一个指定表名的数据库表,存放列名(也称 属性、字段)的数据。
说明:建表前,如果不进行判断,此时,若已经存在同名的表,将会导致错误。
例:创建名为school 的数据名,属性有:学校代码,学校名称,所在省份,等。
create table if not exists school (
school_code char(6) primary key,
school varchar(50),
province varchar(30),
is_985 varchar(10),
is_211 varchar(10),
is_self_marking varchar(10),
school_type varchar(10)
)
(二)删除数据库表:drop table [if exists] 表名
例:drop table if exists school
说明:删除前,如果不进行判断,直接删除一个不存在的表时将会报错。
(三)查询语句:select 字段列表 from 表名 where 查询条件 group by 分组字段 order by 字段 [asc|desc]
字段列表:用于指定查询结果中所包含的列,可以是一组列名、表达式、星号等构成。多个列名之间用逗号隔开,如果查询所有列,可直接用星号表示。
例:查询学校的名称以及所在省份
select school, province from school
例:查询学校的所有信息
select * from school
例:统计各个省份的高校数量
select province, count(*) from school group by province
where子句用于设置查询条件过滤不需要的行,常见的条件运算符有:
(1)比较运算符:>、>=、=、<、<=、<>等
例:select * from school where province = "江西省"
(2)范围运算符:between… and …、not between … and … …
例:select * from school where school_code between "10404" and "10410"
(3)列表运算符:in (项1,项2……)、not in(项1,项2……)
例:select * from school where province in ("江西省","湖南省")
(4)逻辑运算符(多条件查询):not、and、or
例:select * from school where is_985="是" and is_211="是"
(5)模式匹配符(模糊查询):like、not like
例:select * from school where school like "%师范%"
group by 子句用于结合聚合函数,根据一个或多个列对结果集进行分组。
例:select province, count(*) as 学校数 from school group by province
常见的聚合函数有:sum(列名)、max(列名)、min(列名)、avg(列名)、count(列名) 。
order by子句 用于对查询返回的结果按一列或多列排序。asc表示升序,为默认值,desc为降序。
例:select province, count(*) as 学校数 from school group by province order by 学校数 desc
( 四)插入语句:insert into 语句用于向表格中插入新的行。
语法格式为:
insert into 表名 (字段1,字段2,字段3 ……) values (值1,值2,值3 ……)
例:insert into school(school, province) values(‘江西财经大学’,“江西省”)
注意:这里的字段顺序和对应值的顺序要一一对应。对于不允许为空的字段必须提供相应的值,否则插入时将会出错。如果插入的内容包含所有字段,则可以省略字段列表,但值的顺序一定和表中字段的顺序一致。
例:insert into school values (”10421”,”江西财经大学”,“江西省”,“否”,“否”,“否”,“财经类”)
(五)更新语句:update 语句用于对表中的某个或某些数据进行修改。
语法格式为:
update 表名 set 列名1 = 新值1, 列名2 = 新值2 where 子句
例:update school set school=“赣南师范大学” where school=“赣南师范学院”
(六)删除语句:delete 语句用于对表中的某个或某些数据进行删除。
语法格式为:
delete from 表名 where 子句
例:delete from school where province=“江西省”
注意:如果没有where子句,此时将会删除表中所有内容,此时,表中没有任何数据,但表结构仍然存在。注意和drop table的区别。

