zoukankan      html  css  js  c++  java
  • MySQL基础语句

    ------------------------------------------------
    mysql启动不了使用:
    1. 先把启动程序kill了 mysqld
    2. 重启mysql服务
    service mysql restart
    -------------------------------------------------
    用户相关操作
    注:以下命令均需先以root身份登录mysql:mysql -uroot -p
    1.添加新用户
    (1)创建新用户:> insert into mysql.user(Host,User,Password)     values("localhost","user1",password("password1"));
    (2)为用户分配权限:
    设置用户可以在本地访问mysql:grant all privileges on *.* to username@localhost identified by "password" ;
    设置用户只能访问指定数据库:grant all privileges on 数据库名.* to username@localhost identified by "password" ;
    (3)刷新系统权限表:>flush privileges;
    2.查看MySql当前所有的用户:>SELECT DISTINCT User FROM mysql.user;
    3.删除用户及其数据字典中包含的数据:>drop user 'xbb'@'localhost';

    -----------------------------------------------------------
    一.对数据库进行的操作
      1. 查看数据库:
        show databases;
        最先开始三个不能删,自带的三个不能删
        | information_schema | mysql | performance_schema |
      2. 创建数据库:
        create database 新建的数据库的名称;
        ## 普通数据库,不支持中文
        create database 新建的数据库的名称 character set utf8;
        ## character 指定字符集,这样就创建了一个字符集为utf8的数据库
        create database 新建的数据库的名称 character set utf8 collate utf8_general_ci;
        ## collate 对进入你新建的这个数据库的数据进行utf8格式的校对 从程序来的数据进入数据库要用得到
      3. 修改数据库:
        1>.修改数据库字符集:
          alter database 数据库名称 character set utf8;
          ## 将对应的数据库字符集修改为utf8
      4. 删除数据库:
        drop database 要删除的数据库的名称;
      5. 进入数据库:
        use 数据库名称 ##不用加分号 因为这句是mysql自己的不是sql语句
    二.对表进行操作(创建表先要进入数据库)
      1. 查看表
        show tables;
      2. 创建表
        create table 表名(字段参数);
        ## 字段参数即为表中的列 最少得有一个 例如(id int,name varchar(30))
        create table if not exists 表名(字段参数);
        ## 创建一个不存在的表,如果已经存在,则无动作
      3. 删除表
        drop table 表名;
        drop table if exists 表名; ##如果存在就删除,不存在就无动作
      4. 对表的重命名
        rename table 原表名 to 新表名;
      5. 查看表的创建语句
        show create table 表名;
      6. 修改基本表 ## column是列的意思
        alter table <表名> ## <表名>是要修改的基本表
        [add[column] <新列名><数据类型>[完整性约束]] ## add子句用于增加新列、新的列级完整性约束条件
        [add<表级完整性约束>] ## 和新的表级完整性约束条件。
        [drop[column] <列名 [cascade|restrict]] ## drop column字句用于删除表中的列,如果指定了cascade短语,
        [drop constraint<完整性约束名> [restrict|cascade]]## 则自动删除引用了该列的其他对象
        [alter column <列名><数据类型>]; ## alter column 子句用于修改原有的列定义,包括修改列名和数据类型
    三.对表的内容的操作:
      1. 展示表
        desc 表名; ## 将表内容展示出来
      2. 修改字段的属性
        alter table 表名 add 字段 字段类型; ## 增加了一个列
        alter table 表名 字段 想要修改的类型; ## 将对应列的属性修改
        alter table 表名 change 原字段名 新字段名 新字段类型;
      3. 删除字段
        alter table t1 drop 字段名;
    四.对表的数据的操作:
      增:>insert into 表名称 (字段名1,字段名2,字段名3......) values(字段名1的值,字段名2的值,字段名3的值......);
      删:>delete from 表名称 where 表达式;
      改:>update 表名称 set 字段名=“新值” where 表达式;
      查:>select 字段名1,字段名2,字段名3..... from 表名称;
    五.多表查询:
      1. 交叉连接 (就是笛卡尔积)
        1>. 官方标准写法:# 因为交叉连接的英文为"cross join"
          select * from 表1 cross join 表2 cross join 表3 ......;
        2>. 简单写法:
          select * from 表1,表2,表3,.....;

        # 两种写法得到结果相同
        # 交叉连接如果数据有点大 得到的时间就会很长,每张表中数据也会很多,而且得到结果以后,可能也没有多大意思
        # 应该避免这种查询

      2. 内连接 (常用的多表查询方式)
        1>. 官方标准写法: # 因为内连接的英文为"inner join"
          select * from 表1 inner join 表2 on 限制条件;
        2>. 简单写法
          select * from 表1,表2 where 限制条件;
        3>. 自连接
          select * from 表名 别名1 inner join 表名 别名2 on 限制条件(用别名);
        ## 可以看做是比交叉连接多了限制条件 如果把限制条件去掉,将和交叉连接一样,
        ## 当然交叉连接如果加上限制条件也就变成内连接
        ## 限制条件中有等号的叫做等值连接,其他符号的叫做不等连接
        ## 在MySQL中 inner join 也可以直接写成 join 他们是等效的。
      3. 外连接 (分为左外连接"left outer join" 和 右外连接"right outer join")
        1>. 左外连接 "left outer join" 可以写成 "left join"
          select * from 表1 left outer join 表2 on 限制条件;
        2>. 又外连接 "right outer join" 也可以写成 "right join"
          select * from 表1 right outer join 表2 on 限制条件;
        ## 外连接和内连接差不多,唯一不同的特性左外连接会把"left outer join"左侧的表中不符合条件的记录
        ## 也展示出来,由于左侧表中这部分记录并不符合连接条件 也就是说右侧表中没有与之对应的记录,所以它
        ## 会和”空记录“进行连接
        ## 换句话说,如果是左外连接,那么左侧表中所有的记录都会被显示出来,符合条件的记录会与右侧表中符合
        ## 条件的对应相连接,不符合条件的记录将会和"空记录"进行连接
        ## 同样 右外连接就是左外连接反过来,以右侧表为主而已
        ## 如果为主的表中所有记录都符合条件 那就不会出现与空记录进行连接的情况
      4. 联合查询 union和union all
        # 可以将其看成过个select语句放在一起使用
          select * from 表1 union select * from 表2;
        # 这样得出的结果是表1在上表2在下 以表1为基准,如果想以表2为基准,就把表2放union前面
        # 当然也可以在*的位置使用别名
        # 在使用union时候 两个语句查询出的字段数量必须相同,否则会报错
        # 查询出结果以后 重复的会合并为一条 如果想全部显示出来,就用union all
      5. 全连接 full join
        # 在sql标准中,还有一种被成为"全连接"的多表查询方式,但是MySQL
        # 不支持全连接,准确的说 MySQL不能直接使用"full join"实现全连接
        # 但是我们可以变相的实现全连接 在 mysql中,我们可以使用"left join"
        # "union" "right join" 的组合实现所谓的全连接
        select * from 表1 left join 表2 on 限制条件 [where 另外的条件]
        union
        select * from 表1 right join 表2 on 限制条件 [where 另外的条件]; ## 这是一句 用union把 左外和右外连接起来 就变成了 全连接

  • 相关阅读:
    服务返返回状态码详解
    LeetCode#28 Implement strStr()
    LeetCode#58 Length of Last Word
    LeetCode#66 Plus One
    spooling技术
    文件的打开与关闭
    DMA方式与通道方式
    中断向量、向量中断、向量地址
    中断响应优先级和中断处理优先级
    I/O接口
  • 原文地址:https://www.cnblogs.com/wangweigang/p/9825022.html
Copyright © 2011-2022 走看看