`
luozhong915127
  • 浏览: 186236 次
  • 性别: 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...

    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. ...

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

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

    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...

    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 5.1官方简体中文参考手册

    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. ...

    Mysql编译安装Mysql编译安装

    Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql...

    mysql安装教程(保姆级)-mysql-8.0.32-winx64

    mysql安装教程(保姆级)---mysql-8.0.32-winx64 mysql安装教程(保姆级)---mysql-8.0.32-winx64 mysql安装教程(保姆级)---mysql-8.0.32-winx64 mysql安装教程(保姆级)---mysql-8.0.32-winx64 mysql安装教程...

    MySQL学生成绩管理系统设计实验报告

    MySQL学生成绩管理系统设计实验报告MySQL学生成绩管理系统设计实验报告MySQL学生成绩管理系统设计实验报告MySQL学生成绩管理系统设计实验报告MySQL学生成绩管理系统设计实验报告MySQL学生成绩管理系统设计实验报告...

    MySQL最新稳定版本8.0.28

    资源包含:mysql-8.0.28-winx64.zip 和 mysql-8.0.28-winx64-debug-test.zip 官网(https://dev.mysql.com/)下载: MySQL Community Server ===&gt; Windows (x86, 64-bit), ZIP Archive ===&gt; mysql-8.0.28-winx64.zip...

    mysql-connector-java-5.1.49

    mysql57驱动jar包mysql-connector-java-5.1.49 mysql57驱动jar包mysql-connector-java-5.1.49 mysql57驱动jar包mysql-connector-java-5.1.49 mysql57驱动jar包mysql-connector-java-5.1.49 mysql57驱动jar包mysql-...

    微信小程序php后台内嵌mysql

    微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台...

    linux下mysql的rpm安装包

    一、卸载原来的mysql: 卸载一: 输入: #rpm -qa | grep -i mysql 显示: mysql-libs-5.1.52-1.el6_0.1.i686 卸载方法: yum -y remove mysql-libs-5.1.52-1.el6_0.1.i686 卸载二: 输入: #rpm -qa | grep -i ...

    MySQL5+MySQL8中文手册(chm文件)

    如果正在使用MySQL软件的较旧版本,请参阅MySQL 5.0参考手册,该手册涵盖了MySQL 5.0,或参阅MySQL 4.1参考手册,该手册涵盖了MySQL 4.1以及MySQL的所有早期版本。在手册的文本中,通过引用发布版本(5.1.x),注明...

    MySQL8中文参考手册 .chm

    MySQL参考手册。它的文件通过8.0.14 MySQL 8。它可以包括MySQL版本尚未发布功能的文档。关于哪个版本的信息已被释放,看到MySQL 8版本说明 MySQL集群是目前不在MySQL 8的支持。关于MySQL集群的信息,请参阅7.5、...

    MySQL Migration Toolkit 数据库转换工具

    MySQL Migration Toolkit 可以将任何数据源转换成mysql的数据,也可以将mysql的数据转换成其它类型的数据 MySQL Migration Toolkit 包括下列转换工具: Access-to-MySQL Access数据库转MySQL数据库 DBF-to-MySQL DBF...

    mysql-installer-community-5.7.31.0

    mysql-installer-community-5.7.31.0 mysql-installer-community-5.7.31.0 mysql-installer-community-5.7.31.0 mysql-installer-community-5.7.31.0 mysql-installer-community-5.7.31.0 mysql-installer-community...

    mysql8一键化安装脚本

    mysql8一键化安装脚本 1 可以自由安装在任何目录下(直接回车默认安装在/auto),而且所有的东西都在此目录下,不会出现在其他目录中 2 内置可以在存储过程中执行Linux命令插件 3 安装完成后,cd /auto/mysql/support-...

Global site tag (gtag.js) - Google Analytics