数 据 库 原 理 及 简 单 操 作
一、数据库定义语言(DDL)及简单操作
1、登录数据库
mysql -u root -p 然后键入密码
2、数据库定义语言常用关键字
create 创建表
alter 修改表中对应的列
drop 删除表TRUNCATE 删除表中所有内容
3、数据库的增删查改
- 创建数据库: create database chen;
- 删除数据库: drop database wang;
- 查看系统里面有哪些数据库: show databases;
- 每一次进入一个数据库的时候,都要用use 加上数据库名字 ,表示使用它。
- 可用show create table chen; //最后一个chen,为表名。可以查看创建该表时的一些设定属性。
- 之后,便可以创建表了:比如:
create table Person1(personID int NOT NULL
AUTO_INCREMENT,PRIMARY KEY(personID),FirstName
varchar(15),LastName varchar(15),Age int);
- 也可以在int后面加上成绩信息:score, float 等。
- 删除表:可以用drop table chen; 最后为表名。
- 选中查看表格为:select * from chen; *表示表格所有内容,最后一个为表名
4、修改表的某一行----alter的使用
修改表:使用alter table 语句 追加, 修改, 或删除列的语法。
例如:
//增加一列
alter table persons add addr varchar(15);
//修改列名addr为addr1
alter table persons change addr addr1 varchar(15);
//删除表格中某一列
alter table score drop column chen; score为表名,chen为列名
注:关于数据库常见数据类型后面补。
二、数据库操纵语言(DML)
1、数据操纵语言常用关键字
insert update delete //插入 修改 删除
2、操纵语言的一些实例:
- //使用insert 语句向表中插入数据
-
- insert into persons (FirstName,LastName,Age) values('Peter','bob','40');
- //通过使用 update语句修改表中数据
//语法为:set子句指示要修改哪些列和要给予哪些值。where子句指定应更新哪
些行。如没有where子句,则更新所有的行。
-
- update persons set LastName='sky' where personID=2;
- 要修改where处的personID=2所对应的LastName的值改为sky项。
- 使用 delete语句删除表中数据:是删除的是where处设定的那一行。
-
- 如果不使用where子句,将删除表中所有数据。Delete语句不能删除某一列的值(可使用update)使用delete语句仅删除记录,不删除表本身。
- delete from persons where personID=2;
注:如要删除表,使用drop table语句。 同insert和update一样,从一个表中删除
记录将引起其它表的参照完整性问题,在修改数据库数据时,头脑中应该始终不
要忘记这个潜在的问题。
三、简单的数据查询语言(DQL)
1、常用关键字: select
语法:Select 指定查询哪些列的数据。
column指定列名。 *号代表查询所有列。from指定查询哪张表。distinct可选,指显示结果时,是否剔除重复数据
2、Select的用法
在select语句中可使用表达式对查询的列进行运算eg:可进行对应的加减乘除
select gongzi+score from score;
select gongzi*score from score;
在select语句中可使用as语句 来给对应的列起别名。
select column as 别名 from 表名;
select语句使用order by 子句排序查询结果。
select column1, column2. column3.. from table; order by column asc|desc //asc 递增升序 //desc 表示降序
语法:order by 指定排序的列,排序的列即可是表中的列名,也可以是select 语句后指定的列名。
asc 升序、desc 降序
order by子句应位于select语句的结尾
3、select语句在where子句中经常使用的运算符:
4、数据完整性简介及主键的作用
数据完整性定义:
数据完整性主要分为以下三类:实体完整性: 规定表的一行(即每一条记录)在表中是唯一的实体。实体完整性通过表的主键来实现。域完整性: 指数据库表的列(即字段)必须符合某种特定的数据类型或约束。比如NOT NULL。参照完整性: 保证一个表的外键和另一个表的主键对应。
数据库主键阐述:一个表只能有一个PRIMARY KEY约束,而且PRIMARY KEY约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。
主键的作用 : 1)保证实体的完整性;
2)加快数据库的操作速度
3) 在表中添加新记录时,会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。 4) 自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
创建外键例子:
create table pats(patID int NOT NULL AUTO_INCREMENT,PRIMARY KEY(patID),person1ID int default NULL,FOREIGN KEY (person1ID) REFERENCES persons(personID));
5、定义表的约束
定义表的约束:
定义主键约束 primary key:不允许为空,不允许重复(可以区分两条记录的唯一性)
删除主键:alter table tablename drop primary key ;
定义主键自动增长 auto_increment
定义唯一约束 unique
定义非空约束 not null
定义外键约束 constraint ordersid_FK foreign key(ordersid) references orders(id),
四、数据库常见的数据类型
五、数据查询语言(实用篇)
1、连接查询类别
交叉连接(cross join):不带on子句,返回连接表中所有数据行的笛卡儿积。
内连接(inner join):返回连接表中符合连接条件及查询条件的数据行。
外连接:分为左外连接(left out join)、右外连接(right outer join)。
与内连接不同的是,外连接不仅返回连接表中符合连接条件及查询条件的数据行,也返回左表(左外连接时)或右表(右外连接时)中仅符合查询条件但不符合连接条件的数据行。
例:交叉连接查询CUSTOMER表和ORDERS表 SELECT * FROM customer CROSS JOIN orders;
2、内连接
内连接分三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结 果中列出被连接表中的所有列,包括其中的重复列。
例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:select * from authors as a inner join publishers as p on a.city=p.city
2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
3、左外连接查询
使用left outer join关键字,在on子句中设定连接条件
SELECT * FROM customer as c LEFT OUTER JOIN orders as o ON c.id=o.customer_id;
不仅包含符合c.id=o.customer_id连接条件的数据行,还包含左表中的其他数据行联合查询能够合并两条查询语句的查询结果,去掉其中的重复数据行,然后返回没有重复数据行的查询结果。
联合查询使用union关键字
eg:
SELECT * FROM orders WHERE price>100 UNION
SELECT * FROM orders WHERE customer_id=1;
注意:联合查询的各子查询使用的表结构应该相同,同时两个子查询返回的列也应相同
4、报表查询对数据行进行分组统计
其语法格式为: select … from … [where…] [ group by … [having… ]] [ order by … ]其中group by 子句指定按照哪些字段分组,having子句设定分组查询条件。
5、常见统计函数
count() sum() avg() max() min()
- Count(列名)返回某一列,行的总数(有多少条记录)
- Select count(*)|count(列名) from tablename [WHERE where_definition] //其中|就是或者的意思
- Sum函数返回满足where条件的行的和
- Select sum(列名){,sum(列名)…} from tablename [WHERE where_definition]
- AVG函数返回满足where条件的一列的平均值
- Select avg(列名){,avg(列名)…} from tablename [WHERE where_definition]
- Max/min函数返回满足where条件的一列的最大/最小值
- Select max(列名) from tablename [WHERE where_definition]
6、group by 子句的使用
elect语句使用group by 子句对列进行分组
SELECT column1, column2. column3.. FROM table; group by column
Select语句使用having 子句过滤
SELECT column1, column2. column3.. FROM table; group by column having ...
7、数据库备份
数据库备份: cmd命令下 mysqldump -u root -p test>test.sql数据库恢复:
创建数据库并选择该数据库 在cmd命令下:mysql -u root -p test<test.sql
或者: 在mysql >命令行下 执行 SOURCE 数据库文件