MySQL基础使用
Posted 康星悦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL基础使用相关的知识,希望对你有一定的参考价值。
基本操作
- mysql的重要文件
- MySQL安装目录\\bin\\ mysqld.exe
- MySQL的服务器程序,它必须启动数据库才能正常使用
- MySQL安装目录\\bin\\ mysql.exe
- MySQL的客户端程序,用来操作MySQL数据库
- MySQL安装目录\\ my.ini
- MySQL数据库的配置文件
- MySQL安装目录\\bin\\ mysqld.exe
- 登录:mysql -u用户名 -p密码
- 退出:quit或exit
- 基本SQL语法
- SQL语句可以写成单行或者多行,以分号结尾。
- MySQL中不区分大小写,但是建议关键字大写。
- SQL语句
- 数据定义语言DDL(Data Definition Language)
- 数据操作语言DML(data manipulation language)
- 数据控制语言DCL(Data Control Language)
- 数据查询语言DQL(Data QueryLanguage)
- 常见语句:
- 登录:mysql –u用户名 –p密码
- 退出:quit或exit
- 查看数据库的编码信息:show variables like \'char%\';
- 显示所有数据库:show databases;
- 访问数据库:use 数据库名;
- 查看所有的表:show tables;
- 创建数据库:CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARSET=utf8]
- 登录:mysql –u用户名 –p密码
8.删除数据库:DROP DATABASE [IF EXISTS] 数据库名
-
-
- 创建表
- 语法:
-
CREATE TABLE [IF NOT EXISTS] 表名
(
列名 类型,
列名 类型,
…
其他选项
)
- 查看表结构:DESC 表名;
- 删除表:DROP TABLE [IF EXISTS] 表名
- 重命名表:RENAME TABLE 旧名 TO 新名;
- 插入数据
- INSERT INTO 表名 (列名1,列名2,列名3…) VALUES(值1,值2,值3);
- INSERT INTO 表名 VALUES(值1,值2,值3);
- 修改数据
- UPDATE 表名 SET 列名1=值1,列名2=值2… WHERE …
- 删除数据
- DELETE FROM 表名 WHERE…
- 清空表中的数据
- TRUNCATE [TABLE] 表名;
- 查询表
- SELECT * FROM 表名 WHERE…;
- SELECT 列名1 别名1 , 列名2 别名2 … FROM 表名 WHERE…
- SELECT * FROM 表名 WHERE … LIMIT 索引 , 长度
- 创建表
- 函数(做一些计算)
1.COUNT
- 用来对查询到数据进行计数的。
- 例子1:
SELECT COUNT(*) FROM emp;
- COUNT(*) 统计所有数据的行数
- 例子2:
SELECT COUNT(列名) FROM emp;
- 统计当前列不为null的数据的条数
- 列子3:
SELECT COUNT(1) FROM emp;
- 和CONUT(1)和CONUT(*)一样
2.MAX
- 获取多个值中的最大值
- 例子:
SELECT MAX(sal) FROM emp;
3.MIN
- 获取多个值中的最小值
- 例子:
SELECT MIN(sal) FROM emp;
4.AVG
- 多个值取平均值
- 例子:
SELECT AVG(sal) FROM emp;
5.SUM
- 多个值得求和:
- 例子:
SELECT SUM(sal) FROM emp; - 约束
- 约束就是为表中的内容添加限制条件
> 主键(PRIMARY KEY)
- 就是一条数据的唯一标识,通过主键可以快捷的检索到数据。
特点:
- 唯一
- 非空
- 可以被引用
- 创建主键:
CREATE TABLE t_user(
id INT PRIMARY KEY,
`name` VARCHAR(50)
);
> 主键自增(AUTO_INCREMENT)
- 主键自增指的是主键自动生成并且自动累加
- 注意:自增主键只适用于int型主键,字符串主键不能使用。
- 创建方式:
CREATE TABLE t_user2(
id INT PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(50)
)
> 非空(NOT NULL)
CREATE TABLE test_tb(
username VARCHAR(50) NOT NULL
)
> 唯一(UNIQUE)
CREATE TABLE test_tb(
username VARCHAR(50) UNIQUE
)
> 外键(FOREIGN KEY)
- 外键关联指的是将一个表中的列和另一个表的主键进行关联。
FOREIGN KEY (列名) REFERENCES 引用表的表名(引用列的列名)
FOREIGN KEY (dept_id) REFERENCES dept(id)
- 可以被外键关联的列,一定是主键 -
1 > 夫妻的关系就是一对一的关系 2 > 一个丈夫只能有一个妻子,一个妻子只有一个丈夫 3 4 #一对一关系 5 #创建一个husband表 6 CREATE TABLE husband( 7 id INT PRIMARY KEY, 8 hname VARCHAR(50) 9 ) 10 11 #创建一个wife 12 CREATE TABLE wife( 13 id INT PRIMARY KEY, 14 wname VARCHAR(50), 15 FOREIGN KEY (id) REFERENCES husband(id) 16 ) 17 18 #插入一个husband 19 INSERT INTO husband VALUES(1,\'武大郎\'); 20 21 INSERT INTO husband VALUE(1,\'西门庆\'); 22 23 #插入一个wife 24 INSERT INTO wife VALUES(1,\'潘金莲\');
-
1 例子:部门与员工 2 - 一个部门可以有多个员工,一个员工只能属于一个部门 3 - 一对多的关系我们一般是通过在多的一方来保存一的一方主键 4 #一对多的关系 5 #创建一个dept表 6 CREATE TABLE dept ( 7 8 id INT PRIMARY KEY AUTO_INCREMENT, 9 dept_name VARCHAR(50) 10 11 ) 12 13 #创建一个员工表 14 CREATE TABLE emp( 15 id INT PRIMARY KEY AUTO_INCREMENT, 16 emp_name VARCHAR(50), 17 dept_id INT, 18 FOREIGN KEY (dept_id) REFERENCES dept(id) 19 )
1 > 老师和学生 2 - 一个老师可以有多个学生 3 - 一个学生可以有多个老师 4 - 多对多的关系我们一般都是以创建一个中间表的形式来映射 5 - 例子: 6 #多对多的关系 7 #创建一个tea 8 CREATE TABLE tea( 9 id INT PRIMARY KEY AUTO_INCREMENT, 10 tname VARCHAR(50) 11 ) 12 13 #创建一个学生 14 CREATE TABLE stu( 15 id INT PRIMARY KEY AUTO_INCREMENT, 16 sname VARCHAR(50) 17 ) 18 19 #创建一个中间表 20 CREATE TABLE tea_stu( 21 tea_id INT, 22 stu_id INT, 23 FOREIGN KEY (tea_id) REFERENCES tea(id), 24 FOREIGN KEY (stu_id) REFERENCES stu(id) 25 ) 26 27 28 #插入几个老师 29 INSERT INTO tea VALUES(NULL,\'张三丰\'); 30 INSERT INTO tea VALUES(NULL,\'陈近南\'); 31 INSERT INTO tea VALUES(NULL,\'扫地僧\'); 32 33 #插入几个学生 34 INSERT INTO stu VALUES(NULL,\'张无忌\'); 35 INSERT INTO stu VALUES(NULL,\'韦小宝\'); 36 INSERT INTO stu VALUES(NULL,\'乔峰\'); 37 INSERT INTO stu VALUES(NULL,\'杨过\');
1 SELECT SUM(score),id 2 FROM stu 3 WHERE id > 2 4 GROUP BY snum 5 HAVING SUM(score) > 90 6 ORDER BY id ASC 7 LIMIT 1,2;
1 纵向连接(union ,union all) 2 3 select name from stu1 4 UNION all 5 select name from stu2 6 7 注意:union会对数据进行过滤,保证数据唯一,而union all不会对数据进行过滤! 8 9 横向连接 10 join on来完成横向连接 11 inner join :只会显示满足条件的数据! 12 select * from person p 13 inner join orders o 14 on p.id = o.oid 15 16 left on:又称为:left out on:左外连接会将左表中所有的数据都显示出来! 17 select * from person p 18 left join orders o 19 on p.id = o.oid
-
常见数据类型
字符串
数据类型 |
说明 |
CHAR |
1~255个字符的定长串,它的长度必须在创建时指定,否则MySQL假定为CHAR(1) |
VARCHAR |
可变长度,最多不超过255字节,如在创建时指定VARCHAR(n),则可存储0~n个字符的变长串 |
TINYTEXT |
同TEXT,最大长度为255字节 |
MEDUIMTEXT |
同TEXT,最大长度为16K |
TEXT |
最大长度为64K的变长文本 |
LONGTEXT |
同Text,最大长度为4GB(纯文本,一般不会到4G) |
数值
数据类型 |
说明 |
int[(m)] |
有符号值:-2147683648 到2147683647(- 2^31 到2^31- 1) 无符号值:0到4294967295(0 到2^32 – 1) |
double[(m, d)] |
最小非零值:±2.2250738585072014e – 308 |
decimal (m, d) |
可变;其值的范围依赖于m 和d |
时间
数据类型 |
说明 |
DATE |
1000-01-01——9999-12-31 |
TIME |
-838:59:59——838:59:59 |
DATETIME |
1000-01-01 00:00:00——9999-12-31 23:59:59 |
TIMESTAMP |
19700101080001——20380119111407 |
二进制
数据类型 |
说明 |
TITYBLOB |
最大长度为255字节 |
BLOB |
最大长度为64KB |
MEDIUMBLOB |
最大长度为16MB |
LONGBLOB |
最大长度为4GB |
以上是关于MySQL基础使用的主要内容,如果未能解决你的问题,请参考以下文章
使用 json rereiver php mysql 在片段中填充列表视图
[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础
连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段