mysql快速入门笔记

Mysql学习笔记

设置编码:set charset gbk;

进入mysql :Mysql -uroot -proot

修改mysql提示符:Shell>mysql -uroot -proot –prompt 提示符

修改mysql提示符:Mysql>prompt 提示符  

提示符:D完整日期;d当前数据库;h 服务器名称u 当前用户

 显示当前服务版本:select version();

 显示当前时间:select now();

 显示当前用户:select user();

 创建数据库:create{database|schema} [if not exists] db_name [default] character set [=] charset_name;

Create database t1;

 Create database if not exists t1;

 

 Create database if not exists t2 character set utf8

 查看警告信息:show warnings;

 查看创建数据库所用的指令:show create database t1;

 修改数据库:alter {database | schema } [db_name] [default] character set [=] charset_name;

 删除数据库:drop {database | schema} [if exists] db_name;

 

 

 

 

 使用数据库: use db_name;

显示当前打开的数据库: select database();

创建数据表:CREATE TABLE [IF NOT EXISTS] table_name(

                Column_name data_type,

                ……….);

 查看数据表:SHOW TABLAES [FROM db_name] [LIKE ‘pattern’|WHERE expr]

 查看数据表结构:SHOW COLUMNS FROM tbl_name;

 插入记录:INSERT [INTO] tb1_name [col_name,….]values(val,….);

记录查找:SELECT expr,…FROM tb_name;

 

 

 

 

 

AUTO_INCREMENT必须和PRIMARY KEY一起使用。

PRIMARY KEY 不一定和AUTO-INCREMENT一起使用

 

 

 

 

 

 

 

 

 

 

 

 

 

 创建表,查看储存引擎

 因为数据长度不一样,所以报错:

 

 为符号位不同而报错:

 正确操作:

 显示索引:

 参照列自动创建索引:

   

 

 

 父表中插入记录:

 子表中插入记录:

 

 删除父表中的记录,发现子表也自动删除:

 

 修改数据表

添加单列:ALTER TABLE tb_name ADD [COLUMS] col_name column_definition [FIRST|AFTER col_name]

 默认为所有列的最下边:

 使用AFTER clo_name:

 使用FIRST:

 添加多列:

ALTER TABLE tb_name ADD [COLUMN] (col_name colnmn_definition,…….)

删除列:ALTER TABLE tb_name DROP [COLUMN] col_name

 

 添加主键约束:

ALTER TABLE tb_name ADD [CONSTRAINT [sysbol]] PRIMARY KEY [index_type] (index_col_name,…….)

先创建一个users2表:

 添加id列:

 将id列设为主键:

 添加唯一约束:

 添加外键约束:

 添加或删除默认约束:

ALTER TABLE tb_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

添加默认值:

 删除默认值:

 删除主键约束:

ALTER TABLE tb_name DROP PRIMARY KEY 

 删除唯一约束:

ALTER TABLE tb_name DROP {INDEX | KEY} index_name

查看索引:

 删除唯一约束:

 删除外键约束:

ALTER TABLE tb_name DROP FROEIGN KEY fk_symbol

先查看约束名:

 删除外键约束: 、

 修改列定义:

ALTER TABLE tb_name MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_nam]

将id移动到最前边:

 

 

 

 第一种方法:

 第二种:

 

 

 先创建一个表,普通的插入方法:

 可以是表达式,自动添加的也可以设为DEFAULT:

 对于有默认值额字段,也可以用DEFAULT使用默认值:

 插入多条记录:

 

 缺点,一次只能插入一条记录:

 

 

 不加where所有记录都会更新:

 

 更新多个字段:

 使用where语句:

 

 

 注意:删除只有再插入值,id是按所有id最大值的下一个

 

 使用别名查询两个字段:

 

 

 

 

 

 注意:使用第一条时,having后边的字段必须在select中

 对查询结果以id的值降序排列:

 对查询结果以age升序排列,相同的以id降序排列:

 

 查询两条记录:

 查询3,4两条记录:

 组合使用,注意并没有id缺少6并不会影响:

 

先创建一个表,再讲查询的结果插入创建的表中:

当客户端显示乱码时,使用SET NAMES GBK

 

 查询平均值:

 

 查询平均值,并对查询的结果的平均值做四舍五入,取小数点后两位:

 

 使用子表查询:

 Any()、some()任何值,all()所有值

 

 

 

 DESC tb_name 等价于 SHOW COLUMNS FROM tb_name

使用INSERT …….SELECT 插入记录:

 

 

 

 

 

 

 利用新建的表,再更新原表

查询表结构发现,字段的类型并没有变,所以更改字段类型:

 

 

 多表连接的语法:

 表起别名:

 

 

 

 多表查询:

 

 

 三张表的多表查询:

 

 

 无限分类数据表;

 

 无限分类的查找,用自身连接:

 左连接,查询父类下的子类数目:

 

 查询goods_name 重复的记录:

 删除重复记录:

 

 

 

 应用:

CONCAT_WS()

 FORMAT(数,小数点后几位)—对数格式化

 

 LOWER()

 UPPER()

 

 LEFT()  RIGHT()

 简单的嵌套:

 

 LENGTH()空格也算在长度之内

 

 LTRIM(),RTRIM(),TRIM()例子中前边2个空格后边4个空格,总字节数为11个:

 

 

 TRIM(LEADING ‘要删除的前导字符’,FROM ‘字符串’);

LEADING—前导

TRAILING—后续

BOTH—前+后

'

 REPLACE(‘字符串’,’要替换的字符串’,’替换成什么字符串’)

 SUBSTRING(‘字符串‘,从第几位开始,截取几位)—起始位置可以为负值

 LIKE –MYSQL中的%相当于编程中的*

 %代表任意的字符,_代表任意一个字符

 CEIL()

 FLOOR()

 DIV

 %

 POWER()指数运算:

 ROUND()四舍五入

 TRUNCATE()小数截取:

 

 

 

 

 

 

 

 多条写入是,只显示第一条记录的id值,并不是多条

 

 

 

 

 

 如果设计的mysql数据库是为web页面做准备,建议用MD5()加密

 

 

 

 

 创建一个无参的自定义函数,并且自定义函数的使用:

 创建一个带参的自定义函数:

 DELIMITER //修改分隔符

创建 聚合函数(默认分割符为;如果不更改分隔符会报错):

 

 

 

 

 

 

 

 

 

 过程体可以是任意SQL语句(对数据表的增删改查和连接)

 

 

 

 删除存储过程:

 创建一个带参的存储过程:

 创建带有IN和OUT类型参数:

 ROW_COUNT()数据表中被操作过的记录(增删改)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

author@nohert
原文地址:https://www.cnblogs.com/gzgBlog/p/13676576.html