MySQL基础语句概述

创建数据库

CREATE DATABASE 数据库名;

mysql> create DATABASE RUNOOB;

删除数据库

drop database <数据库名>;

mysql> drop database RUNOOB;

选择数据库

mysql> use RUNOOB;

创建数据表

CREATE TABLE table_name (column_name column_type);

CREATE TABLE IF NOT EXISTS `runoob_tbl`(

   `runoob_id` INT UNSIGNED AUTO_INCREMENT,

   `runoob_title` VARCHAR(100) NOT NULL,

   `runoob_author` VARCHAR(40) NOT NULL,

   `submission_date` DATE,

   PRIMARY KEY ( `runoob_id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8;

删除数据表

DROP TABLE table_name ;

mysql> DROP TABLE runoob_tbl

插入数据

INSERT INTO table_name ( field1, field2,...fieldN )

                       VALUES

                       ( value1, value2,...valueN );

查询数据

SELECT column_name,column_name

FROM table_name[WHERE Clause][LIMIT N][ OFFSET M]

WHERE子句

SELECT field1, field2,...fieldN

FROM table_name1, table_name2...

[WHERE condition1 [AND [OR]] condition2.....

Update查询(修改或更新 MySQL 中的数据

UPDATE table_name SET field1=new-value1, field2=new-value2[WHERE Clause]

mysql> UPDATE runoob_tbl SET runoob_title='学习 C++' WHERE runoob_id=3;

DELETE语句

DELETE FROM table_name [WHERE Clause]

mysql> DELETE FROM runoob_tbl WHERE runoob_id=3;

LIKE子句

SELECT field1, field2,...fieldN

FROM table_name

WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'

SELECT * from runoob_tbl WHERE runoob_author LIKE '%COM';

UNION操作符

MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

SELECT expression1, expression2, ... expression_n

FROM tables[WHERE conditions]

UNION [ALL | DISTINCT]

SELECT expression1, expression2, ... expression_n

FROM tables[WHERE conditions];

实例:

SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;

排序

SELECT field1, field2,...fieldN table_name1, table_name2...

ORDER BY field1, [field2...] [ASC [DESC]]

mysql> SELECT * from runoob_tbl ORDER BY submission_date ASC;

分组(GROUP BY语句)

GROUP BY 语句根据一个或多个列对结果集进行分组。

在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

SELECT column_name, function(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name;

连接的使用(JOIN)

JOIN 按照功能大致分为如下三类:

·INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。

mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count 

FROM runoob_tbl a INNER JOIN tcount_tbl b 

ON a.runoob_author = b.runoob_author;

等价于:

mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count 

FROM runoob_tbl a, tcount_tbl b 

WHERE a.runoob_author = b.runoob_author;

·LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count 

FROM runoob_tbl a RIGHT JOIN tcount_tbl b 

ON a.runoob_author = b.runoob_author;

·RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count 

FROM runoob_tbl a RIGHT JOIN tcount_tbl b 

ON a.runoob_author = b.runoob_author;

NULL处理

  MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。

为了处理这种情况,MySQL提供了三大运算符:

·IS NULL: 当列的值是 NULL,此运算符返回 true。

·IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。

·<=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。

关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。

在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false 。

MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。

mysql> SELECT * FROM runoob_test_tbl WHERE runoob_count IS NULL;

mysql> SELECT * from runoob_test_tbl WHERE runoob_count IS NOT NULL;

正则表达式

MySQL可以通过 LIKE ...% 来进行模糊匹配。

MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。

如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL的正则表达式匹配与这些脚本的类似。

下表中的正则模式可应用于 REGEXP 操作符中

查找name字段中以'st'为开头的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';

查找name字段中以'ok'为结尾的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

查找name字段中包含'mar'字符串的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

查找name字段中以元音字符开头或以'ok'字符串结尾的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!

·在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。

·事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。

·事务用来管理 insert,update,delete 语句

事务控制语句

BEGIN或START TRANSACTION;显式地开启一个事务;

COMMIT;也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改成为永久性的;

ROLLBACK;有可以使用ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;

SAVEPOINT identifier;SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT;

RELEASE SAVEPOINT identifier;删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;

ROLLBACK TO identifier;把事务回滚到标记点;

SET TRANSACTION;用来设置事务的隔离级别。InnoDB存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。

MYSQL 事务处理主要有两种方法:

  1. 用 BEGIN, ROLLBACK, COMMIT来实现

BEGIN 开始一个事务

ROLLBACK 事务回滚

COMMIT 事务确认

2、直接用 SET 来改变 MySQL 的自动提交模式:

SET AUTOCOMMIT=0 禁止自动提交

SET AUTOCOMMIT=1 开启自动提交

 

ALTER命令

当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令。

mysql> ALTER TABLE testalter_tbl  DROP i;

mysql> ALTER TABLE testalter_tbl ADD i INT;

如果需要修改字段类型及名称, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句 。

例如,把字段 c 的类型从 CHAR(1) 改为 CHAR(10),可以执行以下命令:

mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);

使用 CHANGE 子句, 语法有很大的不同。 在 CHANGE 关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型。尝试如下实例:

mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;

当你修改字段时,你可以指定是否包含值或者是否设置默认值

以下实例,指定字段 j 为 NOT NULL 且默认值为100 。

mysql> ALTER TABLE testalter_tbl

    -> MODIFY j BIGINT NOT NULL DEFAULT 100;

你可以使用 ALTER 来修改字段的默认值,尝试以下实例:

mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;

你也可以使用 ALTER 命令及 DROP子句来删除字段的默认值,如下实例:

mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

修改数据表类型,可以使用 ALTER 命令及 TYPE 子句来完成。尝试以下实例,我们将表 testalter_tbl 的类型修改为 MYISAM :

注意:查看数据表类型可以使用 SHOW TABLE STATUS 语句。

mysql> ALTER TABLE testalter_tbl ENGINE = MYISAM;

如果需要修改数据表的名称,可以在 ALTER TABLE 语句中使用 RENAME 子句来实现。

尝试以下实例将数据表 testalter_tbl 重命名为 alter_tbl:

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

设置主键

CREATE TABLE person_tbl(

   first_name CHAR(20) NOT NULL,

   last_name CHAR(20) NOT NULL,

   sex CHAR(10),

   PRIMARY KEY (last_name, first_name));

 

 

 

 

 

 

 

 

 

 

 

 

 

 

发布了64 篇原创文章 · 获赞 45 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/DengZY926/article/details/85702300