文章目录
MySQL命令行常用命令
1.修改密码
myadmin -uroot -p 旧密码 password 新密码
2.建立数据库
create database discuz;
3.备份数据库
mysqldump -opt discuz > discuz.bbb
4.创建用户
create user bogon@localhost identified by '密码'
5.远程连接
grant all privilegexs on *.* to 'root'@localhost identified by '密码' with grant option
localhost 可以是’%'或者IP
然后别忘了
flush privileges
exit
6.显示数据库
show databases;
切换数据库
use discuz;
显示数据表
show tables;
查询表
select * from wp-user; (describe student;)
MySQL增删改查命令
创建数据库
CREATE DATABASE 数据库名;
添加一些选项创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
使用 mysqladmin 创建数据库
[root@host]# mysqladmin -u root -p create 数据库名
删除数据库
drop database 数据库名;
使用 mysqladmin 删除数据库
[root@host]# mysqladmin -u root -p drop 数据库名
执行以上删除数据库命令后,会出现一个提示框,来确认是否真的删除数据库:
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.
Do you really want to drop the '数据库名' database [y/N] y
Database "数据库名" dropped
选择数据库 / 切换数据库
[root@host]# mysql -u root -p
Enter password:******
mysql> use 数据库名;
Database changed
mysql>
创建数据表
创建MySQL数据表需要以下信息:
- 表名
- 表字段名
- 定义每个表字段
以下为创建MySQL数据表的SQL通用语法:
CREATE TABLE 表名 (column_name column_type);
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`id` INT UNSIGNED AUTO_INCREMENT,
`title` VARCHAR(100) NOT NULL,
`author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
- AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
- PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
- ENGINE 设置存储引擎,CHARSET 设置编码。
mysql> CREATE TABLE runoob_tbl(
-> id INT NOT NULL AUTO_INCREMENT,
-> title VARCHAR(100) NOT NULL,
-> author VARCHAR(40) NOT NULL,
-> submission_date DATE,
-> PRIMARY KEY ( id )
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.16 sec)
mysql>
删除数据表
DROP TABLE 表名;
插入数据
MySQL 表中使用 INSERT INTO SQL
语句来插入数据。
以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法:
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
如果数据是字符型,必须使用单引号或者双引号,如:“value”。
以下实例中我们向上面创建的数据表中插入一条数据:
mysql> INSERT INTO runoob_tbl
-> (title, author, submission_date)
-> VALUES
-> ("学习 MySQL", "Tom", NOW());
Query OK, 1 rows affected, 1 warnings (0.01 sec)
在以上实例中,我们并没有提供 id 的数据,因为该字段我们在创建表的时候已经设置它为 AUTO_INCREMENT(自动增加) 属性。 所以,该字段会自动递增而不需要我们去设置。实例中 NOW() 是一个 MySQL 函数
,该函数返回日期和时间。
查询数据
以下为在MySQL数据库中查询数据通用的 SELECT 语法:
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
- 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
- SELECT 命令可以读取一条或者多条记录。
- 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
- 你可以使用 WHERE 语句来包含任何条件。
- 你可以使用 LIMIT 属性来设定返回的记录数。
- 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0
MySQL WHERE 子句
我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。
语法
以下是 SQL SELECT 语句使用 WHERE 子句从数据表中读取数据的通用语法:
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
- 查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件。
- 你可以在 WHERE 子句中指定任何条件。
- 你可以使用 AND 或者 OR 指定一个或多个条件。
- WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
- WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。
操作符 | 描述 | 实例 |
---|---|---|
= | 等号,检测两个值是否相等,如果相等返回true | (A = B) 返回false。 |
<>, != | 不等于,检测两个值是否相等,如果不相等返回true | (A != B) 返回 true。 |
> | 大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true | (A > B) 返回false。 |
< | 小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true | (A < B) 返回 true。 |
>= | 大于等于号,检测左边的值是否大于或等于右边的值, 如果左边的值大于或等于右边的值返回true | (A >= B) 返回false。 |
<= | 小于等于号,检测左边的值是否小于于或等于右边的值, 如果左边的值小于或等于右边的值返回true | (A <= B) 返回 true。 |
MySQL UPDATE 查询
以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法:
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
mysql> UPDATE runoob_tbl SET title='学习 C++' WHERE id=3;
MySQL DELETE 语句
以下是 SQL DELETE 语句从 MySQL 数据表中删除数据的通用语法:
DELETE FROM table_name [WHERE Clause]
如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
你可以在 WHERE 子句中指定任何条件
您可以在单个表中一次性删除记录。
mysql> DELETE FROM runoob_tbl WHERE id=3;
MySQL ALTER命令
https://www.runoob.com/mysql/mysql-alter.html
一对一、一对多、多对多关系
一对一关系
主表,从表(从表的主键既是主键也是外键)
一对多关系、多对多关系
需要一个中间表,把关系表示出来
student,teacher,stu_tea共三个表
多表查询
多表查询有如下几种:
- 合并结果集;
- 连接查询
-
内连接
-
外连接
- 左外连接
- 右外连接
- 全外连接(MySQL不支持)
-
自然连接
-
- 子查询
UNION操作
https://www.runoob.com/mysql/mysql-union-operation.html
MySQL 连接操作
原理过程
具体的一些过程演示查看另一篇博客:关系模型之关系代数
https://blog.csdn.net/Co_zy/article/details/86762456
代码实现
内连接、左外链接、右外连接
https://www.runoob.com/mysql/mysql-join.html
子查询
子查询就是嵌套查询,即SELECT中包含SELECT,如果一条语句中存在两个,或两个以上SELECT,那么就是子查询语句了。
子查询出现的位置:
where后,作为条件的一部分;
from后,作为被查询的一条表;