`
luozhong915127
  • 浏览: 188814 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
文章分类
社区版块
存档分类
最新评论
阅读更多

 首先要安装mysql,而数据库中有默认有三个库:imformation_schema,mysql,test.

创建自己的数据库来使用: mysql> create database luozhong; Query OK, 1 row affected (0.02 sec)


如果要使用数据库,必须执行如下命令:

创建一个用户信息表:

 

id int(11) unsigned null auto_increment, id_add int unsigned not null default '0', name varchar(20), name varchar(20) not null default '0', cj int not null, primary key(id));

   创建成功后,显示表结构:

mysql> desc userinfo1;
+--------+--------------+------+-----+---------+----------------+
| Field  | Type         | Null | Key | Default | Extra          |
+--------+--------------+------+-----+---------+----------------+
| id     | int(11)      | NO   | PRI | NULL    | auto_increment |
| name   | varchar(20)  | YES  |     | 0       |                |
| pwd    | varchar(20)  | YES  |     | NULL    |                |
| usercj | varchar(100) | YES  |     | NULL    |                |
| age    | int(20)      | YES  |     | NULL    |                |
+--------+--------------+------+-----+---------+----------------+
5 rows in set (0.05 sec)

<!--EndFragment-->

<!--EndFragment-->

 

向表中插入数据,要使用Insert语句,格式为:

 Insert into 表名(列名1,列名2,)values(值1,值2,)

 

向表中插入一行完整数据:

<!--EndFragment-->

 

 

<!--EndFragment-->

 

 

注意:插入时我们并没有写id列名和值,这个列值是由数据库自增长生成的,所以不需要写。

 

1.更新某一列:

<!--EndFragment-->

 

 

2.删除表数据:

 

 

<!--EndFragment-->

3.清空表:

  Truncate与delete的区别是:前者是物理删除,不支持事务!即删掉的数据是无法恢复的!所以在使用truncate时,要特别注意!

<!--EndFragment-->

 

 

1.简单查询:

mysql> select * from userinfo1;

 mysql> select id,name from userinfo1;


 

 查询时,使用*会返回所有列,当然,你也可以如上示例,指定需要的列。

 

2.对结果排序:

<!--EndFragment-->
<!--EndFragment-->

<!--EndFragment-->

 

 

mysql> select * from userinfo1 order by id desc;

 

Order by 列名  desc|asc会对结果集进行升序或降序排列,如果要排列的列是字符串呢?

<!--EndFragment--><!--EndFragment-->

 

 

 

条件查询

Select 语句后可以跟where子句指定查询条件,where条件中可以指定如下操作符:

 

说明

关键字

多重条件

And 、or

比较条件

=、>、<、!=、!>、!<、not+比较条件

是否在某一范围

In(<可选值集>)、not in(<可选值集>)

是否空值

Is null:某列为null时为真,is not null:某列非空时为真

模糊匹配

Like %/_<字符串>

%模糊匹配任意内容,例:a%b表示以a开头,以b结尾的任意长度的字符串。如acbaddgbab 等都满足该匹配串;

_ 模糊匹配某一个字符,例:a_b表示以a开头,以b结尾的长度为3的任意字符串。如acbafb等都满足该匹配串。当用户要查询的字符串本身就含有 %  _ 时,要使用ESCAPE '<换码字符>' 短语对通配符进行转义。

 

 

 查询userinfo表中所有descre非null的行:

<!--EndFragment--> select * from userinfo1 where deser is not null;


 

 查询所有age为21,22,23的行:

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

查询所有name列值以三个字符结尾,且前面两个为et的:

<!--EndFragment--><!--EndFragment--><!--EndFragment-->

 

mysql>select * from userinfo1 where name like '%et_'  


and or查询:

 

mysql>select * from userinfo1 where age>20 and age<22 or name like '%ja'


 

<!--EndFragment--><!--EndFragment-->

 别名查询:

 

mysql>select u.id,u.name as xingming from userinfo1 u;


聚集查询:

 在查询时,根据业务需要使用统计函数,可以大大提高效率,一般数据库除了有自己内置的函数外,都支持如下六个常用函数:

 

函数名

用途

COUNT(*)

计算总行数

SUM(列名)

计算某例值的总和

AVG(列名)

计算某例值的平均值

MAX(列名)

查找某例值的最大值

MIN(列名)

查找某例值的最小值

DISTINCT(列名)

不显示列值重复的行

   例如:

查找post表中记录个数:

  注意,count统计的是所有行数,不能再同时查询其它列值。

查找pageview最大的的记录:

统计平均viewcount的值:

统计keyword列不重复的有多少行:

 

 

<!--EndFragment--><!--EndFragment-->

常用函数查询:

函数查询会因数据库而异,具体请参考各数据库说明手册,如下示例:

将name列转为大写:

事务支持:

事务是指一组sql语句的执行,要么全部成功,要么全部失败!

开启事务,在mysql中使用如下命令:

  在此行后执行的sql(对表的CRUD)操作,都只是对当前用户可见,并没有物理的写入数据库。

连结执行多条sql后,再执行如下语句,即所有操作生效:

  如果执行中出错或要撒消以前(在start transaction后的sql操作,可以使用如下命令让数据恢复到事务开启前状态:

  请完成对事务命令使用的测试。

管理约束:

 约束(constraint):定义插入或处理数据库数据的规则。

1.主键:

主键所在列值是唯一的,用以唯一标识表中的一行数据。

 例如,我们定义了BlogInfo表:

 然后,修改这个表的id列为主键:

   特别注意的是:主键列必须保持唯一,在本例中,id的值需要由插入程序保证其唯一性----而不是依赖与数据库的自增长字段实现。

2.外键: 

      外键也是表中的一列,但其值必须在另外一个表的列中存在,外键用以保证表数据引用的完整性。

     如果B表的b.aid列引用了A表的id做为外建,A表的id必须是A表的主键。

     例如我们创建一个bloginfo表,用以保存用户所发表的日志信息----每一条日志记录都必须对应于userinfo表的一个用户的id.

   创建bloginfo表如下:

  给bloginfo表的id_user列加上对userinfo表的id列的外键引用:

   以上语句执行后,就会bloginfo表加上了一个名为fk_bloginfo_uid的外健引用约束;并且设定了级联删除---当从userinfo表中删除一个用户时,此用户id对应的在bloginfo表中的记录都会delete!

   要取消这个约束,只需执行如下语句即可:

  注意:在mysql中,外键必须是其所在表中的主键且自增长,且引用双方的数据类型必须相同!

 

3.唯一性约束:

唯一性约束用以保证表中的一列(或一组列)数据的唯一性,类似于主键,但于主键有如下区别:

1. 一个表只能有一个主键,但可有多个约束;

2. 唯一约束列中可含有Null值;

3. 唯一约束不能被定义为外键引用;

例如,在用户表中,所有的用户名字应是唯一的:

   执行如上语句,就给userinfo表的name列加上了一个名为index_unique的唯一性约束,数据库在检查这个约束时使用HASH算法。

  要取消此约束:

 

4.创建索引:

 索引在数据库中用以加快搜索和排序的速度---如果你查过字典的话;

前面我们创建的主键,唯一约束都是一种索引;索引可以提升查询速度,这并不意味着表中的索引越多越好,对于插入量大的表,建过多的索引显然不是合适的做法;如果要经常根据表中某个字段查询,就可以给它建上索引。

  以上语句,就给bloginfo表的title列加上了名字index_title的索引,算法使用Btree算法;如果要取消,执行如下语句:

 

5.1.10..更新表结构:

更新表的定义,使用ALTER TABLE命令:

给表中增加一列:

   删除表中一列:

   删除整个表:

 

5.1.11.sql语言总结:

1.sql语句分类:

1.根据性质分类:

数据库相关的操作都可以通过sql语句完成,sql语句根据其性质可以分为如下几类:

 

SQL功能

核心动词

说明

 数据库定义

CREATE,DROP,ALTER

创建/修改数据库对象,如表,用户,序列、索引、主外键等。

数据查询

SELECT

执行数据查询,

数据操作

INSERT,UPDATE,DELETE

增、删、改操作

数据控制

BRANT,REVOKE

用户权限控制

 

2.根据操作对象分类:

对于结构查询语言(有时称SQL命令),可以将它们分成两组,一组是数据定义语言DDL(Data  Define  Language)另一组是数据操纵语言DML(Data  Manipulation  Language)

其中用于DDL的语言如下,主要用于对数据库对象,如表、索引等的操作:

     Alter   procedure                     重编译过程

     Alter   table                         修改表的属性

     Analyze                               统计数据库对象性能值

     Alter  table  add  Constraint         对已有的表加约束

     Create  table                         建立表结构

     Create  index                         建立索引

     Drop  table                           删除表实体及相关的索引

     Drop  index                           删除索引

     Grant                                 授权给用户或角色

     Truncate                              删除表中的所有行

     Revoke                                从用户或角色收回权限

 

DML其中用于数据操纵的命令如下,主要用于对表数据的操作:

     Insert

     Delete

     Update

     Select

     Commit  work

     Rollback

2.sql数据类型和关键字:

1.sql的数据类型

标准Sql数据类型与java数据类型映射关系:

 

SQL数据类型

Java类型

说明

CHAR, VARCHAR, LONGVARCHAR

String                

字符串类型

NUMERIC, DECIMAL         

java.math.BigDecimal  

大数据类型

BIT                         

boolean               

布尔型

TINYINT                         

byte                  

Byte型

SMALLINT                 

short                 

 

INTEGER                     

int                   

 

BIGINT                         

long                  

 

REAL                         

float                 

 

FLOAT, DOUBLE                 

double

 

BINARY, VARBINARY, LONGVARBINARY

byte[]                

二进制

DATE                         

java.sql.Date         

时间类型

TIME                         

java.sql.Time         

 

TIMESTAMP                 

java.sql.Timestamp    

 

以上为标准sql定义的数据类型与java数据类型的映射,事实上,每种数据库(oracle,sqlserver,mysql)所使用的数据类型与标准sql有一定的区别,实际使用时,需要注意。下表为oracle9I所定义的数据类型说明:

 

数据类型

说明

Char                

  用于描述定长的字符型数据,长度<=2000 字节

     varchar2          

    用于描述变长的字符型数据,长度<=4000 字节

     nchar               

  用来存储Unicode 字符集的定长字符型数据,长度<=1000 字节

     nvarchar2         

    用来存储Unicode 字符集的变长字符型数据,长度<=1000 字节

     number                

用来存储整型或者浮点型数值

     Date                 

用来存储日期数据

     Long                 

用来存储最大长度为2GB 的变长字符数据

     Raw                  

用来存储非结构化数据的变长字符数据,长度<=2000 字节

     Long raw             

用来存储非结构化数据的变长字符数据,长度<=2GB

     rowid                

用来存储表中列的物理地址的二进制数据,占用固定的 10 个字节

     Blob                  

用来存储多达4GB 的非结构化的二进制数据

 

2.sql关键字:

使用sql时,与java编程同理,sql中也有如下常用关键字---这些关键字不能用做数据变量:

Alter                       Insert  

Audit                       Lock  

Commit                      Noaudit

Comment                     Rename

Create                      Revoke

Delete                      Select

Drop                        Update

Grant                       Validate

<!--EndFragment-->
<!--EndFragment-->

 

<!--EndFragment-->

<!--EndFragment--><!--EndFragment-->

1
0
分享到:
评论

相关推荐

    MYSQL

    4.12.1 在 Win32 上安装 MySQL 4.12.2 在 Win95 /Win98上启动 MySQL 4.12.3 在 NT 上启动 MySQL 4.12.4 在 Win32 上运行 MySQL 4.12.5 用 SSH 从 Win32 连接一个远程MySQL 4.12.6 MySQL-Win...

    MySQL中文参考手册.chm

    MySQL中文参考手册.chm 449kb &lt;br/&gt;0 译者序 1 MySQL的一般的信息 1.1 什么是MySQL? 1.2 关于本手册 1.2.1 本手册中使用的约定 1.3 MySQL的历史 1.4 MySQL的主要特征 1.5...

    mysql5.5、mysql5.6、mysql5.7、mysql8 各种版本最新下载合集

    mysql5.5、mysql5.5、mysql5.7、mysql8 各种版本最新下载合集 MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提 高了灵活性。 MySQL...

    MySql 5.1 参考手册.chm

    1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. ...

    mysql5.7.20镜像安装包

    mysql5.7.20镜像安装包,该镜像为mysql数据库镜像,安装后可直接使用。 mysql5.7.20镜像安装包,该镜像为mysql数据库镜像,安装后可直接使用。 安装完成后,我们可以使用以下命令来运行 mysql 容器: $ docker run ...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    ├─新版MySQL DBA 课件ppt │ 第一课数据库介绍篇.pdf │ 第七课MySQL数据库设计.pdf │ 第三十一课percona-toolkits 的实战及自动化.pdf │ 第三课MySQL授权认证.pdf │ 第九课MySQL字符集.pdf │ 第二十一课MySQL...

    mysql8.0升级版本

    MySQL 8.0 升级版本 在本文中,我们将详细介绍 MySQL 8.0 升级版本的步骤和注意事项。MySQL 是一个流行的开源关系数据库管理系统,广泛应用于各种Web 应用程序中。升级 MySQL 版本可以提高数据库性能、修复 bugs 和...

    MySQL5.7docker离线包

    Docker 离线安装 MySQL 5.7 使用说明 本文将指导你如何使用离线的 Docker 镜像包 (docker-mysql-5.7.tar.zip) 来在 Linux 系统中安装并运行 MySQL 5.7 容器。 前提条件 • 已安装 Docker 环境。 • MySQL 5.7 ...

    C#连接MySQL需要的MySql.Data.dll,MySql.Web.dll

    在C#编程环境中,连接MySQL数据库通常依赖于特定的数据提供者,这就是MySql.Data.dll和MySql.Web.dll的角色。这两个动态链接库(DLL)文件是MySQL官方提供的.NET数据访问组件,使得C#开发者能够轻松地与MySQL服务器...

    mysql57驱动jar包

    mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57...

    Mysql5.6、Mysql5.7 JDBC驱动

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,而JDBC(Java Database Connectivity)是Java语言与数据库交互的标准接口。本文将深入探讨Mysql5.6和Mysql5.7的JDBC驱动,以及如何使用`mysql-connector-java-...

    Windows mysql8.0.36.0详细安装教程,附带MySQL安装包

    在本教程中,我们将深入探讨如何在Windows操作系统上详细安装MySQL 8.0.36.0。MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),它在各种规模的企业和项目中扮演着核心角色。MySQL 8.0版本带来了许多性能...

    MySQL ODBC 5.1 Driver(Mysql驱动免安装版)

    MySQL ODBC 5.1 Driver 是一个用于连接MySQL数据库的开放数据库连接(ODBC)驱动程序,它允许用户通过标准的ODBC接口访问MySQL数据库,适用于Windows操作系统。这个版本是免安装的,意味着用户可以直接解压使用,...

    mysql驱动jar 文件适用MySQL5.7

    MySQL驱动jar文件是Java应用程序与MySQL数据库之间通信的关键组件,主要功能是提供Java Database Connectivity (JDBC) API,使得Java开发者能够通过编写Java代码来执行SQL语句,从而操作MySQL数据库。标题提到的...

    mysql5.1中文手册

    MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的...

    mysql官方中文参考手册

    MySQL 5.1参考手册 目录 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. ...

    mysql 5.7 中文文档

    MySQL 5.7中文文档是针对这个特定数据库版本的详细技术参考,包含了丰富的信息,适合开发者、管理员和学习者使用。文档的翻译质量被描述为“还行”,尽管资源可能不易找到,但提供了全面的指南。 该文档涵盖了从...

    mysql数据库镜像安装包+教程(5.7版本)

    mysql5.7安装教程+mysql5.7镜像安装+mysql学习+mysql5.7镜像包 mysql5.7安装教程+mysql5.7镜像安装+mysql学习+mysql5.7镜像包 mysql5.7安装教程+mysql5.7镜像安装+mysql学习+mysql5.7镜像包 mysql5.7安装教程+mysql...

    mysql8、mysql5两个版本驱动

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,其驱动程序是Java应用程序连接MySQL数据库的关键组件。本文将详细介绍MySQL 8和MySQL 5驱动的区别以及与JDK版本的兼容性问题。 首先,MySQL 8和5的主要区别在于...

Global site tag (gtag.js) - Google Analytics