一、数据库的概念:
1、数据库能够做什么
(1)存储大量数据,方便检索和访问
(2)保持数据信息的一致和完整
(3)共享和安全
(4)通过组合分析,产生新的有用数据
2、数据(Data)的定义:
(1)对客观事物的符号表示,如图形符号、数字、字母等,数据是数据库中存储的基本对象
(2)在日常生活中,人们直接用语言来描述事物;在计算机中,为了存储和处理这些事物,就要将事物的特征抽象出来组成一个记录来描述
3、数据库表的创建
create table +表名
例子:
create table student(
id int(11) not null auto_increment,
sname VARCHAR(255) not null,
sex VARCHAR(255) not null,
school VARCHAR(255) not null,
PRIMARY KEY (id)
)
auto_increment 自增
PRIMARY KEY (id) 设置主键
not null 设置为非空
二、表名和列名的命名规则:
(1)必须以字母开头,不要使用汉字
(2)必须在 1–30 个字符之间
(3)必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
(4)必须不能和用户定义的其他对象重名
1、主键约束
(1)确定哪些列唯一的标识了各个记录,主键不能为Null,并且数据值必须唯一
注意:①一个表只能有一个主键,但是一个主键可以包含多个列;
②在某些约束的创建过程中由于一个表只有一个此类约束,故约束名的设置可以省略。当约束名不写的时候,数据库系统会为这个约束创建一个自定义的约束名。
(2)自动增长
n AUTO_INCREMENT是MySQL数据库中一个特殊的约束条件。
n 其主要用于表中插入的新记录自动生成唯一ID。一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。
n AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT、SMALLINT、INT和BIGINT等)。默认情况下,该字段的值是从1开始自增。
DDL:数据库定义语言,比如创建、修改或删除数据库对象,包括如下SQL语句:
l CREATE TABLE:创建数据库表
l ALTER TABLE:更改表结构、添加、删除、修改列长度
l DROP TABLE:删除表
l CREATE INDEX:在表上建立索引
l DROP INDEX:删除索引
查询表的语句 show tables;
例子:
DML:数据库操纵语言,包括如下SQL语句:
l INSERT:添加数据到数据库中
l UPDATE:修改数据库中的数据
l DELETE:删除数据库中的数据
l SELECT:选择(查询)数据
SELECT是SQL语言的基础,最为重要。
DCL:数据库控制语言,包括如下SQL语句:
l GRANT:授予访问权限
l REVOKE:撤销访问权限
l COMMIT:提交事务处理
l ROLLBACK:事务处理回退
2、创建语句
设置自增,或者,设置默认值
要求会手写的语句
drop TABLE if EXISTS student;
/**数据库表的创建,create table +表名*/
create table student(
id int(11) not null auto_increment,
sname VARCHAR(255) not null,
sex VARCHAR(255) not null,
school VARCHAR(255) not null default 'zzxy',
PRIMARY KEY (id)
)
show tables;
/**insert into +表名 values(所有的字段)*/
insert INTO student values(1,'zhang','male','jnyxy');
insert into student (sname, sex,school) values ('li','female','sdlg');
insert into student (sname, sex) values ('yang','female');
三、注意事项
1、增删改的insert注意事项:
1. 值列表的个数必须与列名数目保持一致;
2.可以进行多条添加,添加完每条数据后,用逗号隔开即可;
3. 值列表中值的数据类型、精度要与对应的列类型保持一致,例如:不能将一个长度为80的字符串加入到长度为40的列中;
4. 可以不指定列名,但值列表中值的顺序应该与表中字段顺序保持一致;
5.字符和日期型数据应包含在单引号中。
6. 值列表中的数据项,应符合对应列的检查约束要求;
2、Update的使用注意事项:
1)可以更新主键列数据,但应保证更新后的主键列数据不能出现重复信息,否则将更新失败!
2)可以更新表中外键列数据,但应保证新数据在主键表的中应事先存在。
修改和删除都要慎重,没有条件的情况下,是对表中的所有行进行操作。
3、查询语句e.g
/*查询所有*/
select * from student_info;
/*where 常用的比较运算符*/
select * from student_info where age<>25;
/*between and 在两个值之间*/
select * from student_info where age BETWEEN 20 and 30;
/*等于值列表中的一个 */
select * FROM student_info WHERE class_num in(1,2);
/*模糊查询*/
select * from student_info WHERE name LIKE '张%';
/*查询空值*/
select * from student_info where sex is NULL;
/*平均值*/
select avg(age)as 平均值 from student_info;
/*计数*/
select count(name) from student_info;
/*最大值*/
select MAX(age),name from student_info;
/*最小值*/
select MIn(age),name from student_info;
/*求和*/
select SUM(age),name from student_info;
/*分组*/
select count(*)as 数量,class_num as 班级 from student_info WHERE sex='男' GROUP BY class_num;
/*升序*/
select * from student_info ORDER BY age ASC;
SELECT * from s
/*降序*/
SELECT * FROM student_info ORDER BY class_num desc ,age DESC;
/*having*/
/*
having后可使用聚合函数,where不可以
*/
select count(age)数量,class_num 班级 from student_info where 1=1 GROUP BY class_num HAVING count(age)>=1 ORDER BY class_num DESC;
4、having与where的区别:
(1)同:having与where类似,可筛选数据
where后的表达式怎么写,having就怎么写
(2)异:①where针对表中的列发挥作用,查询数据
having针对查询结果中的列发挥作用,筛选数据
②GROUP BY 是在 WHERE 条件后执行的
HAVING 是在 GROUP BY 后执行的
③HAVING 后可使用聚合函数,WHERE不可以