MySQL基础
启动MySQL net start mysql
关闭MySQL net stop mysql
登录 mysql -uroot -p
退出 mysql>exit;
mysql>quit;
mysql>\p;
显示当前服务器版本 SELECT VERSION();
显示当前时间 SELECT NOW();
显示当前用户 SELECT USER();
MySQL默认的端口号是:3306
MySQL超级用户是:root
创建数据库:CREATE DATABASE
修改数据库:ALTER DATABASE
删除数据库:DROP DATABASE
数据类型
整型:TINYINT SMALLINT MEDIUMINT INT BIGINT
浮点型: FLOAT[(M,D)] DOUBLE[(M,D)] M为数字总位数,D为小数点后面的位数
字符型:VERCHAR(M)
数据表
查看有什么数据库:SHOW DATABASES;
打开数据库:USE 数据库名称
查看当前数据库:SELECT DATABASES;
创建数据表:CREATE TABLE[IF NOT EXISTS]table_name(
ageTINYINT UNSGINED(无符号位),
......
)
查看数据表列表:SHOW TABLES[FORM db_name];使用form可以查看别的数据库中的表
查看数据表结构:SHOW COLUMNS FORM tbl_name;
插入记录;INSERT [INTO] tbl_name[(coi_name,...)] VALUES(VAL,...);
查找记录:SELECT expr,...FORM tbl_name(WHERE .....);
空值与非空
CREATE TABLE[IF NOT EXISTS]table_name(
age1 TINYINT UNSGINED(无符号位) NOT NULL,
age2 TINYINT UNSGINED(无符号位) NULL,//默认是可以为空
......
)
自动编号AUTO_INCREMENT
1自动编号,且必须与主键组合使用
2默认情况下,起始值为1,增量为1
主键PRIMARY KEY
1每张表只能有一个主键
主键保证记录的唯一性
主键自动为NOT NULL
CREATE TABLE[IF NOT EXISTS]table_name(
age1 TINYINT UNSGINED(无符号位) PRIMARY KEY,
......
)
唯一约束UNIQUE KEY
默认约束:DEFAULT
更新记录UPDATE
语法:UPDATE tb_name SET age=age+10 WHERE name="chaihuo";
删除记录FELETE
语法:DELETE FORM tb_name WHERE name="chaihuo";
查询结果分组GROUP BY
语法:SELECT sex FORM users BY sex;
HCAING分组条件
语法:SELECT sex,age FORM users BY sex HAVING age>35;
主要:此时HAVING后面只有两种情况1)聚合函数2)在select后面
对查询结果进行排序ORDER BY
语法:SELECT * FORM users ORDER BY id DESC;
运算符和函数
字符运算符
CONCAT()字符连接
CONCAT_WS()使用指定的分隔符进行字符连接
FORMAT()数字格式化
LOWER()UPPER()转换成小/大写字母
LEFT() RIGHT()获取左/右侧字符
LENGTH()获取字符串长度
SUBSTRING()字符串截取
[NOT] LIKE 模式匹配
REPLACE()字符串替换
数值运算符与函数
CEIL() 进一取整
DIV 整数除法
FLOOR()舍一取整
MOD 取余数
POWER() 幂运算
ROUND()四舍五入
比较运算符与函数
[NOT] BETWEEN...AND... [NOT]IN() IS[NOT]NULL
信息函数
CONNECTION_ID() 连接id
DATEBASE()当前数据库
LAST_INSERT_ID()最后插入记录的Id号
USER()当前用户
VERSON()版本信息
聚合函数
AVG()平均值
COUNT()计数
MAX() MIN() SUM()
加密函数
MD5()信息摘要算法
PASSWORD()密码算法
子查询和连接
将查询结果写入数据表
INSERT[INTO] tbl_name[(col_name,...)] SELECT...
例子:INSERT tdb_goods(cate_name) SELECT good_cake FORM table GROUP BY good_cake;
多表更新
UPDATE table1 INNER JOIN table2 ON table1_name=table2_name SET table1_id=table2_di;
CREATE...SELECT
创建数据表同时将查询结果写入到数据表
CREATE TABLE table_name [(create_definine)] select_statement
例:CREATE TABLE table1(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL)
SELECT SELECT good_cake FORM table GROUP BY good_cake;
)
存储引擎
通过修改MySQL配置文件实现
1)-ddfault-storage-engine=engine
2)通过创建数据表命令实现
CREATE TABLE[IF NOT EXISTS]table_name(
age1 TINYINT UNSGINED(无符号位) NOT NULL,
age2 TINYINT UNSGINED(无符号位) NULL,//默认是可以为空
......
)ENGINE=engine;
通过修改数据表命令实现
-ALTER TABLE table_name ENGINE[=]engine_name;
存储引擎
MyISAM:存储现在可达256TB,支持索引。表级锁定,数据压缩
InnoDB:存储限制为64TB,支持事务和索引。锁颗粒为行锁