摘要

主要介绍数据库的相关的SQL语句和常见的CRUD的语法。

一、 MySQL 创建数据库

CREATE DATABASE 数据库名;

二、 MySQL 删除数据库

drop database <数据库名>;

三、MySQL 选择数据库

use Database(数据库名称);

四、MySQL 创建数据表

# runoob_tbl 表名称

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;

五、MySQL 删除数据表

# runoob_tbl 表名称

Drop table runoob_tbl;

六、MySQL 插入数据

INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES ("学习 java", "java教程", NOW());

INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES ("学习 mysql", "mysql教程", NOW());

INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES ("学习 go", "go教程", NOW());

七、MySQL 查询数据

select * from runoob_tbl;

SELECT runoob_title,submission_date from runoob_tbl rt ;

八、MySQL WHERE 子句

SELECT * from runoob_tbl WHERE runoob_author='mysql教程';

九、MySQL UPDATE 更新

UPDATE runoob_tbl SET runoob_title='庄小焱 学习go' WHERE runoob_id=3;

十、MySQL DELETE 语句

DELETE FROM runoob_tbl WHERE runoob_id=3;

十一、MySQL LIKE 子句

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

十二、MySQL UNION语句

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

 

 

十三、MySQL Order by语句

SELECT * from runoob_tbl ORDER BY submission_date ASC;# 升序

SELECT * from runoob_tbl ORDER BY submission_date DESC;# 降序

十四、MySQL GROUP BY 语句

SELECT name, COUNT(*) FROM   employee_tbl GROUP BY name;

十五、MySQL 正则表达式

# 查找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> select * from runoob_transaction_test;
Empty set (0.01 sec)
 
mysql> begin;  # 开始事务
Query OK, 0 rows affected (0.00 sec)
 
mysql> insert into runoob_transaction_test value(5);
Query OK, 1 rows affected (0.01 sec)
 
mysql> insert into runoob_transaction_test value(6);
Query OK, 1 rows affected (0.00 sec)
 
mysql> commit; # 提交事务
Query OK, 0 rows affected (0.01 sec)

--------------------------------------------------------------

mysql> begin;    # 开始事务
Query OK, 0 rows affected (0.00 sec)
 
mysql>  insert into runoob_transaction_test values(7);
Query OK, 1 rows affected (0.00 sec)
 
mysql> rollback;   # 回滚
Query OK, 0 rows affected (0.00 sec)

十七、MySQL ALTER命令

# 使用了 ALTER 命令及 DROP 子句来删除以上创建表的 i 字段

mysql> ALTER TABLE testalter_tbl  DROP i;

# MySQL 中使用 ADD 子句来向数据表中添加列,如下实例在表 testalter_tbl 中添加 i 字段,并定义数据类型:

mysql> ALTER TABLE testalter_tbl ADD i INT;

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

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

# 实例将数据表 testalter_tbl 重命名为 alter_tbl:

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

十八、MySQL 索引

# 创建索引

CREATE INDEX indexName ON table_name (column_name);

# 修改表结构(添加索引)

ALTER table tableName ADD INDEX indexName(columnName)

# 创建表的时候直接指定

CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
INDEX [indexName] (username(length))  
 
); 

# 删除索引的语法

DROP INDEX [indexName] ON mytable; 

# 创建唯一索引

CREATE UNIQUE INDEX indexName ON mytable(username(length)) 

# 修改表结构 

ALTER table mytable ADD UNIQUE [indexName] (username(length))

# 创建表的时候直接指定

CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
UNIQUE [indexName] (username(length))  
 
); 

# 使用ALTER 命令添加和删除索引

ALTER TABLE testalter_tbl ADD INDEX (c);

ALTER TABLE testalter_tbl DROP INDEX c;

# 使用 ALTER 命令添加和删除主键

mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);

mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;

# 显示索引信息

mysql> SHOW INDEX FROM table_name\G;

十九、MySQL 处理重复数据

# 统计重复数据

mysql> SELECT COUNT(*) as repetitions, last_name, first_name
    -> FROM person_tbl
    -> GROUP BY last_name, first_name
    -> HAVING repetitions > 1;
# 过滤重复数据

mysql> SELECT DISTINCT last_name, first_name
    -> FROM person_tbl;

# 可以使用 GROUP BY 来读取数据表中不重复的数据:

mysql> SELECT last_name, first_name
    -> FROM person_tbl
    -> GROUP BY (last_name, first_name);
# 删除重复数据

mysql> CREATE TABLE tmp SELECT last_name, first_name, sex FROM person_tbl  GROUP BY (last_name, first_name, sex);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;

# 在数据表中添加 INDEX(索引) 和 PRIMAY KEY(主键)这种简单的方法来删除表中的重复记录。方法如下:

mysql> ALTER IGNORE TABLE person_tbl
    -> ADD PRIMARY KEY (last_name, first_name);

二十、MySQL 函数

# 返回 CustomerName 字段第一个字母的 ASCII 码:

SELECT ASCII(CustomerName) AS NumCodeOfFirstChar
FROM Customers;

# 返回字符串 RUNOOB 的字符数

SELECT CHAR_LENGTH("RUNOOB") AS LengthOfString;

# 返回字符串 RUNOOB 的字符数

SELECT CHARACTER_LENGTH("RUNOOB") AS LengthOfString;

# 合并多个字符串

SELECT CONCAT("SQL ", "Runoob ", "Gooogle ", "Facebook") AS ConcatenatedString;

# 合并多个字符串,并添加分隔符:

SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;

# 返回字符串 c 在列表值中的位置:

SELECT FIELD("c", "a", "b", "c", "d", "e");

# 返回字符串 c 在指定字符串中的位置:

SELECT FIND_IN_SET("c", "a,b,c,d,e");

# 格式化数字 "#,###.##" 形式:

SELECT FORMAT(250500.5634, 2);     -- 输出 250,500.56

# 从字符串第一个位置开始的 6 个字符替换为 runoob:

SELECT INSERT("google", 1, 6, "runoob");  -- 输出:runoob

# 获取 b 在字符串 abc 中的位置:

SELECT LOCATE('st','myteststring');  -- 5

# 返回字符串 abc 中 b 的位置:

SELECT LOCATE('b', 'abc') -- 2

# 字符串 RUNOOB 转换为小写:

SELECT LCASE('RUNOOB') -- runoob

# 返回字符串 runoob 中的前两个字符:

SELECT LEFT('runoob',2) -- ru

# 将字符串 xx 填充到 abc 字符串的开始处:

SELECT LPAD('abc',5,'xx') -- xxabc

博文参考

MySQL 创建数据库 | 菜鸟教程

更多推荐

MYSQL——数据库常SQL语法