一、什么是SQL
MySQL是一个关系型数据库管理系统
前世:瑞典MySQLAB公司
今生:属于Oracle旗下产品
MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。
开软的数据库软件~
体积小、速度快、总体拥有成本低,招人成本较低,所有人必须会
中小型网站、或者大型网站,集群!
SQL 是一种操作数据库的语言,包括创建数据库、删除数据库、查询记录、修改记录、添加字段等。SQL 虽然是一种被 ANSI 标准化的语言,但是它有很多不同的实现版本。
二、SQL的执行过程
整个执行过程包含了多种组件
- 查询调度程序;
- 优化引擎;
- 传统的查询引擎;
- SQL 查询引擎。
三、SQL的命令
与关系型数据库有关的 SQL 命令包括 CREATE、SELECT、INSERT、UPDATE、DELETE、DROP 等,根据其特性,可以将它们分为以下几个类别。
1. DDL - Data Definition Language,数据定义语言
对数据的结构和形式进行定义,一般用于数据库和表的创建、删除、修改等。
命令 | 说明 |
---|---|
CREATE | 用于在数据库中创建一个新表、一个视图或者其它对象。 |
ALTER | 用于修改现有的数据库,比如表、记录。 |
DROP | 用于删除整个表、视图或者数据库中的其它对象 |
2.DML - Data Manipulation Language,数据处理语言
对数据库中的数据进行处理,一般用于数据项(记录)的插入、删除、修改和查询。
命令 | 说明 |
---|---|
SELECT | 用于从一个或者多个表中检索某些记录。 |
INSERT | 插入一条记录。 |
UPDATE | 修改记录。 |
DELETE | 删除记录。 |
3.DCL - Data Control Language,数据控制语言
控制数据的访问权限,只有被授权的用户才能进行操作。
命令 | 说明 |
---|---|
GRANT | 向用户分配权限。 |
REVOKE | 收回用户权限。 |
四、sql的语句实现
1、数据库的基本操作
1、创建数据库
CREATE DATABASE database-name
2、备份 mysql
备份数据库到D盘跟目录
mysqldump -h127.0.0.1 -uroot -ppass myweb > d:/backupfile.sql
3、删除数据库
drop database dbname
2、表的基本操作
1、创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2
[not null],..)
A:根据已有的表创建新表
create table tab_new like tab_old
B:使用旧表创建新表
create table tab_new as select col1,col2„ from tab_old definition only
2、删除新表
drop table tabname
3、增加列
Alter table tabname add column col type
4、主键操作
添加主键
Alter table tabname add primary key(col)
删除主键
Alter table tabname drop primary key(col)
5、索引(索引是不可更改的,想更改必须删除重新建。)
创建索引
create [unique] index idxname on tabname(col„.)
删除索引
drop index idxname
3、视图
创建视图
create view view_name as select statement
删除视图
drop view view_name
4、基本的增删改查
选择范围
select * from table1 where ...
插入
insert into table1(field1,field2) values(value1,value2)
删除
delete from table1 where ...
更新
update table1 set field1=value1 where ...
查找
select * from table1 where field1 like ’%value1%’
排序
select * from table1 order by field1,field2 [desc]
5、统计
总数
select count as totalcount from table1
求和
select sum(field1) as sumvalue from table1
平均数
select avg(field1) as avgvalue from table1
最大数
select max(field1) as maxvalue from table1
最小数
select min(field1) as minvalue from table1
五、实战
1.创建数据表插入数据
# 创建数据库
create database mysql_exercise_50;
use mysql_exercise_50;
# 学生表
CREATE TABLE Student(
s_id VARCHAR(20),
s_name VARCHAR(20) NOT NULL DEFAULT '',
s_birth VARCHAR(20) NOT NULL DEFAULT '',
s_sex VARCHAR(10) NOT NULL DEFAULT '',
PRIMARY KEY(s_id)
);
insert into Student values('01' , '张三' , '1990-01-01' , '男');
insert into Student values('02' , '李四' , '1990-12-21' , '男');
insert into Student values('03' , '王五' , '1990-05-20' , '男');
insert into Student values('04' , '赵六' , '1990-08-06' , '男');
insert into Student values('05' , '冯七' , '1991-12-01' , '女');
insert into Student values('06' , '周八' , '1992-03-01' , '女');
insert into Student values('07' , '吴九' , '1989-07-01' , '女');
insert into Student values('08' , '郑十' , '1990-01-20' , '女');
# 课程表
CREATE TABLE Course(
c_id VARCHAR(20),
c_name VARCHAR(20) NOT NULL DEFAULT '',
t_id VARCHAR(20) NOT NULL,
PRIMARY KEY(c_id)
);
insert into Course values('01' , '语文' , '02');
insert into Course values('02' , '数学' , '01');
insert into Course values('03' , '英语' , '03');
# 教师表
CREATE TABLE Teacher(
t_id VARCHAR(20),
t_name VARCHAR(20) NOT NULL DEFAULT '',
PRIMARY KEY(t_id)
);
insert into Teacher values('01' , '王老师');
insert into Teacher values('02' , '李老师');
insert into Teacher values('03' , '冯老师');
# 成绩表
CREATE TABLE Score(
s_id VARCHAR(20),
c_id VARCHAR(20),
s_score INT(3),
PRIMARY KEY(s_id,c_id)
);
insert into Score values('01' , '01' , 80);
insert into Score values('01' , '02' , 90);
insert into Score values('01' , '03' , 99);
insert into Score values('02' , '01' , 70);
insert into Score values('02' , '02' , 60);
insert into Score values('02' , '03' , 80);
insert into Score values('03' , '01' , 80);
insert into Score values('03' , '02' , 80);
insert into Score values('03' , '03' , 80);
insert into Score values('04' , '01' , 50);
insert into Score values('04' , '02' , 30);
insert into Score values('04' , '03' , 20);
insert into Score values('05' , '01' , 76);
insert into Score values('05' , '02' , 87);
insert into Score values('06' , '01' , 31);
insert into Score values('06' , '03' , 34);
insert into Score values('07' , '02' , 89);
insert into Score values('07' , '03' , 98);