zoukankan      html  css  js  c++  java
  • MySQL操作语句

    * mysql的数据操作语句(通过dos命令语句)
        1. 通过windows+r输入cmd打开dos命令窗口,输入命令‘net start mysql’启动你的电脑mysql服务。
        2. 输入‘mysql -uroot -p××××’(u和p之后没有空格)进入自己的mysql管理模式,其中u代表的是user,即你的登录身份,管理员一般为root。其中p代表password,即你所登录身份的密码,但是直接这样输入密码的话,密码会以明文显示,有可能被周围不怀好意的人看到。所以建议输入‘mysql -uroot -p’命令,系统会之后让你输入密码。此时密码会以密文的形式显示在命令窗口,减小了被别人获取的风险。
        3. 如果账户和密码正确,则会登录进mysql管理模式,此时命令行会变为:mysql>,这时就可以输入对数据库的操作命令了。
        4. 退出mysql;quit或者exit,或者使用快捷键Ctrl+C也可以快速退出
    * SQL语句分类:
        1. Data Definition Language (DDL 数据定义语言) 如:建库,建表
        2. Data Manipulation Language(DML 数据操纵语言), 如:对表中的记录操作增删改
        3. Data Query Language(DQL 数据查询语言),如:对表中的查询操作
        4. Data Control Language(DCL 数据控制语言),如:对用户权限的设置
    * MySQL语法
        1. 如果实在可视化图形界面,如SQLyog或者Navicat等软件中,可以在命令结尾不加分好‘;’。
        2. 如果在dos命令中,需要在每条SQL操作语句后加‘;’以执行。
        3. mySQL注释有三种:
            *  ‘--’+空格为单行注释
            *  ‘/*  */’为多行注释
            *  ‘#’也是注释格式
    * DDL数据库操作语句
        * 创建数据库    
          * CREATEE DATABASE 数据库名;
          * 判断数据库存不存在,不存在则创建,存在也会执行而不会报错     CREATE DATABASE IF NOT EXUSTS 数据库名
          * 创建数据库并制定字符集    CREATE DATABASE 数据库名 CHARACTER SET 字符集;(字符集是指utf-8,gbk等,utf-8在dos命令中为utf8)
          * 例如:-- 直接创建数据库 db1
          
                 create database db1;                                               

                 -- 判断是否存在,如果不存在则创建数据库 db2
                 
                 create database if not exists db2;
                 
                 -- 创建数据库并指定字符集为 gbk
                 
                 create database db3 default character set gbk;
        * 查看数据库
            * 查看所有存在的数据库:    show databases;
            * 查看某个数据库的创建信息:    show create database 数据库名
        * 修改数据库
            * 修改数据库默认的字符集:    alter database 数据库名 default character set 字符集;
        * 删除数据库
            * 删除指定数据库:    drop database 数据库名;
        * 使用数据库
            * 查看正在使用的数据库:    select database();
            * 使用/切换数据库:    use 数据库名;
    * DDL操作表结构
        1. 创建表
        
            1.1 创建表:

                        CREATE TABLE 表名 (
                        字段名 1 字段类型 1,
                        字段名 2 字段类型 2
                        );
        2. 常用数据类型
            * int  整型
            * double 浮点型
            * varchar 字符类型
            * date 日期类型
        3. 详细数据类型
            * 整数
                * tinyInt 微整型:很小的整数(占 8 位二进制)
                * smallint 小整型:小的整数(占 16 位二进制)
                * mediumint 中整型:中等长度的整数(占 24 位二进制)
                * int(integer) 整型:整数类型(占 32 位二进制)
            * 小数
                * float 单精度浮点数,占 4 个字节
                * double 双精度浮点数,占 8 个字节
            * 日期
                * time 表示时间类型
                * date 表示日期类型
                * datetime 同时可以表示日期和时间类型
            * 字符串
                * char(m) 固定长度的字符串, 无论使用几个字符都占满全部, M 为 0~255 之间的整数
                * varchar(m) 可变长度的字符串, 使用几个字符就占用几个, M 为 0~65535 之间的整数
            * 大二进制
                * tinyblob Big Large Object    允许长度 0~255 字节
                * blob 允许长度 0~65535 字节
                * mediumblob 允许长度 0~167772150 字节
                * longblob 允许长度 0~4294967295 字节
            * 大文本
                * tinytext 允许长度 0~255 字节
                * text 允许长度 0~65535 字节
                * mediumtext 允许长度 0~167772150 字节
                * longtext 允许长度 0~4294967295 字节
        4. 查看表
            * 查看数据库中的所有表:show tables;
            * 查看表结构:desc 表名
            * 查看创建表的SQL语句:show create table 表名;
        5. 快速创建一个表结构相同的表
            * create table 新表名 like 旧表名;
        6. 删除表
            * drop table 表名;
            * 看表是否存在,若存在则删除表:drop table if exists 表名;
        7. 修改表结构
            * 添加列
                * 给表添加一列:alter table 表名 add 列名 类型;
                * 给表最前面添加一列:alter table 表名 add 列名 类型 first;
                * 给表某个字段后添加一列:alter table 表名 add 列名 类型 after 字段名;
                * 注意:没有给表某个字段前添加一列的方法。
            * 修改列类型
                * alter table 表名 modify 列名 新类型;
            * 修改列名
                * alter table 表名 change 旧列名 新列名 类型;
            * 删除列
                * alter table 表名 drop 列名;
            * 修改表名
                * rename table 旧表名 to 新表名;
            * 修改字符集
                * alter table 表名 character set 字符集;
    * DML操作表中的数据(用于对表中进行增删改查)
        1. 插入记录
            * insert into 表名(字段名) values(字段对应值);
            * 如果不写字段名,则认为是插入全字段数据
            * 如果想单独插入指定字段数据,则只写指定插入数据的字段名,这里需要注意的是,若表中包含不能为空的字段,如主键等,则在插入数据的时候必须插入必须字段。
        2. DOS命令行解决中文显示乱码问题:
            show variables like 'character%';
            
            set character_set_client=gbk;
            
            set character_set_connection=gbk;

            set character_set_results=gbk;
            * 每次退出DOS命令窗口以后会失效,再次进入需要重新设置
        3. insert的注意事项
            * 插入的数据应与字段的数据类型相同
            * 数据的大小应在列的规定范围内,例如:不能将一个长度为 80 的字符串加入到长度为 40 的列中。
            * 在 values 中列出的数据位置必须与被加入的列的排列位置相对应。在 mysql 中可以使用 value, 但不建议使用,功能与values 相同。
            * 字符和日期型数据应包含在单引号中。 MySQL 中也可以使用双引号做为分隔符。
            * 不指定列或使用 null,表示插入空值。
        4. 蠕虫复制(将一张表的数据复制到另一张表中)
            * insert into 表名1 select * from 表名2;
            * 只复制部分列:insert into 表名1(字段名1,字段名2) select 字段名1,字段名2 from 表名2;
        5. 更新表记录
            * 不带条件更新:update 表名 set 字段名=值;(修改所有的行)
            * 带条件更新:update 表名 set 字段名=值 where 字段名=值
            * 删除表记录:delete from 表名 where 字段名=值;
                * 注意,如果使用delete from 表名;这会删除表中蓑鲉记录
                * 也可以使用truncate删除表中所有记录:truncate table 表名
                * truncate 相当于删除表的结构,再创建一张表。
    * DQL查询表中的数据
        1. 简单查询
            * 查询表中所有数据:select * from 表名;
            * 查询指定字段:select 字段名1,字段名2,... from 表名
        2. 指定列别名进行查询(并不会修改原表列名,显示的是修改的名)
            * 对列指定别名:SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名;
            * 对列和表都使用别名:SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名 AS 表别名; 
        3. 清除重复值
            * 查询指定结果,不出现重复数据:select distinct 字段名 from 表名;
        4. 查询结果参与运算
            * 某列数据和固定值运算:select 列名+固定值 from 表名;
            * 某列数据和其他列数据参与运算:select 列名1+列名2 from 表名;

      *  ifnull函数:ifnull(表达式1,表达式2):null参与的运算如果不调用该函数,计算结果都为null

                        *  表达式1:哪个字段需要判断是否为null

                        *  表达式2:如果表达式1为null后的替换值

        5. 条件查询
            * select 字段名 from 表名 where 条件;
            * 运算符
                * >、<、<=、>=、=、<> : <>在 SQL 中表示不等于,在 mysql 中也可以使用!=,没有==
                * between...and:在一个范围之内,如: between 100 and 200相当于条件在 100 到 200 之间,包头又包尾
                * in(集合):集合表示多个值,使用逗号分隔
                * like'张%':模糊查询,以张开头的数据
                * like'%张':模糊查询,以张结尾的数据
                * like'%张%':模糊查询,中间含张的数据
                * like'_张':第二个字为张的两个字的数据
                * is null:查询某一列为 NULL 的值,注:不能写=NULL
            * 逻辑运算符
                * and 或 && : 与,SQL 中建议使用前者,后者并不通用。
                * or 或 || : 或。
                * not 或 ! : 非。
            * in关键字
                * SELECT 字段名 FROM 表名 WHERE 字段 in (数据 1, 数据 2...);
                * in 里面的每个数据都会作为一次条件,只要满足条件的就会显示
            * 范围查询
                * BETWEEN 值 1 AND 值 2
                * 表示从值 1 到值 2 范围,包头又包尾
                * 比如: age BETWEEN 80 AND 100 相当于: age>=80 && age<=100
            * like关键字
                * LIKE 表示模糊查询
                * SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';
            * MySQL通配符
                * % : 匹配任意多个字符串
                * _ : 匹配一个字符

  • 相关阅读:
    LA 2038 Strategic game(最小点覆盖,树形dp,二分匹配)
    UVA 10564 Paths through the Hourglass(背包)
    Codeforces Round #323 (Div. 2) D 582B Once Again...(快速幂)
    UVALive 3530 Martian Mining(贪心,dp)
    UVALive 4727 Jump(约瑟夫环,递推)
    UVALive 4731 Cellular Network(贪心,dp)
    UVA Mega Man's Mission(状压dp)
    Aizu 2456 Usoperanto (贪心)
    UVA 11404 Plalidromic Subsquence (回文子序列,LCS)
    Aizu 2304 Reverse Roads(无向流)
  • 原文地址:https://www.cnblogs.com/zlnice/p/9408000.html
Copyright © 2011-2022 走看看