zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    jsonp 原理和基本使用
    jsonplaceholder直接提供模拟测试数据
    为什么要学mock
    vue基础知识和案例
    winform datagridview中combobox列改变选项时触发其他列变化
    将DataGridView转换为DataTable
    C#中删除字符串最后一个字符串的几种方式
    C#中成员变量和局部变量的区别
    WinForm窗体中如何在一个窗体中取到另一个窗体的值
    ComboBox 中 DisplayMember 和 ValueMember有何区别
  • 原文地址:https://www.cnblogs.com/gzgBlog/p/13676576.html
Copyright © 2011-2022 走看看