1.1数据库基本概念
定义:数据库是指长期存储在计算机内、有组织的数据集合。表是数据库的基本单位,数据按照分类存储到不同的表中。数据库的通用语法能够帮助工作者有效调用相关数据。
(1)关系型数据库(RDBMS)
关系型数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据;
(2)关系型数据库主要产品
- Oracle:银行,电信等企业级系统;
- mysql:web和个人开发常用(社区型);
- SqlServer:微软系常用数据库;
- sqlite:轻量级数据库,用于移动平台;
(3)关系型数据库的核心元素
- 数据行(一条记录)
- 数据列(字段)
- 数据表(数据行的集合)
- 数据库(数据表的集合,一个数据库中能够有 n 多个数据表)
1.2SQL语言
(1)Structured Query Language(SQL)是在数据库中进行操作的语言,称为sql,结构化查询语言,当前关系型数据库都支持使用sql语言进行操作,也就是说可以通过 sql 操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库
(2)sql语言主要分为:
- DQL:数据查询语言,用于对数据进行查询,如select
- DML:数据操作语言,对数据进行增加、修改、删除,如insert、 udpate、 delete
- TPL:事务处理语言,对事务进行处理,包括begin transaction、 commit、 rollback
- DCL:数据控制语言,进行授权与权限回收,如grant、 revoke
- DDL:数据定义语言,进行数据库、表的管理等,如create、 drop
- CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
SQL 是一门特殊的语言,专门用来操作关系数据库,不区分大小写;
1.3MySQL数据表基本操作
(1)创建表
creat table 表名(
字段名 类型 约束,
字段名 类型 约束,
...
)
例:创建学生表,姓名(长度为10),年龄,身高(保留小数点2位)
creat table student(
id int unsigned primary key auto_increment,
name varchar(20),
age int unsigned,
height decimal(5,2)
)
(2)删除表
drop table if exists students
或者
drop table 表名
在select后面列前使用distinct可以消除重复的行
select distinct sex from students
(3)增删改查
- 简单查询
select * from 表名
- 添加数据
insert into student values(...)
或
insert into 表名(字段1,..) values(值1,..)
或
insert into 表名 values(...),(...),(...)
- 删除数据
delete from 表名 where 条件
例如:
delete from student where id=6
逻辑删除:对于重要的数据,不能轻易执行delete语句进行删除,一旦删除,数据无法恢复,这时可以进行逻辑删除。
1、给表添加字段,代表数据是否删除,一般起名isdelete, 0代表未删除, 1代表删除,默认值为0
2、当要删除某条数据时,只需要设置这条数据的isdelete字段为1
3、以后在查询数据时,只查询出isdelete为0的数据
例:
1、给学生表添加字段(isdelete),默认值为0,如果表中已经有数据,需要把所有数据的isdelete字段更
新为0
update students set isdelete=0
2、删除id为1的学生
update students set isdelete=1 where id=1
3、查询未删除的数据
select * from students where isdelete=0
- 修改数据
update 表名 set 列1=值1,列2=值2,...where 条件
例如:
update students set name='A',age=20 where id=2
1.4条件
- 使用where子句对表中的数据筛选,符号条件的数据会出现在结果集中,语法如下:
select 字段1,字段2... from 表名 where 条件;
例:
select * from students where id=1;
- where后面支持多种运算符,进行条件的处理
- 比较运算
- 逻辑运算
- 模糊查询
- 范围查询
- 空判断
a) 比较运算符
- 等于: =
- 大于: >
- 大于等于: >=
- 小于: <
- 小于等于: <=
- 不等于: != 或 <>
例1:查询小乔的年龄
select age from students where name='小乔'
例2:查询20岁以下的学生
select * from students where age<20
例3:查询家乡不在北京的学生
select * from students where hometown!='北京'
b) 逻辑运算符
- and
- or
- not
例1:查询年龄小于20的女同学
select * from students where age<20 and sex='女'
例2:查询女学生或'1班'的学生
select * from students where sex='女' or class='1班'
例3:查询非天津的学生
select * from students where not hometown='天津'
c)模糊查询
- like
- %表示任意多个任意字符
- _表示一个任意字符
例1:查询姓孙的学生
select * from students where name like '孙%'
例2:查询姓孙且名字是一个字的学生
select * from students where name like '孙_'
例3:查询叫乔的学生
select * from students where name like '%乔'
例4:查询姓名含白的学生
select * from students where name like '%白%'
d) 范围查询
- in表示在一个非连续的范围内
例1:查询家乡是北京或上海或广东的学生
select * from students where hometown in('北京','上海','广东')
between ... and ...表示在一个连续的范围内
例2:查询年龄为18至20的学生
select * from students where age between 18 and 20
e)空判断
- 注意: null与''是不同的
- 判空is null
- 判非空is not null
例1:查询没有填写身份证的学生
select * from students where card is null
例2:查询填写了身份证的学生
select * from students where card is not null