mysql数据库

来源:互联网 发布:中转国际机票 知乎 编辑:程序博客网 时间:2024/06/14 15:43

一、数据库的概念:

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数据库中一个特殊的约束条件。

其主要用于表中插入的新记录自动生成唯一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:删除数据库中的数据

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;

4having与where的区别:

1)同:having与where类似,可筛选数据

where后的表达式怎么写,having就怎么写

2)异:①where针对表中的列发挥作用,查询数据

having针对查询结果中的列发挥作用,筛选数据

②GROUP BY 是在 WHERE 条件后执行的

HAVING 是在 GROUP BY  后执行的

③HAVING 后可使用聚合函数,WHERE不可以

原创粉丝点击