mysql基础

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

原文地址:https://www.cnblogs.com/yuanan/p/6670298.html