Linux下MySQL 数据库的基本操作

1. 创建数据库相关命令:
  首先,下载MySQL相关软件包:aptitude install mysql-server/mysql-client
  MySQL中的root用户类似于Linux下的root用户,拥有最多高的权限,若操作不当会对数据造成严重的危害。因此,针对每一个应用程序创建
    对应的数据库及操作用户是一个好习惯。
  mysql -u root -p -u后跟用户名,-p表示需要密码登录,首次进入mysql用root用户(输入root用户账户的密码,这个密码要么是在安装过程中,
    要么是使用mysqladmin工具获得的。)。若进入失败,原因可能是原始密码未正确配置,可尝试用密码‘root‘登录。若仍报错,可参考如下解决方法:
    http://www.cnblogs.com/kerrycode/p/4368312.html
    http://blog.csdn.net/yangxt/article/details/17200611
    mysql的相关安装目录可参考:
    http://www.linuxidc.com/Linux/2014-10/108644.htm
    下面命令尝试可用:
    mysqladmin -u root -p password + 回车(若之前有密码,则会显示在password之后)
    Enter password: 输入新密码(不可见)
  mysql> STATUS(\s) - 列出当前mysql的相关状态信息
  mysql> SHOW DATABASES; - 显示数据库列表
  mysql> USE DB_name; - 选中数据库DB_name
  mysql> SHOW TABLES; - 显示DB_name下的TABLES列表
  mysql> CREATE DATABASE DB_name; - 创建一个新的数据库,当然,首先你应该以root用户登录,普通用户并没有创建数据库的权利
  mysql> GRANT SELECT,INSERT,DELETE,UPDATE ON DB_name TO user_name IDENTIFIED
      > by ‘user_psd‘; - 授予新用户user_name对于数据库DB_name的指定权限,登录密码user_psd。该用户拥有的权限:SELECT,INSERT,DELETE,UPDATE
  mysql DB_name -u user_name –p - 用新创建的用户user_name登录数据库DB_name
  mysql mytest -u root -p - 用root用户登录数据库DB_name,当我们需要为数据库DB_name创建新表时,需要root用户的权限,如下,创建新表的过程:
  mysql> CREATE TABLE employees (
    - > empid int not null, - 该字段列值非空
    -> lastname varchar(30),
    -> firstname varchar(30),
    -> salary float,
    -> primary key (empid)); - 该字段列值唯一,"primary key" 表示该列是表的主键, MySQL将自动索引该列
  mysql> SHOW COLUMNS FROM employees; - 显示employees各字段信息(有时我们需要知道表的结构才能确定插入内容的格式)
  mysql> SHOW CREATE TABLE employees; - 显示表employees的创建过程,同样可以查看其内部结构
  mysql> INSERT INTO table VALUES (...); - 项表table插入一条信息,如:mysql> INSERT INTO employees VALUES (1, ‘Blum‘, ‘Rich‘, 25000.00);
    若:mysql> INSERT INTO employees VALUES (1, ‘Blum‘, ‘Barbara‘, 45000.00);
    则:ERROR 1062 (23000): Duplicate entry ‘1‘ for key 1
  mysql> DELETE FROM employees WHERE empid = 1; - 删除empid = 1的那条信息
  mysql> DELETE FROM employees - 删除指定数据库employees的所有表
  mysql> SELECT * FROM employees; - 查询表employees的所有字段内容,SELECT为查询命令
  mysql> SELECT datafields FROM table; - 查询字段列表datafields指定的内容(个字段间用“,”分割)。常用的三个过滤器修饰符如下:
    WHERE:显示符合特定条件的数据行子集。如:mysql> SELECT * FROM employees WHERE salary > 40000;
    ORDER BY:以指定顺序显示数据行。
    LIMIT:只显示数据行的一个子集。
  E.G. :
    mysql> SELECT * FROM employees;
    +-------+----------+-----------+--------+
    | empid | lastname | firstname | salary |
    +-------+----------+-----------+--------+
    | 0 | ER | ZHANG | 4500 |
    | 1 | SAN | ZHANG | 5500 |
    | 2 | SI | ZHANG | 6500 |
    | 3 | WU | ZHANG | 7500 |
    | 4 | LIU | ZHANG | 8500 |
    | 5 | QI | ZHANG | 9500 |
    +-------+----------+-----------+--------+
  mysql> SELECT lastname, salary FROM employees WHERE salary > 5000 && salary < 8000;
    +----------+--------+
    | lastname | salary |
    +----------+--------+
    | SAN | 5500 |
    | SI | 6500 |
    | WU | 7500 |
    +----------+--------+
  mysql> SELECT * FROM employees1 ORDER BY lastname (ASC/DECS); - 按字段lastname排序查询表employees1
  mysql> SELECT * FROM employees1 WHERE salary LIKE ‘6%‘; - 限制salary为数字6开头的项,LIKE字句可以代替“=”使用
  mysql> exit/quit - 退出数据库软件

2. 新建数据库之后的相关操作:
  ALTER:
    mysql> ALTER TABLE table_name ...; - 创建表之后,有时我们需要对标的结构进行修改,就用这个作为命令头部
    mysql> ALTER TABLE table_name RENAME (AS) table_new_name; - 表重命名
    mysql> ALTER TABLE table_name ADD 列名 列数据类型 [AFTER 插入位置]; - 在表中新增一个字段信息
    mysql> ALTER TABLE table_name CHANGE 列名称 列新名称 新数据类型; - 指定列重命名
    mysql> ALTER TABLE table_name DROP 列名称; - 删除指定列
  DROP:
    mysql> DROP TABLE table_name; - 删除指定表
    mysql> DROP DATABASE database_name; - 删除指定数据库
    mysqladmin -u root -p drop database_name - 同样可以使用mysqladmin命令在mysql软件之外删除指定数据库
  UPDATE:
    +-------+----------+-----------+--------+
    | empid | lastname | firstname | salary |
    +-------+----------+-----------+--------+ +-------+----------+-----------+--------+
    | 5 | QI | ZHANG | 9500 | | 5 | QI | ZHANG | 9500 |
    | 7 | BA | ZAHNG | 9500 | --> | 6 | BA | ZAHNG | 9500 |
    +-------+----------+-----------+--------+ +-------+----------+-----------+--------+
    mysql> UPDATE employees1
      -> SET empid = 6
      -> WHERE lastname = BA; - 限定条件

3. 数据库表间数据复制:http://www.jb51.net/article/47562.htm
  同一数据库表间复制:
    INSERT (INTO) table1 select * from table2; - 完全复制(mysql测试可用)
    INSERT (INTO) table1 select distinct * from table2; - 不复制重复纪录(mysql测试不可用)
    INSERT (INTO) table1 select top 5 * from table2; - 前五条纪录(mysql测试不可用)
  跨数据库表间复制:
    INSERT (INTO) (current.)table1 select * from src_database.table2; - 完全复制
    INSERT (INTO) (current.)table1 select distinct * from src_database.table2; - 不复制重复纪录
    INSERT (INTO) (current.)table1 select top 5 * from src_database.table2; - 前五条纪录
  若table1不存在,则首先应该创建表,并使其结构与src_database结构相同方可copy:
    CREATE TABLE table1 LIKE (src_database.)table2; - +(src_database.)取决于是否在同一个数据库
    INSERT table1 SELECT * FROM (src_database.)table2;

4. 数据库重命名的几种方法:http://www.cnblogs.com/allenhua/p/5393189.html
  以方法四为例(mysqldump导出数据再导入):mytest -> mytest1
  mysqldump -u root -p mytest > mytest_dump.SQL
  mysql -u root -p -e "CREATE DATABASE mytest1"
  mysql -u root -p mytest1 < mytest_dump.SQL
  mysql -u root -p -e "DROP DATABASE mytesst"

5. 数据库用户权限相关:
  mysql> GRANT ALL PRIVILEGES ON mytest1.* TO [email protected] IDENTIFIED BY ‘test‘; - 授予用户test对于数据库mytest1的所有权限
  mysql> GRANT SELECT, INSERT, DELETE,... ON mytest1.* TO [email protected] IDENTIFIED BY ‘test‘; - 授予用户test指定权限
  mysql> DELETE FROM user WHERE user = ‘test‘;
  mysql> FLUSH PRIVILEGES;
  mysql> select * from user; - 查询所有用户的权利

6. 多表查询:
  mysql> SELECT salary FROM employees1
    -> UNION (ALL)
    -> SELECT salary FROM employees2; - 合并employees1与employees2两表salary结果,无重复。+(ALL)全列出可重复
      +--------+
      | salary |
      +--------+
      | 4500 |
      | 5500 |
      | 6500 |
      | 7500 |
      | 8500 |
      | 9500 |
      | 10500 |
      | 11500 |
      +--------+
  三种JOIN查询方式:http://www.runoob.com/mysql/mysql-join.html
    mysql> SELECT * FROM tcount_tbl;
    +---------------+--------------+
    | runoob_author | runoob_count |
    +---------------+--------------+
    | 菜鸟教程 | 10 |
    | RUNOOB.COM | 20 |
    | Google | 22 |
    +---------------+--------------+
    mysql> SELECT * from runoob_tbl;
    +-----------+---------------+---------------+-----------------+
    | runoob_id | runoob_title | runoob_author | submission_date |
    +-----------+---------------+---------------+-----------------+
    | 1 | 学习 PHP | 菜鸟教程 | 2017-04-12 |
    | 2 | 学习 MySQL | 菜鸟教程 | 2017-04-12 |
    | 3 | 学习 Java | RUNOOB.COM | 2015-05-01 |
    | 4 | 学习 Python | RUNOOB.COM | 2016-03-06 |
    | 5 | 学习 C | FK | 2017-04-05 |
    +-----------+---------------+---------------+-----------------+
    INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录
      mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a
         -> INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
      等价于:
      mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a, tcount_tbl b
         -> WHERE a.runoob_author = b.runoob_author;
      +-------------+-----------------+----------------+
      | a.runoob_id | a.runoob_author | b.runoob_count |
      +-------------+-----------------+----------------+
    --> | 1 | 菜鸟教程 | 10 |
    --> | 2 | 菜鸟教程 | 10 |
      | 3 | RUNOOB.COM | 20 |
      | 4 | RUNOOB.COM | 20 |
      +-------------+-----------------+----------------+
    LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录
      mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a
         -> LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
      +-------------+-----------------+----------------+
      | a.runoob_id | a.runoob_author | b.runoob_count |
      +-------------+-----------------+----------------+
    --> | 1 | 菜鸟教程 | 10 |
    --> | 2 | 菜鸟教程 | 10 |
      | 3 | RUNOOB.COM | 20 |
      | 4 | RUNOOB.COM | 20 |
      | 5 | FK | NULL |
      +-------------+-----------------+----------------+
    RIGHT JOIN(右连接):与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录
      mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a
         -> RIGHT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
      +-------------+-----------------+----------------+
      | a.runoob_id | a.runoob_author | b.runoob_count |
      +-------------+-----------------+----------------+
    --> | 1 | 菜鸟教程 | 10 |
    --> | 2 | 菜鸟教程 | 10 |
      | 3 | RUNOOB.COM | 20 |
      | 4 | RUNOOB.COM | 20 |
      | NULL | NULL | 22 |
      +-------------+-----------------+----------------+

时间: 2024-08-04 16:42:17

Linux下MySQL 数据库的基本操作的相关文章

Linux下MYSQL数据库的基本操作

建立数据库: mysql> create database test; //建立一个名为"test"的数据库 建立数据库表: mysql> create table test -> (name char(16) not null, -> passwd char(16) ->); //建立一个名为"test"的表,里面有两个字段,一个字段名为"name",类型为char,大小为16,非空:另一个字段名为"pa

Linux下MySQL数据库常用基本操作 一

1.显示数据库 show databases; 2.选择数据库 use 数据库名; 3.显示数据库中的表 show tables; 4.显示数据表的结构 describe 表名; 5.显示表中记录 SELECT * FROM 表名 6.建库 create databse 库名; 7.建表 create table 表名 (字段设定列表): mysql> create table name( -> id int auto_increment not null primary key , ->

Linux下MySQL数据库常用基本操作

1.显示数据库  show databases; 2.选择数据库 use 数据库名; 3.显示数据库中的表 show tables; 4.显示数据表的结构 describe 表名; 5.显示表中记录 SELECT * FROM 表名 6.建库  create databse 库名; 7.建表 create table 表名 (字段设定列表): mysql> create table name(    -> id int auto_increment not null primary key ,

linux下mysql数据库主从同步配置

说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备篇: 说明:在两台MySQL服务器192.168.21.128和192.168.21.129上分别进行如下操作 备注: 作为主从服务器的MySQL版本建议使用同一版本! 或者必须保证主服务器的MySQL版本要高于从服务器的MySQL版本! 一.配置好IP.DNS .网关,确保使用远程连接工具能够连接

linux下mysql数据库的学习

转载博客:http://freedomljtt.blog.163.com/blog/static/72294949201210145441701/ ubuntu12.04 卸载和安装mysql 卸载mysql 第一步 1 sudo apt-get autoremove --purge mysql-server-5.0 2 sudo apt-get remove mysql-server 3 sudo apt-get autoremove mysql-server 4 sudo apt-get r

linux下mysql数据库 模型, 管理表 索引

1.linux下mysql数据库及其模型 1.1.SHOW TABLE STATUS LIKE 'user'\G   #查看表的存储引擎 SHOW ENGINES;   #查看数据库支持的存储引擎 客户端工具:mysql.mysqladmin.mysqldump.mysqlimport.mysqlcheck 服务器端工具:mysqld, mysqld_safe, mysqld_multi 1.2.my.cnf检查顺序: /etc/my.cnf --> /etc/mysql/my.cnf -->

Linux下mysql数据库常用命令一

生产真实服务器下环境操作: 192.168.24.37192.168.24.37(Server)081119 Last login: Tue Aug 11 15:08:10 2015 from 192.168.24.1 #远程连接数据库 [[email protected] ~]# mysql -u root -h 117.40.239.9 -p    #远程连接数据库 Enter password: Welcome to the MySQL monitor.  Commands end wit

linux下mysql数据库导入导出命令

首先linux 下查看mysql相关目录[email protected]:~# whereis mysqlmysql: /usr/bin/mysql----   mysql的运行路径 /etc/mysql /usr/lib/mysql-----   mysql的安装路径/usr/bin/X11/mysql /usr/share/mysql/usr/share/man/man1/mysql.1.gz此外还有一个:var/lib/mysql --------mysql数据库data文件的存放路径

Linux 下,mysql数据库报无法登陆错误:ERROR 1045 (28000): Access denied for use

今天在别人的服务器上登录mysql发现无法登陆(Mysql别人实现安装好的) 密码和用户名都是正确的,但登录后报如下错误: ERROR 1045 (28000): Access denied for user ‘admin’@'localhost’ (using password: YES) 尝试了加入-h和-port也无法登陆,最后只能重新修改了.注--该方法也可以用于当忘记数据库密码时,找回数据库密码用 如下是我执行过程,完全执行后,可以顺利登录数据库:linux下的执行脚本: Java代码