mysql基础

mac2022-06-30  72

1.mysql 的登入与登出

  :  mysql -uroot -proot

   :  exit,or\q

2.mysql 提示符的修改

  登入时:  mysql -uroot -proot -prompt 提示符

  登入后:   mysql>prompt 提示符>

3.mysql的数据类型

数据类型存储范围字节TINYINT

有符号:-128~127

无符号位:0~255

1SMALLINT

有符号:-32768~32767

无符号:0~65535

2MEDIUMINT

有符号:-8388608~8388607

无符号:0~4294967295

3INT

有符号:-2^31~2^31-1

无符号:

4BIGINT

有符号:-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 nullTINYTEXTL+1个字节,TEXTL+2MEDIUMTEXTL+3LONGTEXTL+4ENUM('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; 运算符\关键字ANYSOME  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

最新回复(0)