1、 MySQL 命令:
a) 修改表名:alter table 表名 rename 新表名
Rename table 原表名 to 新表名
b) 修改列名:altertable 表名 change 字段名 新字段 类型
Update 表名 set 字段名=新字段类型
c) 修改字段:alter table 表名 modify 字段名 新字段
Update 表名 set 字段名=新内容 where <表达式>
d) 修改列顺序:alter table 表名 modify 字段名 类型 first----第一行
alter table 表名 modify 字段名 类型 after 字段名-----指定位置
e) 创建数据库:createdatabase <数据库名>
f) 创建表名:create table <表名>(数据);
例子:create table A(id int primarykey auto_increment,name varchar(200));
g) 选择那个数据库:use <数据库名>
h) 增加一个字段:alter table 表名 add<字段名 字段类型>
i) 增加一列到最前面:alter table 表名 add 字段名 字段类型 first
j) 增加一列到指定位置:alter table 表名 add 字段名 字段类型 after 字段名
k) 插入表单元数据:insert into <表名>(要插值的元素) values(值);
例子:insert into A(name) values(‘肖亮亮’);
l) 删除数据库:drop database <数据库名>
m) 删除表:drop table <表名>
n) 删除外键:alter table 表名 drop foreign,key <当前的表名>_FK
o) 删除表中的某行:delete from table_name where <表达式>
p) 展示所有数据库:show databases;
q) 展示所有表: show tables;
r) 导入sql文件:source 文件路径
s) 描述:desc
t) 自动增加:auto_increment
约束:
a) 主键约束:primary key
b) 默认:default
c) 不允许重复:unique
d) 外键:foreign key
e) 不允许为null: not null
f) 检查约束:check
性别 varchar(20) default ‘男’ check(性别=’男’ or 性别=’女’);
Seclect 查询语句:
a) 投影查询:就是允许用户显示需要的列
Select id from <表名>
b) 条件查询:=、>、<、<>、!=、>=、<=、!>、!<
Select * from <表名> where 条件
c) 模糊查询:like
%:包含0个到多个
-:包含一个字符
():指定范围内
(^):不属于指定范围内
Select * from Student s where s.name like ‘肖%’
d) Null 值查询:
Select * from student where name is null;
e) 限制范围查询:between…and…
Select * from student s whereid between <开始> and <结束>;
f) 删除重复字段数据:distinct
Select distinct 字段名 from 表名;
关联外键:
例子:第一张表:Create tableTeacher(teacher_id int primary key auto_increment,teacher_name varchar(200),teacher_sex varchar(200));
第二张表: create table Student(stu_id int primary key auto_increment,teacher_id int,constraint Student_FK foreign key(teacher_id) references teacher(teacher_id), stu_name varchar(200),stu_sex varchar(200));
关联查询:
a) 左连接:left join
左表不管条件是否满足都会出现,右表的条件不满足会以null填充
Select * from <第一张表名s> left join <第二张表名t> on s.id = t.s_id and s.id=1;
b) 右连接:right join
右表不管条件是否满足都会出现,左表的条件不满足会以null填充
Select * from <第一张表名s> right join <第二张表名t> on s.id = t.s_id and s.id=1;
c) 等值连接:inner join
左右表同时满足条件才出现
Select * from <第一张表名s> inner join <第二张表名t> on s.id = t.s_id and s.id=1;
d) 分组查询:group by
Select * fromfrom <第一张表名s>,<第二张表名t> wheres.id=t.s_id group by s.id having s.id = 1;
e) 查询某字段的数据总和(只限于整数、浮点)sum
Select sum(student_age)as 学生总年龄 from student;
f) 查询当前表的总行数count
Select count(*) fromstudent;
g) 查询表的某字段的平均值 avg
Select avg(student_age) as 年龄的平均值 from student;
h) 排序order by
Select * from fromstudent s order by s.stu_age
I) max最大值
II) min最小值
关联子查询:谓词
a) any
select * from class whereclass.class_id >any (select class.class_id from class whereclass.class_id=5);
只要满足一个条件即可,也可以说any是||(或)的意思
b) all
select * from class whereclass.class_id >all (select class.class_id from class whereclass.class_id=5);
同时条件全部满足,也可以说all是&&(与)的意思
c) 限制 limit
Select * from students where s.stu_id limit <开始值>,<结束值>
d) 在…里面… in
Select * from students where s.stu_id in(值,值,值);
e) 不在…里面… not in
Select * from students where s.stu_id not in(值,值,值);
f) 取两个集合的交集 exists
Select * from studentwhere exists (select * from Class where student.class_id = class.class_id)
g) 取两个集合的差集 not exists
Select * from studentwhere not exists (select * from Classwhere student.class_id = class.class_id)
select * from studentwhere not exists (select 1 from class where class.class_id = student.class_id);
h) Union 删除两个集合中的重复值只取一份加没有重复的数据 前提:两张表结构一样
Select class_id fromstudent union select class_id from class;
i) Union All 两个结果的合并
Select class_id fromstudent union All select class_id from class;
JDBC(java date baseconnctivity ):
是用来执行sql语句,可以为多种关系数据库提供统一访问。
Java语言编写一个JDBC:
例子:
Class JDBCUtils{
Public void getConnection(){
Connection c = null;
Statement st=null;
ResultSet rs=null;
Try{
Class.forName(“com.mysql.jdbc.Driver”);//加载驱动
String url = “jdbc:mysql://127.0.1.1:3306/数据库名”;
String username=”root”;
String password=”root”;
c = DriverManager.getConnection(url,username,password);
//获取数据连接
st = c.createStatement();
//获取发送命令的对象
rs = st.executeQuery(“select *from student”);
//根据sql语句得到结果值
where(st.next()){
String username = st.getString(1);
//获取数据库里的第一条数据
}
} catch (ClassNotFoundException e) {
System.out.println(“找不到这个类”);
} catch(SQLException e) {
System.out.println(“SQL异常”);
} finally {
Rs.close();
St.close();
c.close();
}
}
}
View 视图:
概念:是一张虚表,因为无表结构
创建一个视图:
Create orreplace view view_name as select * from table_name;
Create viewview_name as select * from table_name;
操作视图的RUD和操作table表一样
查询自定义的视图:
a) Select table_name from information_schema.views;//查询所有
b) Show table status where commet=’view’;//查询所有
c) Show create view view_name g; //根据视图名查询
触发器:trigger
语法:create trigger trigger_name after/before insert/update/delete on table_name for each row <sql语句>
比较after/before的区别:
After:在执行前表的sql语句执行前已经加载了
Before:在执行前表的sql语句后加载
创建触发器:
添加(insert) after:create trigger trigger_af_insert after insert on table_name For each row <sql语句>
---insert into table_name<字段名>values<值,值,值>
---updatetable_name set <字段名>=<新内容> where<表达式>
---deletefrom tbale_name where <表达式>
---createtable table_name(字段名 类型……);
添加(insert) before:create trigger trigger_bf_insert before insert on table_name For each row <sql语句>
---insert into table_name<字段名> values<值,值,值>
---updatetable_name set <字段名>=<新内容> where<表达式>
---deletefrom tbale_name where <表达式>
---createtable table_name(字段名 类型……);
删除(delete) after:create trigger trigger_af_delete after deleteon table_name for each row <sql语句>
---insert into table_name<字段名>values<值,值,值>
---updatetable_name set <字段名>=<新内容> where<表达式>
---deletefrom tbale_name where <表达式>
---createtable table_name(字段名 类型……);
删除(delete) before:create trigger trigger_bf_delete before deleteon table_name for each row <sql语句>
---insert into table_name<字段名>values<值,值,值>
---updatetable_name set <字段名>=<新内容> where<表达式>
---deletefrom tbale_name where <表达式>
---createtable table_name(字段名 类型……);
修改(update) after: create trigger trigger_af_update afterupdate on table_name for each row <sql语句>
---insert into table_name<字段名>values<值,值,值>
---updatetable_name set <字段名>=<新内容> where<表达式>
---deletefrom tbale_name where <表达式>
---createtable table_name(字段名 类型……);
修改(update) before: create trigger trigger_bf_update before update on table_name for each row <sql语句>
---insert into table_name<字段名>values<值,值,值>
---updatetable_name set <字段名>=<新内容> where<表达式>
---deletefrom tbale_name where <表达式>
---createtable table_name(字段名 类型……);
查询所有触发器:show triggers;
Select* from information_schema.triggers g;
索引:
索引的优缺点:
i. 优点:提高数据库查询的速度
ii. 缺点:创建和维护索引需要耗费时间