MySQL

2016-04-25  本文已影响141人  纵我不往矣

第1章 初设mysql

命令行启动/停止MySQL服务

net start mysql
net stop mysql

发生系统错误 5.
以管理员身份运行

清屏:cls

mysql -uroot -p123456 -P3306 -h127.0.0.1

exit 退出

  1. mysql -uroot -p123456 --prompt 提示符
  2. prompt mysql>
\D完整的日期
\d当前数据库
\h服务器名称
\u当前用户

select version();显示当前服务器版本
select now();显示当前日期时间
select user();显示当前用户

创建数据库
CREATE DATABASE [IF NOT EXISTS] t1;
查看服务器下的数据库
SHOW DATABASES;
查看警告信息
SHOW WARNINGS;
查看创建数据库时的参数
SHOW CREATE DATABASE t1;
创建数据库的时候指定编码方式
CREATE DATABASE IF NOT EXISTS t2 CHARACTER SET gbk;
创建了以后再修改编码方式
ALTER DATABASE t2 CHARACTER SET=utf8;
删除数据库
DROP DATABASE t1;

第2章 数据类型与操作数据表

TINYINT
SMALLINT
MEDIUMINT
INT
BIGINT
FLOAT(M,D)
DOUBLE(M,D)

M是所有的位数。D是小数点之后的位数。

YEAR
TIME
DATE
DATETIME
TIMESTAMP 时间戳
CHAR(M)
VARCHAR(M)
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
ENUM('value1','value2',''...) 枚举类型
SET('value1','value2',''...) 在集合中做随意的排列组合
USE 数据库名称;

显示当前打开的数据库select都会带括号

SELECT DATABASE();

创建数据表

CREATE TABLE(IF NOT EXISTS) table_name(
column_name data_type
)
SHOW TABLES;
SHOW TABLES FROM mysql;

查看数据表结构

SHOW COLUMNS FROM tb1;
INSERT [INTO] tbl_name [(col_name,...)] values(val,...)
INSERT tb1(username,salary) VALUES('John',4500.69)

记录查找

SELECT * FROM tb1;
NULL,字段值可以为空
NOT NULL,字段值禁止为空
AUTO_INCREMENT

必须与主键组合使用
默认情况下,起始值为1,每次的增量为1

PRIMARY KEY

每张数据表只能存在一个主键
主键保证记录的唯一性
主键自动为NOT NULL
主键可以不和自动编号一起使用。反之不行。
主键的编号不能重复

唯一约束可以保证记录的唯一性
唯一约束的字段可以为空值(NULL)
每张数据表可以存在多个唯一约束

UNIQUE KEY
sex ENUM('1','2','3') DEFAULT '3'

第3章 约束以及修改数据表

约束分为表级约束和列级约束
保持数据一致性完整性
实现一对一或一对多关系
父表和子表必须使用相同的存储引擎
数据表的存储引擎只能是InnoDB
外键列和参照列必须具有相同的数据类型。其中数字的长度或是否有符号位必须相同,而字符的长度则可以不同。
外键列和参照列必须创建索引。如果参照列不存在索引的话,MySQL将自动创建索引

pid BIGINT,
FOREIGN KEY(pid) REFERENCES provinces(id)
SHOW INDEXES FROM provinces;

\G 换一种方式显示

ON DELETE CASCADE 从父表删除或更新且自动删除或更新子表中匹配的行。
SET NULL 从父表删除或更新行,并设置子表中的外键列为NULL。
RESTRICT 拒绝对父表的删除或更新操作
NO ACTION 标准SQL的关键字,在MySQL中与RESTRICT相同
一般使用逻辑外键而不是物理外键。即不用foreign关键字
delete from provinces where id=3;
ALTER TABLE user1 ADD age TINYINT UNSIGNED NOT NULL DEFAULT 10;

添加多列,不能指定位置关系
删除列,用逗号做分割

ALTER TABLR user1 DROP truename
ALTER TABLE users2 ADD ID SMALLINT UNSIGNED
ALTER TABLE users2 ADD CONSTRAINT PK_users2_id PRIMARY KEY(id)
ALTER TABLE users2 ALTER age SET DEFAULT 15;
ALTER TABLE users2 ALTER age DROP DEFAULT;
ALTER TABLE users2  DROP PRIMARY KEY;

一张表可以有多个唯一约束,删除约束而不是字段

ALTER TABLE user2 DROP INDEX username

显示索引,以网格的形式展现

SHOW INDEXES FROM users2\G;

删除外键约束

ALTER TABLE users2 DROP FOREIGN KEY 外键的名字
ALTER TABLE users2 MODIFY id SMALLINT UNSIGNED NOT NULL FIRST;

修改列名称(CHANGE 功能大于 MODIFY)

ALTER TABLE users2 CHANGE pid p_id TINYINT UNSIGNED NOT NULL

修改表的名称

ALTER TABLE users2 RENAME users3;
RENAME TABLE user3 to user2

第4章 操作数据表中的记录

回顾和概述

约束:表级约束、列级约束

插入记录INSERT
INSERT tb VALUES(),()
插入记录INSERT SET-SELECT
INSERT tb1_name SET col_name={expr|DEFAULT} 
INSERT users SET username='ben',password='456';
表单更新记录UPDATE
UPDATE users SET age=age+5;
UPDATE users SET age=age-id,sex=0;
SELECT * FROM users;
UPDATE users SET age=age+10 WHERE id%2=0;
单表删除记录DELETE
DELETE FROM users WHERE id=6;
INSERT users values();

把记录删掉以后。再添加纪录,id号不会补充原有删除的id号。

查询表达式解析
SELECT VERSION();
SELECT NOW();
SELECT user();
SELECT * FROM users;
SELECT columns FROM users;
SELECT id,username FROM users;
SELECT users.id,users.username FROM users;

不依附于任何表,就是一个表达式

SELECT 3+5;

为字段赋予别名,影响结果的输出

SELECT id as userid,username as uname FROM users;
WHERE 语句进行条件查询
GROUP BY 对查询结果进行分组
SELECT * FROM users;
SELECT sex FROM users GROUP BY sex;
SELECT sex FROM users GROUP BY 1; 字段的第一个是1
having 语句设置分组条件(某一部分记录进行分组)
SELECT sex FROM users GROUP BY 1 HAVING age>35;
ORDER BY 对查询结果进行排序
SELECT * FROM users;
SELECT * FROM users ORDER  BY 1 HAVING age>35;
LIMIT限制查询数量
SELECT * FROM users LIMIT 2;
SELECT * FROM users LIMIT 2,2;
第三个开始,查询两个
INSERT test(username) SELECT username FROM users WHERE age>=30;

第5章 子查询与连接

上一篇 下一篇

猜你喜欢

热点阅读