搞定linux上MySQL编程(二):MySQL语法基础操作

【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】
	sql(structured query language)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
	sql语言包含3部分:
1. 数据定义语言(DDL),用于定义和管理对象,例如数据库、数据表以及试图等。例如create、drop、alter等语句。
2. 数据操作语言(DML),用于操作数据库中数据,例如select、 insert、update、delete等。
3. 数据控制语言(DCL),用于管理数据库,包含管理权限及数据更改。例如grant、revoke、commit、rollback等。

	类似高级开发语言,sql中数据也有不同的类型,不同的数据类型存放不同的数据,sql中数据类型分为5种:字符型(存放一段较短的字符串)、文本型(存储大串的字符)、数值型(存放整数、实数、浮点数)、逻辑型(即布尔型,取值0或1)、日期型。sql语句中也可以添加注释,有如下三种:“#”(类似shell脚本的注释)、“--”、和类似c语言的/*....*/可多行注释。

数据库的操作:
1.创建数据库:create database <数据库名称>。例如:
create database db_users;
mysql> create database db_users;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db_users           |
| mysql              |
| test               |
+--------------------+
5 rows in set (0.00 sec)

2.删除数据库:drop database <数据库名称>。例如:

mysql> drop database db_users;
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)

mysql> 

表的操作:表是数据库重要组成部分,数据库通常由一个或多个数据表组成。数据库中所有数据或信息都被保存在这些数据表中。每一个表名称在数据库中是唯一的,表由行和列组成,每一列列包括该列名称、数据类型和其他属性,而行则具体包含某一列的记录或数据。1.创建表: create table <表名> (<列名> <数据类型> [<列级完整性约束条件>][,<列名> <数据类型> [<列级完整性约束条件>] ]...[,<表级完整性约束条件> ])实际使用中一般只用到比较简单的表创建语言,只需要表面和字段定义。例如:

mysql> use db_users;
Database changed
mysql> create table regusers (
    -> userid int auto_increment not null primary key,
    -> username char(32),
    -> birth date);
Query OK, 0 rows affected (0.01 sec)

mysql> describe regusers;
+----------+----------+------+-----+---------+----------------+
| Field    | Type     | Null | Key | Default | Extra          |
+----------+----------+------+-----+---------+----------------+
| userid   | int(11)  | NO   | PRI | NULL    | auto_increment |
| username | char(32) | YES  |     | NULL    |                |
| birth    | date     | YES  |     | NULL    |                |
+----------+----------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

2.修改表,当发现表结构不满足要求时,使用alter table语句修改列属性,甚至可以修改表名称。修改语法如下:alter table <表名>[ADD <新列名> <数据类型> [完整性约束] ][DROP <完整性约束>][ALTER COLUMN <列名> <数据类型>];例如原来regusers表中没有“最后登录时间”属性,可以通过修改表解决该问题。如下:

mysql> alter table regusers add last_login date;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> describe regusers;
+------------+----------+------+-----+---------+----------------+
| Field      | Type     | Null | Key | Default | Extra          |
+------------+----------+------+-----+---------+----------------+
| userid     | int(11)  | NO   | PRI | NULL    | auto_increment |
| username   | char(32) | YES  |     | NULL    |                |
| birth      | date     | YES  |     | NULL    |                |
| last_login | date     | YES  |     | NULL    |                |
+------------+----------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

mysql> 

3. 删除表,drop table <表名>,<表名>...;可以指定多个表,同时删除。记录的操作:数据库中记录就是实际的数据信息,数据的存储也是通过数据记录来体现的。sql的功能主要体现在对这些记录的操作上。存储记录的前提是必须有数据库和数据表,有了表之后就可以进行插入、删除、更新操作了。1.插入记录,使用insert语句向指定数据表中插入新的数据行。语法格式如下:insert into <表名> [(<属性列1>,<属下列2>...)] values (<常量1> [,<常量2>] ...); 例如:

mysql> insert into regusers (userid, username, birth, last_login) values (10000, 'allen', '1981-1-1', '2014-2-2');
Query OK, 1 row affected (0.00 sec)

mysql> insert into regusers (username, birth, last_login) values ('brooks', '1982-4-2', '2014-4-30');
Query OK, 1 row affected (0.00 sec)

mysql> insert into regusers (username, birth, last_login) values ('curry', '1985-8-12', '2014-1-17');
Query OK, 1 row affected (0.00 sec)

mysql> select * from regusers;
+--------+----------+------------+------------+
| userid | username | birth      | last_login |
+--------+----------+------------+------------+
|  10000 | allen    | 1981-01-01 | 2014-02-02 |
|  10001 | brooks   | 1982-04-02 | 2014-04-30 |
|  10002 | curry    | 1985-08-12 | 2014-01-17 |
+--------+----------+------------+------------+
3 rows in set (0.00 sec)

mysql> 

4. 更新记录,使用update语句更新或修改满足规定条件的记录。update语句格式为:update <表名> set <列名>=<表达式> [,<列名>=<表达式>]... [where <条件>];例如将regusers表中姓名为brooks的记录的记录修改为ben,如下:

mysql> update regusers set username='ben' where username='brooks';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from regusers;
+--------+----------+------------+------------+
| userid | username | birth      | last_login |
+--------+----------+------------+------------+
|  10000 | allen    | 1981-01-01 | 2014-02-02 |
|  10001 | ben      | 1982-04-02 | 2014-04-30 |
|  10002 | curry    | 1985-08-12 | 2014-01-17 |
+--------+----------+------------+------------+
3 rows in set (0.01 sec)

mysql> 

5. 删除记录。使用delete语句删除数据表中满足指定条件的记录。delete语句的语法为:delete from <表名> [where <条件>]; 例如删除表中userid为10002的的记录如下:

mysql> delete from regusers where userid=10002;
Query OK, 1 row affected (0.02 sec)

mysql> select * from regusers;
+--------+----------+------------+------------+
| userid | username | birth      | last_login |
+--------+----------+------------+------------+
|  10000 | allen    | 1981-01-01 | 2014-02-02 |
|  10001 | ben      | 1982-04-02 | 2014-04-30 |
+--------+----------+------------+------------+
2 rows in set (0.00 sec)

mysql> 

数据库查询操作:sql使用select语句实现数据库的查询。查询是数据库使用最为频繁的操作。select可以查询表中指定满足条件的若干列,同时可对查询结果按一定顺序排序。

查询表tb_users中所有记录sql如下:
mysql> select * from tb_users;
+--------+----------+------------+------------+
| userid | username | birth      | last_login |
+--------+----------+------------+------------+
|  10000 | allen    | 1981-01-01 | 2014-02-02 |
|  10001 | ben      | 1982-04-02 | 2014-04-30 |
|  10002 | curry    | 1985-08-12 | 2014-01-17 |
+--------+----------+------------+------------+
3 rows in set (0.00 sec)
查询出生年月小于1983-1-1的所有用户:
mysql> select * from tb_users where birth < '1983-1-1';
+--------+----------+------------+------------+
| userid | username | birth      | last_login |
+--------+----------+------------+------------+
|  10000 | allen    | 1981-01-01 | 2014-02-02 |
|  10001 | ben      | 1982-04-02 | 2014-04-30 |
+--------+----------+------------+------------+
2 rows in set (0.00 sec)
查询出生年月大于1982-1-1,并且按最后登录时间排序:
mysql> select * from tb_users where birth > '1982-1-1' order by last_login;
+--------+----------+------------+------------+
| userid | username | birth      | last_login |
+--------+----------+------------+------------+
|  10002 | curry    | 1985-08-12 | 2014-01-17 |
|  10001 | ben      | 1982-04-02 | 2014-04-30 |
+--------+----------+------------+------------+
2 rows in set (0.00 sec)
只显示用户及其最后登录时间:
mysql> select username,last_login from tb_users;
+----------+------------+
| username | last_login |
+----------+------------+
| allen    | 2014-02-02 |
| ben      | 2014-04-30 |
| curry    | 2014-01-17 |
+----------+------------+
3 rows in set (0.00 sec)
				
时间: 2024-10-12 14:16:37

搞定linux上MySQL编程(二):MySQL语法基础操作的相关文章

搞定linux上MySQL编程(四):mysql权限管理

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] mysql中提供了比较完整的安全/权限管理系统,下面简单介绍权限的原理和使用. mysql数据库安装完成启动之后,能看当前数据库列表可以看到一个mysql的数据库: mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | |

搞定linux上MySQL编程(五):数据导入导出和备份

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 在MySQL中提供多种数据导入方法,比如mysqlinport.sql语句导入以及编写专门导入程序等.通常情况下,数据导入基本步骤科分成3步: 1. 确定导入的数据源,按固定格式存储的文本文件或者SQL文件. 2. 依照导入的文件格式,确定目标数据表,这个数据表如果没有,可以依照导入的文本文件格式,创建一个相对应的数据表. 3. 执行导入命令,将数据导入数据表中. 下面分别介

搞定linux上MySQL编程(六):C语言编写MySQL程序(结)

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 在实际应用中,我们不可能在命令行登录进数据库进行数据的查询.插入等操作,用户一般是使用一个界面良好的应用程序软件来对数据进行管理.为了方便应用程序的开发,MySQL提供了多种编程语言(C.perl.php等)的编程接口,供开发者使用. 对于C语言来说,MySQL提供了C语言客户机库,它允许从任何C程序的内部访问MySQL数据库,客户机实现API,API定义了客户机如何建立和执

搞定linux上MySQL编程(三):MySQL高级语法

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 本节介绍Mysql高级语法,包括试图.存储过程.索引等,通过使用试图.触发器等来优化数据库设计和查询技术,提高数据处理能力与效率. 视图操作: 视图是一个虚拟表,内容由查询定义.视图并不在数据库中以存储的数据值集形式存在,行和列数据来源于定义视图的查询所引用的表,且在引用试图时动态生成.从数据库系统外部来看,视图就如同一张表一样,对表能够进行的一般操作的哦可以应用于视图,例如

搞定linux上MySQL编程(一):linux上源码安装MySQL

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 1. 首先下载源码包: ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.1/mysql-5.1.72.tar.gz 2. 使用如下命令检查系统中是否已安装mysql: rpm -qa | grep mysql 3.没有安装则解压安装包然后进入该目录: cd mysql 分别依次执行如下操作: ./configure --pr

linux上源码安装MySQL详解

最近需要使用MySQL Fabric,这货是MySQL5.6.10之后才出现的utility.手头机器装的是MySQL5.1,所以需要先把旧版MySQL升级成5.6版本.之前没有玩过MySQL,所以这次稍微费了点事.在此,把过程记录下来,希望能给有需求的人提供一点帮助.下面我们就正式开始. 1. 删除老版本MySQL 其实删除老版MySQL是一件很简单的事,但是开始时候由于担心各个包的依赖会导致各种问题,亦步亦趋来得很慢.其实只需要做到这么几步就可以了: 1.1 查看已安装的mysql版本并删除

学习 Mysql - 在linux上使用yum安装MySQL

1.检查已经安装的mysql信息 yum list installed mysql*rpm -qa | grep mysql* 2.列出已安装和可安装的mysql信息 yum list mysql* 3.安装客户端 yum install mysql 4.安装服务器端 yum install mysql-server yum install mysql-devel 5.数据库字符集设置 mysql配置文件/etc/my.cnf中加入default-character-set=utf8 可以使用如

Linux 上通过rpm安装mysql

安装mysql之前要remove掉系统自带的mysql: rpm -qa | grep "MySQL*"    和rpm -qa | grep mysql  要确保卸载干净 rpm -e MySQL-server-5.1.74-1.el6.x86_64.rpm --nodeps mysql这里使用rpm 安装: 安装包:MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar tar xf MySQL-5.6.26-1.linux_glib

为什么别人一周搞定Linux,而你却做不到

我给大家精选准备了4段Shell实战脚本 / 基础Linux常用命令: 也许能解决你很多实际工作问题: 如果看到这些你不知道它能用来干嘛,先收藏.先记住吧,以后用的上- 实战命令一: 在实际的工作中,我们经常需要将多个文件同时移动到一个指定的目录下,如果一个一个移动,太折腾... 你应该要知道:mv 有一个选项叫 -t,是指定目标文件夹,就是我们所要将文件移至的文件夹 方法/步骤 比如当前目录下有a.dir b.dir c.dir isTester.html ido.txt 我们现在要将a.di