1.mysql 的登入与登出
: mysql -uroot -proot
: exit,orq
2.mysql 提示符的修改
登入时: mysql -uroot -proot -prompt 提示符
登入后: mysql>prompt 提示符>
3.mysql的数据类型
数据类型 | 存储范围 | 字节 |
TINYINT |
有符号:-128~127 无符号位:0~255 |
1 |
SMALLINT |
有符号:-32768~32767 无符号:0~65535 |
2 |
MEDIUMINT |
有符号:-8388608~8388607 无符号:0~4294967295 |
3 |
INT |
有符号:-2^31~2^31-1 无符号: |
4 |
BIGINT |
有符号:-2^63~2^63-1 无符号:0~2^64 |
8 |
列类型 | 存储需求 |
CHAR(M) |
M个字节,0<=M<=255 |
VARCHAR(M) | L+1个字节,L<=M,0<=M<=65535 not null |
TINYTEXT | L+1个字节, |
TEXT | L+2 |
MEDIUMTEXT | L+3 |
LONGTEXT | L+4 |
ENUM('value','value',..) | 1或2个字节 |
SET('value','value',..) | 1,2,3,4,或8个字节 |
4.mysql的语句规范
:关键字与函数名名称全部大写。数据库名称,表名称字段名称全部小写。sql的语句必须以分号结尾。
5.mysql的常用命令
SELECT VERSION(); 显示当前服务器版本
SELECT NOW();显示当前时间
SELECT USER();显示当前用户
DESC 表名:显示字段
6.数据库相关命令
创建数据库:
CREATE DATABASE|schema[IF NOT EXITS] db_name CHARACTER SET charset_name(为编码方式);
修改数据库:
ALTER DATABASE|schema[db_name] CHARACTER SET charset_name;
查看修改的数据库:
SHOW CREATE DATABASE db_name;
删除数据库:
DROP DATABASE|schema [IF EXISTS] db_name;
7.数据库子类数据表
创建数据表:CREATE TABLE[IF NOT EXISTS] table_name(column_name data_type,...);
查看当前数据库下的数据表:SHOW TABLES[FROM db_name][LIKE 'pattern'|WHERE expr];
查看创建的数据类型:SHOW CREATE TABLE db_name;
查看创建的数据表:SHOW COLUMNS FROM tbl_name;
修改数据表: ALTER TABLE tdb_goods CHANGE goods_cate cate_id SMALLINT UNSIGNED NOT NULL,
CHANGE brand_name brand_id SMALLINT UNSIGNED NOT NULL;
插入记录:
INSERT[INTO] tbl_name[(col_name,...)] {VALUES|VALUE}({expr|DAFAULT},...),(...),...;
INSERT[INTO] tb_name SET col_name={expr|DEFAULT},...
记录查找:
SELECT expr,... FROM tbl_name;
INSERT tb2_name SELECT col_name FROM tbl_name1 WHERE condition;.//将查询的结果插入到指定的数据表
删除记录: DELETE FROM tb_name WHERE [where_condition] (例id=3);
查询结果分组: SELECT col_name FRON tbl_name GROUP BY {col_name|position} [ASC|DESC];//前者为升序,后为降。
自动编号:
AUTO_INCREMENT;必须与主键统一使用;
删除列:
ALTER TABLE tb_name DROP[COLUMN] column_name;
添加单列:
ALTER TABLE tb_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name];
添加多列:
ALTER TABLE tb_name ADD [COLUMN] (col_name column_definition,...)(例money VARCHAR NOT NULL,...)
修改列所在的位置:
ALTER TABLE son1 MODIFY name VARCHAR(32) NOT NULL [FIRST|AFTER pid];
修改列名称:
ALTER TABLE tb_name CHANGE[COLUMN] old_col_name new_col_name column_definition[FIRST|AFTER col_name]
7.约束
主键约束:PRIMARY KEY每张数据表只能存在一个主键,保证记录的唯一性,主键自动为NOT NULL;
添加主键约束:ALTER TABLE tb_name ADD [CONSTRAINT[symbol]] PRIMARY KEY (index_col_name)
唯一约束:UNIQUE KEY可以为空值,可以存在多个唯一约束;
添加唯一约束:ALTER TABLE tb_name ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] (index_col_name,...);
默认约束:DEFAULT
添加或删除默认约束:ALTER TABLE tb_name ALTER col_name {SET DEFAULT literal|DROP DEFAULT};
外键约束:FOREING KEY //FOREIGN KEY (pid) REFERENCES (id);
添加外键约束:ALTER TABLE tb_name ADD [CONSTRAINT[symbol]] FOREIGN KEY (index_col_name,...) REFERENCES db_name (col_name)
外键约束的参照操作
:CASCADE :父表删除或更新影响字表// 例 FOREIGN KEY (pid) REFERENCES fu(id) ON DELETE CASCADE
:SET NULL:从父表删除或更新行,并设置字表中的外键列
:RESTRICT: 拒绝对付表的删除或更新操作
:NO ACTION :在mysql中与RESTRICT相同;
删除约束:
ALTER TABLE tb_name DROP PRIMARY KEY
ALTER TABLE tb_name DROP INDEX 索引名
ALTER TABLE tb_name DROP FOREIGN KEY name;
数据表改名:
ALTER TABLE tb_name RENAME [TO|AS] new_tbl_name;
RENAME TABLE tbl_name TO new_tbl_name[,tbl_name2 to new_tbl_name2]...
单表更新:UPDATE [LOW_PRIORITY] [IGNORE] tb_name SET col_name1={expr1|DEFAULT} [,col_name={expr2|DEFAULT}]...[WHERE where_condition];//
单表删除:DELETE FROM tbl_name [WHERE where_conditon];
查找记录:
SELECT select_expr [,select expr2...] 只查找某一个函数或表达式
[
FROM table_references 查询表名
[WHERE where_condition]查询条件
[GROUP BY {col_name|position} [ASC|DESC],...] 按某个字段进行分组,相同的只显示第一个
[HAVING where condition]分组时,给出显示条件
[ORDER BY {col_name|expr|position} [ASC|DESC],...]排序
[LIMIT {[offset,]row_count|row_count OFFSET offset}]限制返回数量
]
子查询:
使用in 或 not in 引发的子查询: =any等效in,!=All,<>all等效于not in;
由比较运算符(=,>=...)引发的子查询:operand comparison_operator subquery;
例:
SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price = ANY(SELECT goods_price FROM tdb_goods WHERE goods_cate = '超级本') ORDER BY goods_price DESC;
运算符关键字 | ANY | SOME | ALL |
>,>= | 最小值 | 最小值 | 最大值 |
<,<= | 最大值 | 最大值 | 最小值 |
= | 任意值 | 任意值 | |
<>,!= | 任意值 |
使用insert...select插入记录: insert tdb_goods_cates(cate_name) select goods_cate from tdb_goods group by goods_cate;
多表更新:
update table_references
set col_name1={expr1 | default}
[,col_name2={expr2 | default}]...
[where where_condition]
语法结构:
table_reference
{[inner | cross] join |{left | right}[outer] join}(内连接,外连接)
table_reference
on conditional_expr
update tdb_goods inner join tdb_goods_cates on goods_cate = cate_name set goods_cate = cate_id;
UPDATE tdb_goods INNER JOIN tdb_goods_brand ON tdb_goods.brand_name = tdb_goods_brand.brand_name SET tdb_goods.brand_name= tdb_goods_brand.brand_id;
CREATE TABLE tdb_goods_brands
(
brand_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
brand_name VARCHAR(30) NOT NULL
)
SELECT brand_name FROM tdb_goods GROUP BY brand_name;
字符函数
LENGTH() | 取得字符串的长度 |
LTRIM() | 删除前导空格select ltrim(' MYSQL') |
RTRIM() | 删除后续空格 |
TRIM() | 删除前导后导空格 TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) |
substring() | 字符串截取 |
concat() | 字符连接 select concat('MYSQL','|','LIKE') |
concat_ws | |
replace | 替换字符串 |
lower | 转换成小写字符 |
upper | 转换成大写字符 |
left | 获取左侧字符select left('MYSQL',2) |
right | 获取右侧字符 |
数值运算符与函数
ceil | 向上取整 |
floor | 向下取整 |
div | 整数除法 |
mod | 取余数 |
power | 幂运算 |
round | 四舍五入select round(3.123,1) |
truncate | 数字截取 |
信息函数
last_insert_id():最后插入记录的id号
connection_ID()连接的id
创建自定义函数
create function f1() returns varchar(30)
return date_format(now(),'%Y年%m月%d日 %H点:%i分:%s秒');
select f1();
存储过程语法结构
CREATE
[DEFINER = { user|CURRENT_USER}]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...]routine_body
proc_parameter:
[IN|OUT|INOUT]param_name type