zoukankan      html  css  js  c++  java
  • MySQL的操作

    1、查看帮助或版本号
    mysql --help/-?
    mysql -V
     
    2、启动/停止/重启MySQL
    2.1 启动方式
    1、使用 service 启动:service mysqld start
    2、使用 mysqld 脚本启动:/etc/init.d/mysqld start
    3、使用 safe_mysqld 启动:safe_mysqld &
    4、开机自启动:chkconfig mysqld on
     
    2.2 停止
    1、使用 service 启动:service mysqld stop
    2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop
    3、mysqladmin shutdown
    4、关闭开机自启动:chkconfig mysqld off
     
    2.3 重启
    1、使用 service 启动:service mysql restart
    2、使用 mysqld 脚本启动:/etc/inint.d/mysql restart
     
    2.4 查看mysql服务的状态
    查看mysql是否启动了:
    /etc/init.d/mysql status
    或者 /etc/rc.d/init.d/mysqld status
    或者 service mysql status
     
    使用命令chkconfig --list mysqld 命令来查看mysql 的启动状态。
     
    使用命令ps aux | grep mysqld 命令来查看mysql 的启动状态。有则说明启动了。没有则说明没有启动MySQL。
     
    使用命令 pidof mysqld 命令来查看mysql 的启动状态。:如果显示PID说明程序启动,不显示PID即为程序没有启动。
     
    如果是RHEL7,使用systemctl命令:systemctl start/stop/restart/enable/disable mysqld
     
    如果是RHEL 7 或者 Centos 7,则是:
    # systemctl start mariadb.service
    # systemctl enable mariadb.service
     
    3、登录MySQL
    1、本地登录
    mysql -h 主机名 -u 用户名 -p    // -h : 该命令用于指定客户端所要登录的MySQL主机名, 登录当前机器该参数可以省略;
    mysql -u user_name -p
    exit;     # 退出mysql
    quit;    # 退出mysql
     
    2、开启root用户远程登录
    登陆mysql数据库:
    mysql -u root -p
    查看user表:
    mysql> use mysql;
    Database changed
    mysql> select host,user from user;
    +-----------+------------------+
    | host | user |
    +-----------+------------------+
    | localhost | mysql.infoschema |
    | localhost | mysql.session |
    | localhost | mysql.sys |
    | localhost | root |
    +-----------+------------------+
    4 rows in set (0.00 sec)
     
    可以看到在user表中已创建的root用户。host字段表示登录的主机,其值可以用IP,也可用主机名。
     
    将host字段的值改为%就表示在任何客户端机器上能以root用户登录到mysql服务器,建议在开发时设为%。
    mysql> update user set host="%" where user='root';
    mysql> FLUSH PRIVILEGES;
     
    4、数据库操作命令
    # database
    show databases;
    create database database_name;
    drop database database_name;
     
    # tables
    use database_name;     # 选择所要操作的数据库,并进入
    也可以在登录时就指定数据库: mysql -D 所选择的数据库名 -h 主机名 -u 用户名 -p
    show tables;      # 查看当前库中有哪些表
    drop table table_name;    # 删除某个表
    drop table table_name if exists table_name;
    describe 表名;    // 命令可查看已创建的表的详细信息,但不是表中的数据内容。
     
    创建表:
    create table students (id int unsigned not null auto_increment primary key, name char(8) not null, sex char(4) not null, age tinyint unsigned not null, tel char(13) null default "-");
    // 括号内声明了5列内容, id、name、sex、age、tel为每列的名称, 后面跟的是数据类型描述, 列与列的描述之间用逗号(,)隔开;
    //  "id" 为列的名称;
    // "int" 指定该列的类型为 int(取值范围为 -8388608到8388607), 在后面我们又用 "unsigned" 加以修饰, 表示该类型为无符号型, 此时该列的取值范围为 0到16777215;
    // "not null" 说明该列的值不能为空, 必须要填, 如果不指定该属性, 默认可为空;
    // "auto_increment" 需在整数列中使用, 其作用是在插入数据时若该列为 NULL, MySQL将自动产生一个比现存值更大的唯一标识符值。在每张表中仅能有一个这样的值且所在列必须为索引列。
    // "primary key" 表示该列是表的主键, 本列的值必须唯一, MySQL将自动索引该列。
    // char(8) 表示存储的字符长度为8, tinyint的取值范围为 -127到128, default 属性指定当该列值为空时的默认值。
    // 更多数据类型请参阅:《mysql数据类型》:http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html
     
    也可以通过任何文本编辑器将语句输入好后保存为 createtable.sql 的文件中, 通过命令提示符下的文件重定向执行执行该脚本。打开命令提示符, 输入: mysql -D samp_db -u root -p < createtable.sql
     
    修改表格属性,采用 alter table 语句:
    alter table 语句用于创建后对表的属性修改, 基础用法如下:
    添加列:
    基本形式: alter table 表名 add 列名 列数据类型 [after 插入位置];
    示例:
    在表的最后追加列 address: alter table students add address char(60);
    在名为 age 的列后插入列 birthday: alter table students add birthday date after age;
     
    修改列:
    基本形式: alter table 表名 change 列名称 列新名称 新数据类型;
    示例:
    将表 tel 列改名为 telphone: alter table students change tel telphone char(13) default "-";
    将 name 列的数据类型改为 char(16): alter table students change name name char(16) not null;
     
    删除列:
    基本形式: alter table 表名 drop 列名称;
    示例:
    删除 birthday 列: alter table students drop birthday;
     
    重命名表:
    基本形式: alter table 表名 rename 新表名;
    示例:
    重命名 students 表为 workmates: alter table students rename workmates;
     
    5、SQL语句操作
    5.1 插入语句(插入数据)
    向表中插入数据:
    insert 语句可以用来将一行或多行数据插到数据库表中,使用的一般形式如下: 
    insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);
    示例:
    insert into students (name, sex, age) values("xzh", "man", 24);
     
    Insert a Row if Not Exists in MySQL(插入一行,若存在则忽略),主要采用3种语法:
    (1)Use REPLACE to Insert if Not Exists in MySQL
    (2)Use INSERT IGNORE to Insert if Not Exists in MySQL
    (3)Use INSERT ... ON DUPLICATE KEY UPDATE to Insert if Not Exists in MySQL
     
    (1)REPLACE
    REPLACE 语句,当记录不存在时插入,存在则更新内容。
    示例:
    REPLACE INTO 'person' SET id = 1, name = 'John Doe'`, age = 28, address = 'Los Angeles, California';
     
    (2)INSERT IGNORE
    在 INSERT IGNORE 上,如果记录的主键已经存在于数据库中,它将会忽略或跳过,不插入记录。
    示例:
    INSERT IGNORE person SET 'id' = 4, age = 1000, address = 'Chicago';
     
    (3)INSERT ... ON DUPLICATE KEY UPDATE
    如果使用 ON DUPLICATE KEY UPDATE 子句并且要插入的行在 UNIQUE 索引或主键中是重复的,则该行将执行 UPDATE。
    示例:
    INSERT INTO person (id, name, age, address) VALUES (1, 'Jane Deer', '33', 'Tallahassee Florida') ON DUPLICATE KEY UPDATE id = id+1;
     
    参考,Insert a Row if Not Exists in MySQL:https://www.delftstack.com/howto/mysql/mysql-insert-if-not-exists/
     
    5.2 查询语句
    查询表中数据:
    格式: select 列名称 from 表名称 [查询条件];
    示例:
    select name, age from students;
    select * from students;    // 查询所有内容
     
    限制返回记录的数目:
    LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定记录行的偏移量,指示MySQL从哪一行开始显示,第一行记录的位置偏移量是0,以此类推;第二个参数指定返回记录行的最大数目(行数)。
    1、查询第一行记录:
    select * from table limit 1;
    2、查询第n行到第m行记录
    select * from table1 limit n-1,m-(n-1);  // 可认为是取第n-1行后m-(n-1)行的记录
    SELECT * FROM table LIMIT 5,10;  //返回第6行到第15行的记录
    select * from employee limit 3,1;  // 返回第4行
    SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last。为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1。
    3、查询前n行记录
    select * from table1 limit 0,n;
    select * from table1 limit n;
    4、查询后n行记录
    select * from table1 order by id desc limit n;//倒序排序,取前n行 id为自增形式
    5、查询一条记录($id)的下一条记录
    select * from table1 where id>$id order by id asc limit 1
    6、查询一条记录($id)的上一条记录
    select * from table1 where id<$id order by id desc limit 1
     
    按照特定条件查询:
    where 关键词用于指定查询条件,语法形式为: select 列名称 from 表名称 where 条件;
    例如:
    查询年龄在21岁以上的所有人信息: select * from students where age > 21;
    查询名字中带有 "王" 字的所有人信息: select * from students where name like "%王%";
     
    where 子句不仅仅支持 "where 列名 = 值" 这种名等于值的查询形式, 对一般的比较运算的运算符都是支持的, 例如 =、>、<、>=、<、!= 以及一些扩展运算符 is [not] null、in、like 等等。 还可以对查询条件使用 or 和 and 进行组合查询。
     
     
    1. COUNT(*) 计算table的行数
    计算pet表中的动物
    mysql> select count(*) from pet;
     
    计算每个人有多少宠物
    mysql> select owner, count(*) from pet group by owner;
     
    每种类型的宠物数量
    mysql> select species, count(*) from pet group by species;
     
    根据类型和性别区分的每种宠物数量
    mysql> select species, sex, count(*) from pet group by species, sex;
     
    已知性别的宠物中每种类型和性别宠物的数量
    mysql> select species, sex, count(*) from pet where sex is not null group by species, sex;
     
    5.3 更新语句
    更新/修改表的数据:
    update 语句可用来修改表中的数据,基本的使用形式为:  update 表名称 set 列名称=新值 where 更新条件;
    示例:
    update students set name="xjy" where id=2;
     
    5.4 删除记录语句
    删除表的数据:
    delete 语句用于删除表中的数据,基本用法为:  delete from 表名称 where 删除条件;
     
    删除id为2的行: delete from students where id=2; 
    删除所有年龄小于21岁的数据: delete from students where age<20; 
    删除表中的所有数据: delete from students;
     

    作者:锆石先生
    版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
  • 相关阅读:
    wifi与wimax
    短信中心号码
    (安卓)黑盒测试技巧个人整理
    数组实现栈的结构(java)
    tikv性能参数调优
    pt-table-checksum工具MySQL主从复制数据一致性
    MySQL索引原理以及类型
    TiDB数据库 mydumper与loader导入数据
    Innodb的体系结构
    MySQL核心之双一原则
  • 原文地址:https://www.cnblogs.com/xiezh/p/15433192.html
Copyright © 2011-2022 走看看