/ 中存储网

MySQL常用命令和语句

2014-07-13 16:13:08 来源:中存储网

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.             缺点:创建和维护索引需要耗费时间