MySQL语法

leafqycc 53 次阅读 914 字 预计阅读时间: 4 分钟 发布于 2022-05-23 学习


备注[1]

关于MySQL的安装 [2]

1. 管理MySQL


  • 启动数据库

mysqld --console


  • 关闭数据库

mysladmin -uroot shutdown


  • 连接mysql服务器 (于mysql安装目录下的bin目录运行)

mysql -u root -p
Enter password: ******


  • 新建用户

2. 数据库操作


  • 创建数据库

create DATABASE database_name


  • 删除数据库

drop database database_name


  • 选择数据库

use database_name


3. 数据表操作


  • 创建MySQL数据表

CREATE TABLE table_name (column_name cloumn_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;

FieldTypeNullKEYDefaultExtra
runoob_idint(11)NOPRINULLauto_increment
runoob_titlevarchar(100)NONULL
runoob_authorvarchar(40)NONULL
submission_datadateYESNULL

  • 删除数据表

DROP TABLE table_name


  • 插入数据

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]

查询数据表所有记录: select *from table_name


  • 更新数据

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

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


  • 删除数据

DELETE FROM table_name [WHERE Clause]
例:

DELETE FROM runoob_tbl WHERE runoob_id=3


临时表
  • 创建临时表

CREATE TEMRORARY TABLE table_name

  • 删除临时表

DROP TABLE table_name


复制表
  • 获取表的完整结构

SHOW CREATE TABLE table_name \G


  • 拷贝数据表

INSERT INTO clone_table (field1, field2,...fieldN) SELECT field1, field2,...fieldN FROM table_name


4. MySQL语法


  • WHERE子句

SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE condition1 [AND [OR]]] condition2......
例:

SELECT *from runoob_tabl WHERE runoob_author='XXXX'


  • LIKE子句

SELECT field1, field2,...fieldN FROM table_name WHERE field1 LIKE condition1 [AND [OR]] field2 = 'somevalue'
例:

SELECT * from runoob_tbl WHERE runoob_author LIKE '%COM'


  • UNION操作符

SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions] UNION [ALL | DISTINCT] SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions]


  • SELECT排序

SELECT field1, field2,...fieldN FROM table_name1, table_name2...ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
例:
SELECT * from runoob_tbl ORDER BY submission_date ASC;


  • GROUP BY语句

SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name


  • 正则表达式

SELECT field_name FROM table_name WHERE field_name PEGEXP ['正则表达式']


5. 多数据表协作


  • 连接的使用
  1. INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录>

SELECT x.field1, x.field2,...x.fieldN, y.field1, y.filed2,...y.fieldN FROM table_name1 x INNER JOIN table_name2 y ON [coditions]
例:

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;

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

SELECT x.field1, x.field2,...x.fieldN, y.field1, y.filed2,...y.fieldN FROM table_name1 x LEFT JOIN table_name2 y ON [coditions]

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

SELECT x.field1, x.field2,...x.fieldN, y.field1, y.filed2,...y.fieldN FROM table_name1 x RIGHT JOIN table_name2 y ON [coditions]


  • 事务(开始事务->提交事务/回滚)

begin
...
...
commit / rollback


  • ALTER命令
  1. 删除表字段

ALTER TABLE table_name DROP field_name

  1. 添加表字段

ALTER TABLE table_name ADD field_name type_name

ALTER TABLE table_name ADD field1 type_name AFTER field0

  1. 修改表字段

ALTER TABLE table_name MODIFY field_name type_name
ALTER TABLE table_name CHANGE field_old_name, field_new_name type_name

  1. 修改字段默认值

ALTER TABLE table_name ALTER field_name SET EDFAULT value

  1. 修改表名

ALTER TABLE table_old_name RENAME TO table_new_name


  • MySQL索引
普通索引
  1. 创建索引

CREATE INDEX indexName ON table_name (column_name)

  1. 修改表结构(添加索引)

ALTER table tableName ADD INDEX indexName(columnName)

  1. 删除索引

DROP INDEX [indexName] ON mytable

唯一索引
  1. 创建索引

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

  1. 修改表结构

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

显示索引信息

SHOW INDEX FROM table_name\G



0.关于MySQL的安装说明


  1. leaf_qycc(未完成版,禁止用于商务用途) ↩︎
  2. 详情请见第0章 ↩︎
复活吧我的博客
最后更新于 2025-08-23