一个非常标准的连接Mysql数据库的示例代码,MySQL的常规操作

一.About Mysql

MySQL的例行知识

1.Mysql
优点** 

正式的SQL语句普通可分为如下的几体系型:

  • 容积小、速度快、开放源码、无偿

  • 貌似中型迷你型网站的付出都选取 MySQL
    ,最风靡的关系型数据库

  • LAMP / LNMP 

1,DCL(Database Control Language)
:数据调控语言,首要由grant和revoke关键字组合。

  • Linux用作操作系统

  • style=”font-size: 16px”>ApacheNginx作为 Web 服务器

  • MySQL作为数据库

  • PHP作为劳动器端脚本

  • style=”font-size: 16px”>都是无偿或开放源码软件,不用花一分钱即可构建起二个安乐、无偿的网址类别

 

2.DDL(Database Define
Language):数据定义语言,主要由Create、Drop、Alter和Truncate关键字组合。

 2.登陆MySQL

3,DML(Database Manipulate
Language):数据调整语法,重要由insert、update和delete关键字组合。

  • 登陆:mysql –h 主机名 -u 用户名 –p

  • 注销:quit;

  • 修改密码:mysqladmin –uroot –p旧密码 password 新密码

4,DQL(Database Query Language):数据查询语言,首要由select关键字组合

3.可视化学工业具

5,TCL(Tranlasion Control
Language):事物资调剂节语言,主要由commit、rollback和savePoint关键字组合。

phpMyAdmin、MySQL-Front、MySQL
Workbench、Navicat等

show

4.sql语句

style=”font-family: SimSun; font-size: 24px; color: #3333ff; background-color: #ffffff;”>查看数据库

show
databases;

style=”font-family: SimSun; font-size: 24px; color: #3366ff;”>查看表

style=”font-family: SimSun; font-size: 24px; color: #3366ff; background-color: #ff0000;”> style=”font-family: SimSun; font-size: 18px; color: #ffff00;”>查看编码格式

style=”font-family: SimSun; font-size: 24px; color: #000000;”> style=”font-family: SimSun; font-size: 18px;”> style=”font-family: SimSun; font-size: 18px;”> style=”color: #555555; font-family: ‘microsoft yahei’; font-size: 15px;”>show
variables like ‘character%’;

style=”font-family: SimSun; font-size: 18px; color: #ffff00; background-color: #ff0000;”>存在的所有表

show
tables;

style=”font-family: SimSun; font-size: 18px; color: #ffcc00; background-color: #ff0000;”>创制表的指令

show create
table table_name;

style=”font-family: SimSun; font-size: 18px; color: #ffff00; background-color: #ff0000;”>表的组织

show index
from table_name;

style=”font-family: SimSun; font-size: 18px;”>图片 1

show columns
from table_name;

style=”font-family: SimSun; font-size: 18px;”>图片 2

> style=”color: red;”>注: > > > style=”color: red;”>“show
columns from table_name;
> > > style=”color: red;”>” > > > style=”color: red;”>和“ > > > style=”color: red;”>desctable_name;” > > > style=”color: red;”>效果是同样的。

show table
status like “table_name”\G

style=”font-family: SimSun; font-size: 18px;”>图片 3

> style=”color: red;”>注: > > > style=”color: red;”>”\G” > > > style=”color: red;”>是为着让数据彰显更清晰易懂,也足以不设置。

style=”font-family: SimSun; font-size: 24px; color: #3333ff;”>查看服务器

style=”font-family: SimSun; font-size: 18px; color: #ffcc00; background-color: #ff0000;”>服务器状态

show
status;

style=”font-family: SimSun; font-size: 18px; background-color: #ff0000;”> > style=”color: #ffcc00;”>服务器配置变量

show
variables;

  • 不区分轻重缓急写

  • 以分部结尾

  • 注释:

use

  • #注释内容直到行尾

  • --注释内容直到行尾

  • /*注释内容*/

5.实践境况

  • Linux:mysql shell

  • Windows:Command Line Client

  • 可视化学工业具的SQL 编辑器

 

style=”font-family: SimSun; font-size: 24px; color: #3366ff;”>使用数据库

use
database_name;

6.where 条件

create

 

style=”font-family: SimSun; font-size: 24px; color: #3366ff;”>创制数据库

create database
if not exists database_name;

style=”color: #3366ff; font-family: SimSun; font-size: 24px;”>创建表

style=”font-family: SimSun; font-size: 18px; color: #ffcc00; background-color: #ff0000;”>创设非有时表

create table
student_info(StuID int not null auto_increment,StuName
varchar(15) not null,Telephone bigInt not null,primary
key(StuID));

> style=”font-family: SimSun; font-size: 18px; color: #cc0000;”>注:

> > > style=”color: red;”>1 > > > > style=”color: red;”>, > > > > style=”color: red;”>auto_increment > > > > style=”color: red;”>属性的指标只好是整形,在打开值插入时若不点名具体的值,或钦点其为 > > > > style=”color: red;”>null > > > > style=”color: red;”>或 > > > > style=”color: red;”>0 > > > > style=”color: red;”>,则其机动赋值为日前列的最大值再加上 > > > > style=”color: red;”>1 > > > > style=”color: red;”>的值。

> > > style=”color: red;”>2 > > > > style=”color: red;”>, > > > > style=”color: red;”>primary key() > > > > style=”color: red;”>是安装主键 > > > > style=”color: red;”>, > > > > style=”color: red;”>两个表能够不断一个主键。

style=”font-family: SimSun; font-size: 18px; color: #ffcc00; background-color: #ff0000;”>创建临时表

create
temporary table Student_info(StuID int not null
auto_increment,StuName varchar(15) not null,Telephone bigInt not
null,primary key(StuID));

> style=”color: red;”>注:创设有的时候表要用关键字 > > > style=”color: red;”>”temporary” > > > style=”color: red;”>,偶尔表重假如用来保存一些临时数据,一时表的多寡只是在现阶段总是可用,当断开链接后就能, > > > style=”color: red;”>MySQL > > > style=”color: red;”>就能够自行删除不常表。

style=”font-family: SimSun; font-size: 18px; color: #ffcc00; background-color: #ff0000;”>成立复制旧表的数据和协会的新表

create table
new_table select * from old_table;

> style=”color: red;”>注:这种方法会将旧表中的全部内容都拷贝过来,当然大家也可以用 > > > style=”color: red;”>delete > > > style=”color: red;”>、insert
into
> > > style=”color: red;”>来删除、扩张。不过这种办法最不好的地点就是未有了旧表的 > > > style=”color: red;”>primary key > > > style=”color: red;”>, > > > style=”color: red;”>extra(auto_incremet) > > > style=”color: red;”>等天性。须求和睦用 > > > style=”color: red;”>alter > > > style=”color: red;”>手动增多。

style=”background-color: #ff0000; color: #ffcc00; font-family: SimSun; font-size: 18px;”>创制复制旧表的布局的新表

style=”background-color: #ffffff; color: #000000; font-family: SimSun; font-size: 18px;”> > style=”font-family: SimSun; font-size: 18px;”>  create table
new_table select * from old_table where 1 = 2;

style=”background-color: #ffffff; color: #000000; font-family: SimSun; font-size: 18px;”> > style=”font-family: SimSun; font-size: 18px;”>     > style=”font-size: 18px;”> > style=”color: red;”>注:这种格局只是复制表结构,当然旧表中的 > style=”color: red;”>primary key > style=”color: red;”> 和 > style=”color: red;”>auto_increment > style=”color: red;”>等性子都以复制过来了。

style=”background-color: #ff0000; color: #ffcc00; font-family: SimSun; font-size: 18px;”> > style=”color: #ffcc00; font-family: SimSun; font-size: 18px;”>创建表时钦点引擎和编码格局

style=”font-family: SimSun; font-size: 18px;”>  create table
new_table(id int not null,name varchar(20) not
null)engine=InnoDB,default charset=UTF-8;

style=”font-family: SimSun; font-size: 18px;”>     > style=”color: #ff0000;”>注:因为私下认可的汽油发动机正是InnoDB,默许的编码方式正是utf-8,所以只要不更换引擎和编码情势能够不加多engine=InnoDB,default
charset=utf-8

style=”font-family: SimSun; font-size: 18px; color: #00ffff; background-color: #ff0000;”> > style=”font-family: SimSun; font-size: 18px;”> > style=”font-family: SimSun; font-size: 18px;”> > style=”font-family: SimSun; font-size: 18px;”>创立表的时候,钦命私下认可的值

style=”font-family: SimSun; font-size: 18px;”>  create table
new_table(id int not null,name varchar(20) not null,salary int not
null default 1200)engine=InnoDB,default charset=UTF8;

style=”font-family: SimSun; font-size: 18px;”>    注:salary int
not null default
1200,表示插入全体行中salary的默许值都是1200。

  • 正如运算符:=、 >、 <、 >=、
    <=、 !=、 <>

  • 扩充运算符:is null、 is not null、
    like、 in、 between

  • 逻辑运算符:and、 or

  • 函数:count、sum、avg、max、min

  • 排序:order by

  • 分组:group by

 

 

 

7.操作数据 

 

增 

  • style=”font-size: 16px”>insert into 表名 values (值1, 值2, ...);

  • style=”font-size: 16px”>insert into 表名 (列名1, 列名2, ... ) values (值1, 值2, ...);

 

 

删 

  • style=”font-size: 16px”>删除全体数据:delete from 表名;

  • style=”font-size: 16px”>删除钦点数量:delete from 表名 where 条件;

改 

  • style=”font-size: 16px”>更新具备数据:update 表名 set 列名=新值;

  • style=”font-size: 16px”>更新钦点数量:update 表名 set 列名=新值 where 条件;

  • style=”font-size: 16px”>更新多列:update 表名 set 列名1=值1, 列名2=值2 [where 条件];

  • style=”font-size: 16px”>更新为默许值:update 表名 set 列名=default [where 条件];

查 

  • style=”font-size: 16px”>查询全部数据:select 列名 from 表名;

  • style=”font-size: 16px”>查询钦赐数量:select 列名 from 表名 [where 条件];

  • style=”font-size: 16px”>查询四个列:select 列名1, 列名2 from 表名 [where 条件];

  • style=”font-size: 16px”>查询全体列:select * from 表名 [where 条件];

  • style=”font-size: 16px”>内定别称:select 列名 as 别名 from 表明 [where 条件];

  • style=”font-size: 16px”>查询唯一值:select distinct 列名 from 表名;

 

二.示例代码

1.maven依赖

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.0.2</version>
</dependency>

 

2实例代码

 1 package com.my.connect;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.PreparedStatement;
 6 import java.sql.ResultSet;
 7 import java.sql.ResultSetMetaData;
 8 import java.sql.SQLException;
 9 /**
10  * 一个非常标准的连接Mysql数据库的示例代码
11  */
12 public class ConnectDB {
13 
14     public static void main(String[] args) {
15         // TODO Auto-generated method stub
16         Connection con = null;// 创建一个数据库连接
17         PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
18         ResultSet result = null;// 创建一个结果集对象
19         ResultSetMetaData metaData = null;//创建一个表头信息对象
20         try {
21             // 加载Mysql驱动程序  ,oracle的: Class.forName("oracle.jdbc.driver.OracleDriver");
22             //不知道可以打出Driver 看导入包的提示
23             Class.forName("com.mysql.jdbc.Driver");
24             String url = "jdbc:mysql://localhost:3306/studata";//localhost 为本级地址,studata为数据库名
25             String userName = "root";
26             String password = "root";
27             con = DriverManager.getConnection(url, userName, password);// 获取连接
28             
29             System.out.println("数据库连接成功!");
30             
31             String sql = "select * from studata s where s.stuNo = ?";//预编译语句,?代表参数
32             pre = con.prepareStatement(sql);// 实例化预编译语句
33             pre.setInt(1, 10000);;// 设置参数,前面的1表示参数的索引,而不是表中列名的索引
34             result = pre.executeQuery();// 执行查询,注意括号中不需要再加参数
35             metaData  = result.getMetaData();//获取表头信息
36             while (result.next()) {
37                  // 当结果集不为空时
38                 System.out.println(metaData.getColumnName(1) + "  " + metaData.getColumnName(2));
39 
40                 System.out.println(result.getString("stuNo") + "  " + result.getString("stuName"));
41             }
42 
43         } catch (Exception e) {
44             // TODO Auto-generated catch block
45             e.printStackTrace();
46         } finally {
47             // 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
48             // 注意关闭的顺序,最后使用的最先关闭
49             if (result != null)
50                 try {
51                     result.close();
52                     if (pre != null)
53                         pre.close();
54                     if (con != null)
55                         con.close();
56                     System.out.println("数据库连接已关闭!");
57                 } catch (SQLException e) {
58                     // TODO Auto-generated catch block
59                     e.printStackTrace();
60                 }
61 
62         }
63 
64     }
65 
66 }

 

3.周转结果

数据库连接成功!
stuNo  stuName
10000  赵军
数据库连接已关闭!

 

 

desc

style=”font-family: SimSun; font-size: 18px; color: #3366ff;”>查看表结构

style=”font-family: SimSun; font-size: 18px; background-color: #ffffff;”>desc
table_name;

drop

 

style=”font-size: 18px;”>裁撤数据库

 

drop database
databasename;

 

style=”font-size: 18px;”>撤销表

drop table if
exists table_name;

style=”font-family: SimSun; font-size: 18px; color: #ff0000;”>注:dropexists的用法是差异样的,drop是长久删除表,而delete只是剔除表中的多少。

 

delete

style=”font-family: SimSun; font-size: 18px; color: #3366ff;”>删除表数据

style=”font-family: SimSun; font-size: 18px; color: #ffcc00; background-color: #ff0000;”>删除表的具备数据

delete from
table_name;

style=”color: yellow; background: red;”>删除钦点表中的数目

delete from
table_name where column_name > value;

 

truncate

 

style=”font-family: SimSun; font-size: 18px; color: #3366ff;”>删除表数据

 

style=”font-family: SimSun; font-size: 18px; color: #ffcc00;”>删除表的保有数据

 

truncate
table_name;

 

 

 

  注:truncate和delete的差异,对于大多数数据库来讲,truncate都被当成DDL处理,truncate被称得上“截断”有些表-它的功力是去除该表里的任何数量,但保留数据结构。也正是DML中的delete命令,truncate的快慢要快得多,而且truncate不像delete能够去除钦定的记录,truncate只好删除表中的满贯记录。MySQL对truncate的管理相比非常-借使使用非InnoDB的积攒引擎,truncate要比delete快;倘诺选择InnoDB的囤积引擎,在MySQL5.0.3事先,truncate和delete完全等同,在5.0.3从此,truncate比delete要快,但假设该表被外键约束所参照,truncate又改为delete操作。在5.0.13今后,快捷truncate总是可用的,即比delete的速度要快。在应用

insert

style=”font-family: SimSun; font-size: 18px; color: #3366ff;”>插入数据

style=”font-family: SimSun; font-size: 18px; color: #ffcc00; background-color: #ff0000;”>插入完整元组

insert into
Student_info values (10,’宋文’,123456789);

style=”background-color: #ff0000; color: #ffcc00; font-family: SimSun; font-size: 18px;”>插入非完全元组

insert into
Student_info(StuName,Telephone) values
(‘小吴,’123456789’);

> style=”font-family: SimSun; font-size: 18px;”>注:在调控插入元组数据中的属性个数时,主要依靠表中属性的完整性来决定。

style=”font-family: SimSun; font-size: 18px; color: #3366ff;”>复制表数据

style=”font-family: SimSun; font-size: 18px; color: #3366ff;”> > style=”color: #ffcc00; font-family: SimSun; font-size: 18px; background-color: #ff0000;”>复制旧表的数目到新表

insert into
新表 select * from 旧表

> style=”font-size: 18px;”>注:

> style=”font-size: 18px;”>这里两个表的布局供给要一如既往> style=”color: red;”>这里只是复制数据,旧表的 > > > style=”color: red;”>primary key > > > style=”color: red;”>和 > > > style=”color: red;”>auto_increment > > > style=”color: red;”>依然须求团结加上。上边包车型客车法门也足以得到四个完全一致的表

> style=”color: red;”>方法一:首先用“ > > > style=”color: red;”>creat table  > > > style=”color: red;”>新表
like 
> > > style=”color: red;”>旧表”将旧表的协会复制过来,然后利用“ > > > style=”color: red;”>insert into > > > style=”color: red;”>新表 select
\
from 旧表 > > > style=”color: red;”>”将表中的数量复制过去。

> style=”color: red;”>方法二: > > > style=”color: red;”>show create table > > > style=”color: red;”>旧表*命令获得创制表的命令,复制粘贴再变动名称最终运营,获得一个数据结商谈总体性同样的新表 > > > style=”color: red;”>( > > > style=”color: red;”>除名称 > > > style=”color: red;”>) > > > style=”color: red;”>,再用这里 > > > style=”color: red;”>insert > > > style=”color: red;”>命令,将数据复制过去,就足以得到千篇一律的表了。

style=”background-color: #ff0000; color: #ffcc00; font-family: SimSun; font-size: 18px;”>复制旧表的一些数据到新表

insert into
新表 (字段1,字段2……)select 字段1,,字段2,…..from 旧表

> style=”font-family: SimSun; font-size: 18px;”>注:

> style=”font-family: SimSun; font-size: 18px;”>1,这里多个表的合作字段数据类型要一致。

> style=”color: red;”>2,这里只是复制数据,旧表的 > > > style=”color: red;”>primary key > > > style=”color: red;”>和 > > > style=”color: red;”>auto_increment > > > style=”color: red;”>依然须求和谐足够。

style=”font-family: SimSun; font-size: 18px; color: #3366ff;”>insert
ignore into 和 insert into 的区别

INSERT IGNORE
INTO与INSERT INTO的区分就是INSERT
IGNORE会忽略数据库中早已存在的多少,假若数据库非常的少,就插入新的多寡,借使有数据的话就跳过那条数据。INSERT
IGNORE
INTO当插入数据时,在安装了笔录的唯一性后,如若插入重复数据,将不回来错误,只以警示方式再次回到。
而REPLACE INTO into假如存在primary 或
unique同样的记录,则先删除掉。再插入新记录。

select

style=”font-family: SimSun; font-size: 18px; color: #3366ff;”>查看当前几日期

select
current_date;

style=”font-family: SimSun; font-size: 18px;”>图片 4

style=”font-family: SimSun; font-size: 18px; color: #3366ff;”>查看服务器版本

select
version();

style=”font-family: SimSun; font-size: 18px;”>图片 5

style=”font-family: SimSun; font-size: 18px; color: #3366ff;”>查看当前数据库名称

select
database();

style=”font-family: SimSun; font-size: 18px; color: #3333ff;”>查看当前顾客名

select
user();

style=”font-family: SimSun; font-size: 18px; color: #3333ff;”>查询表中数量的说话

style=”font-family: SimSun; font-size: 18px; color: #ffcc00; background-color: #ff0000;”>查询表中钦命字段无重复的数量

select
distinct column_name from table_name wherecondition;

> style=”font-family: SimSun; font-size: 18px;”>注:

> style=”color: red;”>1 > > > style=”color: red;”>, > > > style=”color: red;”>distinct > > > style=”color: red;”>用于突显的数目内容不设有双重

> style=”color: red;”>2 > > > style=”color: red;”>, > > > style=”color: red;”>* > > > style=”color: red;”>表示具有数据

> style=”color: red;”>3 > > > style=”color: red;”>, > > > style=”color: red;”>condition > > > style=”color: red;”>能够用高出、小于等

style=”font-size: 18px; color: #3333ff;”>查询数据之动态钦定条件语句

 比方有多个表,分别是table1和table2,在table第11中学有三个id1属性,在table第22中学有一个id2属性。假如要询问符合id第22中学的id1的数目,无需分两句书写,能够直接将其写到一同,举个例子:

select table1.id1 from table1 where id1=(select table2.id2 from table2
where id2=1);

不可能比一点都不小心:在原则语句中的得出table2的数量只好是三个家喻户晓的数值,无法是七个数组。

连日来查询

style=”font-size: 18px; color: #ffff00; background-color: #ff0000;”>语法:

select 属性 from 表1,表2 where (表1.属性 = 表2.属性);

注:“表1.属性 = 表2.属性”
是比较重大的,它代表五个表连接的条件。

style=”font-size: 18px; color: #ffff00; background-color: #ff0000;”>轻巧连接查询

select * from student_info,test_table where( StuID >2)
and(StuID < 5) and (student_info.StuID =
test_table.test_StuID);

> style=”color: red;”>注:查询Student_info表中StuIDtestable表中tesStuID的值一样的有所数据,何况餍足Student_info中的StuID在2到5的条件。

style=”font-size: 18px;”>图片 6

style=”font-size: 18px;”>图片 7

 

自连接查询

style=”font-size: 14px; color: #000000; background-color: #ff0000;”> style=”font-size: 18px; color: #ffff33;”>语法:

  使用别称

例如:

图片 8

打字与印刷这一个表中全体的id,name,但是这几个name对应的id至少有叁遍出现在manager_id中(借使把id看成职员和工人编号,manager_id看成职员和工人上司的id号,那么请打字与印刷全部的管理层)。

select distinct z.id,z.name from zilianjie z,zilianjie j where
j.manager_id=z.id;

 

超连接查询

style=”font-size: 18px; color: #ffff33; background-color: #ff0000;”>语法:

其间连接:select
属性1,属性2……. from 表1 inner join 表2 on 表1.属性 =
表2.属性

左连接:
select属性1,属性2……. from 表1 left join 表2 on 表1.属性 =
表2.属性

右连接 :
select 属性1,属性2……. from 表1 left join 表2 on 表1.属性 =
表2.属性

内部连接

inner join
格局的连接称为内部连接,也足以写为join。内部连接表示除非满足条件的笔录才会显获得查询结果中

select * from
student_info inner join test_table on student_info.StuID =
test_table.test_StuID;

这些讲话等价于select *
from student_info,test_table where(student_info.StuID
=test_table.test_StuID);

style=”background-color: #ffffff;”>图片 6

style=”background-color: #ffffff;”>图片 10

 

 

左连接

left join
情势的连接称为左连接。查询结果包罗join左边表中的享有记录以及侧边表满足条件的记录

右连接

right join
方式的总是称为右连接。查询结果包括join左边表中的有所记录以及右机械钟中满意条件的笔录

并运算查询

语法

union代表并运算

style=”background-color: #ff0000; color: #ffff33; font-size: 18px; font-family: SimSun;”>实例

style=”background-color: #ffffff;”>将三个表中满足条件的数目突显

select
StuID,StuName,Telephone from student_info where StuName =
“第多少个名称”

union

select
test_StuID,test_Name from test_table where test_StuID=
4;

style=”background-color: #ffffff;”>图片 11

style=”font-family: SimSun; font-size: 18px; color: #ff9966;”>注:这里多个表供给查询出来的品质数据要一律,不然就能冒出“E陆风X8RO安德拉1222 (2一千): The used SELECT statements have a different number
of columns”的荒唐。

update

style=”font-family: SimSun; font-size: 18px; color: #3333ff;”>更新部分数据

update
table_name set StuName = “易建联” where StuID = 1;

style=”font-family: SimSun; font-size: 18px;”>图片 12

style=”font-family: SimSun; font-size: 18px; color: #3333ff;”>更新整列的值

update
table_name set Telephone= Telephone + 1;

style=”font-family: SimSun; font-size: 18px;”>图片 13

alter

style=”font-family: SimSun; font-size: 18px; color: #3333ff;”>更改表

style=”font-family: SimSun; font-size: 18px; color: #ffff00; background-color: #ff0000;”>在表中加进二个属性

alter table 表
add column 属性 数据类型 [列的完整性];

style=”background-color: #ff0000; color: #ffcc00; font-family: SimSun; font-size: 18px;”>改造表中有些属性

alter table 表
change 属性 属性 数据类型 [列的完整性];

alter table 表
modify 属性 数据类型 [列的完整性];

style=”font-family: SimSun; font-size: 18px;”>注:change能够退换属性名称,但是modify只好在本来的天性上海展览中心开更动。

style=”background-color: #ff0000; color: #ffff00; font-family: SimSun; font-size: 18px;”>打消表中的某部属性

alter table 表
drop 属性;

style=”background-color: #ff0000; color: #ffff33; font-family: SimSun; font-size: 18px;”>改造表的称谓

alter table
旧表名 rename 新表名;

style=”background-color: #ff0000; color: #ffff33; font-family: SimSun; font-size: 18px;”>撤销和更换表的主键

alter table 表
drop primary key,add primary key(属性);

style=”background-color: #ff0000; color: #ffff33; font-family: SimSun; font-size: 18px;”>在率先行增多属性

alter table
table_name add I [….]first;

> style=”color: red;”>注:

> style=”color: red;”>这里的 > > > style=”color: red;”>first > > > style=”color: red;”>表示在第一行加多属性 > > > style=”color: red;”>I

> style=”color: red;”>[….] > > > style=”color: red;”>用于表示列的完整性

> style=”color: red;”>比如:

> style=”color: red;”>alter table userinfo add userAge varchar(2)
not null first;

style=”font-family: SimSun; font-size: 18px; color: #ffff33; background-color: #ff0000;”>在属性I前边加多J属性

alter table
table_name add I […] after J;

> style=”font-family: SimSun; font-size: 18px;”>注:

> style=”color: red;”>[…] > > > style=”color: red;”>用于表示列的完整性

> style=”color: red;”>这里的 > > > style=”color: red;”>I[…] after J > > > style=”color: red;”>表示在 > > > style=”color: red;”>J > > > style=”color: red;”>后边增添属性 > > > style=”color: red;”>I

style=”background-color: #ff0000; color: #ffff33; font-family: SimSun; font-size: 18px;”>删除字段I的默许值

alter table
table_name alter I drop default;

> style=”color: red;”>注:使用
ALTE纳瓦拉命令及 > > > style=”color: red;”> DROP > > > style=”color: red;”>子句来删除字段的暗中认可值

style=”background-color: #ff0000; color: #ffff00; font-family: SimSun; font-size: 18px;”>改造表的发动机

alter table
table_name engine=engineName;

> style=”font-family: SimSun; font-size: 18px;”>注:将数据表的引擎改动为钦定的斯特林发动机。

style=”background-color: #ff0000; color: #ffff00; font-family: SimSun; font-size: 18px;”>修改表体系的初始值

alter table
table_name auto_increment=value;

> style=”font-size: 18px;”>注:

> style=”color: red;”>改造表的队列起先值为 > > > style=”color: red;”>value > > > style=”color: red;”>。

> style=”color: red;”>这里的 > > > style=”color: red;”>value > > > style=”color: red;”>依附设定 > > > style=”color: red;”>auto_increment > > > style=”color: red;”>的列的数据类型而定,如 > > > style=”color: red;”>int > > > style=”color: red;”>则足以为整数,如 > > > style=”color: red;”>varchar(4) > > > style=”color: red;”>可感到字符串

视图

style=”font-family: SimSun; font-size: 18px; color: #3333ff;”>创设视图

style=”font-family: SimSun; font-size: 18px; color: #ffff00; background-color: #ff0000;”>创设或调换视图语法:

create or
replace view 视图名[字段名1,字段名2,…..] as 查询语句

style=”background-color: #ff0000; color: #ffff00; font-family: SimSun; font-size: 18px;”>从单个表中派生视图

如:

create view v1
as select StuID,StuName from Student_info;

style=”font-family: SimSun; font-size: 18px;”>图片 14

style=”color: #ffff00; font-family: SimSun; font-size: 18px; background-color: #ff0000;”>从八个表中派生视图

如:

create view v2
as select * from student_info,test_table where
student_info.StuID = test_table.test_StuID;

style=”font-family: SimSun; font-size: 18px;”>图片 15

style=”font-family: SimSun; font-size: 18px;”>图片 16

style=”background-color: #ff0000; color: #ffff00; font-family: SimSun; font-size: 18px;”>视图虚字段

如:

create view v3 as select
StuName,Telephone as oritel,telephone + 1 as retel from
student_info;

> style=”font-size: 18px; color: #ff6600;”>注:这里再度创制了一个视图,有三个属性分别为StuName、oritel、retel,其中oritel属性正是Telephone,retel属性是Telephone+1的值。因为这里的oritel和retel属性在原表中是未曾的,须求经过估测计算而来的,全部被改成虚字段。

style=”font-size: 18px;”>图片 17

style=”font-family: SimSun; font-size: 18px; color: #3333ff;”>删除视图

style=”font-family: SimSun; font-size: 18px; color: #ffff00; background-color: #ff0000;”>删除视图语法:

drop view
视图名

  • > style=”font-family: SimSun; font-size: 18px;”>如:*

drop view
v3;

style=”color: #3333ff; font-family: SimSun; font-size: 18px;”>视图的求证

style=”font-family: SimSun; font-size: 18px;”>MySQL中的视图是可更新的,任何对原表的变动都会反馈到视图中,恐怕别的对视图的退换都会反应到原表上。

正则表明式

style=”font-family: SimSun; font-size: 18px; color: #3333ff;”>查找钦定的数目

style=”font-family: SimSun; font-size: 18px; color: #ffff00; background-color: #ff0000;”>查找name字段中以’st’为开端的装有数据:

select name
from table_name where name regexp’^st’;

style=”font-family: SimSun; font-size: 18px; color: #ffff33; background-color: #ff0000;”>查找name字段中以’ok’为最后的具备数据:

SELECT name
FROM person_tbl WHERE name REGEXP ‘ok$’;

style=”font-family: SimSun; font-size: 18px; color: #ffff33; background-color: #ff0000;”>查找name字段中蕴含’mar’字符串的有所数据:

SELECT name
FROM person_tbl WHERE name REGEXP ‘mar’;

style=”font-family: SimSun; font-size: 18px; color: #ffff33; background-color: #ff0000;”>查找name字段中以元音字符开首且以’ok’字符串结尾的保有数据:

SELECT name
FROM person_tbl WHERE name REGEXP ‘^[aeiou].+ok$’;

style=”font-family: SimSun; font-size: 18px; color: #ffff33; background-color: #ff0000;”>查找name字段中以元音字符起头只怕以’ok’字符串结尾的持有数据:

SELECT name
FROM person_tbl WHERE nameREGEXP ‘^[aeiou]|ok$’;

NULL运算符

style=”font-family: SimSun; font-size: 18px; color: #3366ff;”>说明:

IS NULL:
当列的值是NULL,此运算符再次回到true。

IS NOT NULL:
当列的值不为NULL, 运算符再次来到true。

<=>:
比较操作符(不一致于=运算符),当比较的的四个值为NULL时回来true。

style=”font-family: SimSun; font-size: 18px; color: #3333ff;”>例子:

比如:

select * from
table where column_name is null;

style=”font-family: SimSun; font-size: 18px;”>注:将会呈现column_name为null的兼具数据,无法使用select
* from table where column_name = null。

 

select * from
table where column_nameis not null;

style=”font-family: SimSun; font-size: 18px;”>注:将会来得column_name不为空的享有数据,不能够选择select
* from table where column_name != null。

 

select null
<=> null;

style=”font-family: SimSun; font-size: 18px;”>注:将会展现1。

 

select null
<=>”NotEmpty”;

style=”font-family: SimSun; font-size: 18px;”>注:将会展现0。

SQL注入

style=”font-family: SimSun; font-size: 18px; color: #3333ff;”>sql注入是怎么样

style=”font-family: SimSun; font-size: 18px;”>正是由此把SQL命令插入到Web表单递交或输入域名或页面央浼的查询字符串,最后抵达诈骗服务器实行恶意的SQL命令。

style=”color: #3333ff; font-family: SimSun; font-size: 18px;”>举例

style=”font-family: SimSun; font-size: 18px;”>MySQL特点,实施语句的时候如若出现如此的言语将会不报错,并且继续实行,

select * from
table_name where user =value;show tables;

style=”font-family: SimSun; font-size: 18px;”>那样回车正是两个语句,这里是会试行三个语句的,假若在表单中询问顾客的信息,那么在表单输入中的客商名一栏写入,

‘jame;delete
from user;’

style=”font-family: SimSun; font-size: 18px;”>那么最后就能够去除user表。

 

事务

一般的话,事务是必需满意4个条件(ACID):Atomicity(原子性)、Consistency(牢固性)、Isolation(隔开性)、Durability(可信赖性)

1、事务的原子性:一组专门的学业,要么成功;要么撤回。

2、稳固性 :
有违规数据(外键约束之类),事务撤回。

3、隔开分离性:事务独立运维。三个事务管理后的结果,影响了别的工作,那么其余事务会撤回。事务的百分之百隔绝,必要捐躯速度。

4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可信性和高速度不可兼得,
innodb_flush_log_at_trx_commit选项
决定哪些时候吧事务保存到日志里。

 

双索引

primary
key(column1,column2);

设置了双索引的话,那么满意多个数据都再一次的数目不会存入,有叁个数据重复则足以积攒。

图片 18

order by

语法:

order by
属性1,属性2,…… [asc,desc];

注:asc为升序(默感觉升序)

desc为降序

  当有多少个属性值举办排序的时候,遵照前后相继顺序进行排序。

:

select * from
Student_info order byStuID,StuName desc;

先依照StuID进行降序排序,再遵照StuName举办升序排序。

 

删去有些数据库下的全数表

SELECT concat(‘DROP
TABLE IF EXISTS ‘, table_name, ‘;’)

FROM
information_schema.tables

WHERE table_schema
= ‘mydb’;

将mydb换来需求删除的数据库就足以了。

 

binary

binary用于能够用于区分轻重缓急写

MySQL中自然是不区分轻重缓急写的,

比如:“select\
from table_name where name = “Jame”;*”能够查找寻table_name
表中Jame、jame、jAme等数据,

但是“select \ from
table where binary name
=”Jame”;*”就不得不搜索出Jame数据。

addcslashes() 

 

addcslashes()
函数在内定的字符前增添反斜杠。

参数    描述

string 必须。规定要检查的字符串。

characters     可选。规定受 addcslashes()
影响的字符或字符范围。

 

select
coalesce(a,b,c)

参数表明:倘使a==null,则选用b;假设b==null,则选用c;要是a!=null,则选拔a;倘诺a
b c 都为null ,则赶回为null(没意义)。

如:

创办叁个employee_tbl表:

 

CREATE TABLE `employee_tbl`(`id`int(11) NOT NULL,`name`char(10) NOT NULL DEFAULT '',`date` datetime NOT NULL,`singin` tinyint(4) NOT NULL DEFAULT '0' COMMENT '登录次数',
  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

向表中插入数据:

 

INSERT INTO `employee_tbl` VALUES ('1','小明','2016-04-22 15:25:33','1'),('2','小王','2016-04-20 15:25:47','3'),('3','小丽','2016-04-19 15:26:02','2'),('4','小王','2016-04-07 15:26:14','4'),('5','小明','2016-04-11 15:26:40','4'),('6','小明','2016-04-04 15:26:54','2');

查询表中多少:

 

mysql> SELECT * FROM employee_tbl;+----+--------+---------------------+--------+| id | name   | date                | singin |+----+--------+---------------------+--------+|1|小明|2016-04-2215:25:33|1||2|小王|2016-04-2015:25:47|3||3|小丽|2016-04-1915:26:02|2||4|小王|2016-04-0715:26:14|4||5|小明|2016-04-1115:26:40|4||6|小明|2016-04-0415:26:54|2|+----+--------+---------------------+--------+

 

 

接下去我们应用 GROUP
BY 语句 将数据表按名字实行分组,并总结各种人有个别许条记下:

mysql> SELECT name, COUNT(*) FROM   employee_tbl GROUP BY name;+--------+----------+| name   | COUNT(*)|+--------+----------+|小丽|1||小明|3||小王|2|+--------+----------+3 rows inset(0.01 sec)

使用 WITH ROLLUP

WITH ROLLUP
能够兑未来分组总计数据基础上再张开一样的总结(SUM,AVG,COUNT…)。

诸如大家将以上的数据表按名字举办分组,再总括各类人登陆的次数:

mysql> SELECT name, SUM(singin)as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;+--------+--------------+| name   | singin_count |+--------+--------------+|小丽|2||小明|7||小王|7|| NULL   |16|+--------+--------------+4 rows inset(0.00 sec)

若是不利用With
Rollup则结果不会冒出NULL字段

图片 19

里面记录 NULL
表示全部人的登四次数。

咱俩得以选拔coalesce 来安装二个能够取代 NUll 的名号,coalesce 语法:

select coalesce(a,b,c);

参数表明:假如a==null,则选拔b;假设b==null,则选用c;假使a!=null,则选用a;假设a
b c 都为null ,则赶回为null(没意义)。

以下实例中一旦名叫空大家利用总量代替:

 

mysql> SELECT coalesce(name,'总数'), SUM(singin)as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;+--------------------------+--------------+| coalesce(name,'总数')| singin_count |+--------------------------+--------------+|小丽|2||小明|7||小王|7||总数|16|+--------------------------+--------------+4 rows inset(0.01 sec)

 

参照作品连接:

 

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注