数据库类型:
- 关系型数据库(表与表之间存在关联的数据库)
Oracle、MySQL、SQL server - 非关系型数据库(表与表之间不存在关联的数据库)
mongodb、redis
mysql特点:开源、免费、不要钱、使用范围广、跨平台支持性好
RDBMS:关系型数据库管理系统
SQL语句主要分为:
- DQL:数据查询语言,用于对数据进行查询
- DML:数据操作语言,对数据进行增加、修改、删除
- TPL:事务处理语言,对事务进行处理
- DCL:数据控制语言,进行授权与权限回收
- DDL:数据定义语言,进行数据库、表的管理等
- CCL:指针控制语言,通过控制指针完成表的操作
字段类型:
- 整型:tinyInt Int
- 浮点型:float double
- 字符型:char(固定长度) varchar(不固定长度)
- 约束:UNSIGNED(无符号),PRIMARY KEY(主键)、AUTO_INCREMENT(自增长)、 not null(非空)、unique(唯一)、default(默认值)、foreign key(外键)
常用语句/注意点:
-
创建数据库:
CREATE TABLE LEBO11( id INT UNSIGNED PRIMARY KEY auto_increment, name VARCHAR(10), age INT UNSIGNED, height DECIMAL(5,2) );
5:5个数,2:小数点后2位 -
删除表:
DROP TABLE IF EXISTS LEBO11
-
注释:
ctrl+/
- 关键字要大写
-
插入数据:
INSERT INTO LEBO11 VALUES(10,'SANDRA',25,163)
,批量添加时,字段以逗号隔开 -
修改数据:
UPDATE STUDENTS SET name = '狄仁杰' WHERE id = 5
-
新增字段:
ALTER TABLE STUDENTS ADD isdelete INT(5) DEFAULT 0
-
删除字段:
ALTER TABLE STUDENTS DROP isdelete
-
查询:
SELECT A.name FROM STUDENTS AS A
-
去重:DISTINCT
SELECT DISTINCT SEX FROM STUDENTS;
-
比较运算:
SELECT * FROM STUDENTS WHERE age < 18;
SELECT * FROM STUDENTS WHERE age <> 18;
-
模糊查询:
SELECT * FROM STUDENTS WHERE name LIKE '_里_'
_代表单个字符,%代表多个字符 -
范围查询:
-
between and:
SELECT * FROM STUDENTS WHERE age between 12 and 23
-
IN:
SELECT * FROM STUDENTS WHERE hometown IN('北京','上海')
-
between and:
-
空判断:
SELECT * FROM STUDENTS WHERE card is NULL OR card =' ';
-
排序:
SELECT * FROM STUDENTS ORDER BY age ASC,studentNo DESC;
-
聚合函数:
SELECT max(age) FROM STUDENTS
-
分组:
select sex,count(*) from STUDENTS group by sex
-
筛选:
select sex,count(*) from STUDENTS group by sex HAVING sex='男'
-
限制查询:
SELECT * FROM STUDENTS LIMIT 0,3
- 分页查询:
//每页显示M条数据,显示第N页数据
SELECT * FROM STUDENTS LIMIT(n-1)*m,m
-
连接查询:当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回。
-
等值连接:查询的结果为两个表匹配到的数据(取交集)
方式一:SELECT Students.studentNo,Students.name,SCORES.studentno FROM Students,SCORES WHERE Students.studentNo = SCORES.studentno
方式二:SELECT * FROM students INNER JOIN scroes ON students.studentNo = score.studentno;
左连接:查询的结果为两个表匹配到的数据加左表特有的数据,对于右表中不存在的数据使用null填充
-
-
执行顺序:
select distinct * from 表名 where ... group by... having...order by... limit start,count 执行顺序为:
where...
group by...
select distinct *
having...
order by...
limit start,count
-
子查询:在一个select语句中,嵌入了另外一个select语句,那么被嵌入的select语句被称之为子查询语句
SELECT * FROM Students WHERE age >(SELECT AVG(age) FROM Students)