Mysql数据库的一些基本操作(mysql常用的命令)

以下是MySQL得基本操作,需要的,可以收藏一下。方便需要的时候,手到拈来。

1、启动MySQL服务器

开始 -> 运行   输入“cmd”,然后在命令提示符下输入“net start MySQL”指令。

2、连接MySQL服务器

输入指令:MySQL -uroot  -h127.0.0.1 -p111(-h127.0.0.1看个人情况输不输)

注:用户名为“root”,MySQL数据库服务器地址为“127.0.0.1”,密码为“111”,三者之间必须有空格。

3、关闭MySQL服务器

开始 -> 运行   输入“cmd”,然后在命令提示符下输入“net stop MySQL”指令。

二、操作MySQL数据库

1、创建数据库

create database 数据库名;

2、查看数据库

show databases;

3、选择指定数据库

use 数据库名;

4、删除数据库

drop database 数据库名;

注:自动删除MySQL安装目录中的“C:/AppServ/MySQL/data”文件夹。

三、操作MySQL数据表

1、创建表

create table 表名 (column_name column_type not null,...)

create table语句的属性说明
属性 说明 属性 说明
column_name 字段名 Primary key 该列是否为主码
column_type 字段类型 AUTO_INCREMNT 该列是否自动编号
Not null | null 该列是否允许为空    

创建数据表后,“C:\AppServ\MySQL\data\数据库名\”中自动创建对应表文件(“表名.frm”,“表名.MYD”,“表名.MYI”)

2、查看数据库中的表

show tables;

3、查看数据库中所有的表

show tables;(前提是使用use database 数据库;)

4、查看数据表结构

describe 表名;

5、修改数据表结构

alter table 表名

  add [column] create_definition [first | after column_name]  //添加新字段

  add primary key (index_col_name,...)  //添加主码名称

  alter [column] col_name {set default literal |rop default}  //修改字段名称

  change [column] old_col_name create_definition  //修改字段名及类型

  modify [column] create_definition  //修改字段类型

  drop [column] col_name  //删除字段

  drop primary key  //删除主码

  rename [as] new_tablename  //更改表名

eg:alter table Admin_Info

    drop A_Pwd,

    rename as Admin_Info2;

6、删除指定数据表

drop table 表名;

四、操作MySQL数据

1、添加表数据

语法1:insert into 表名 values(值1,值2,...)(自增长的列应写null)

语法2:insert into 表名(字段1,字段2,...) values (值1,值2,...)

语法3:insert into 表名 set 字段1=值1,字段2=值2,...

2、更新表数据

update 表名 set 字段1=值1 where 查询条件

若无查询条件,表中所有数据行都会被修改。

3、删除表数据

delete from 表名 where 查询条件

若无查询条件,表中所有数据行都会被删除。

4、查询表数据

select * from 表名;

5、限制查询记录数

select * from 表名 limit[start] length

start:表示从第几行记录开始输出,0表示第1行

库备份

dbname参数表示数据库的名称;
table表示备份那个数据库的表名
backupname备份数据库名字
 
第一种:备份一个数据库的那些表
mysqldump -u username -p dbname table1 table2 ...-> BackupName.sql
 
第二种:备份多个数据库
 
mysqldump -u username -p --databases dbname2 dbname2 > Backup.sql
加上了--databases选项,然后后面跟多个数据库
 
 
第三种:备份所有库
 
mysqldump -u username -p -all-databases > BackupName.sql
第四种:就是将MySQL中的数据库文件直接复制出来。这是最简单,速度最快的方法。
 
不过在此之前,要先将服务器停止,这样才可以保证在复制期间数据库的数据不会发生变化。
如果在复制数据库的过程中还有数据写入,就会造成数据不一致。这种情况在开发环境可以,
但是在生产环境中很难允许备份服务器。
 
  注意:这种方法不适用于InnoDB存储引擎的表,而对于MyISAM存储引擎的表很方便。
同时,还原时MySQL的版本最好相同。
   
第五种:第三方client软件备份

还原库

mysql -u root -p  dbname< BackupName.sql
dbname  是可选项 ,是用于某些表还原到那些库才需要用到dbname
直接还原库不用加上dbname,也就是数据库名

修改表结构(字段)

修改一列类型
      alter table tab_name modify 列名 类型 [完整性约束条件][first|after 字段名];
      alter table users2 modify age tinyint default 20;
      alter table users2 modify age int  after id;
   
修改列名
      alter table tab_name change [column] 列名 新列名 类型 [完整性约束条件][first|after 字段名];
      alter table users2 change age Age int default 28 first;

删除一列
      alter table tab_name drop [column] 列名;
      -- 思考:删除多列呢?删一个填一个呢?
      alter table users2 
            add salary float(6,2) unsigned not null after name,
            drop addr;    

修改表名
      rename table 表名 to 新表名;
修该表所用的字符集    
      alter table student character set utf8;

删除表
    drop table tab_name;

添加主键,删除主键
    alter table tab_name add primary key(字段名称,...) 
    alter table users drop primary key;

eg:
    mysql> create table test5(num int auto_increment);
    ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
    create table test(num int primary key auto_increment);
    -- 思考,如何删除主键?
    alter table test modify id int;   -- auto_increment没了,但这样写主键依然存在,所以还要加上下面这句
    alter table test drop primary key;-- 仅仅用这句也无法直接删除主键

-- 唯一索引
    alter table tab_name add unique [index|key] [索引名称](字段名称,...) 

    alter table users add unique(name)-- 索引值默认为字段名show create table users;
    alter table users add unique key user_name(name);-- 索引值为user_name

    -- 添加联合索引
    alter table users add unique index name_age(name,age);#show create table users;

    -- 删除唯一索引
    alter table tab_name drop {index|key} index_name

外键约束

创建外键

---  每一个班主任会对应多个学生 , 而每个学生只能对应一个班主任

----主表

CREATE TABLE ClassCharger(

       id TINYINT PRIMARY KEY auto_increment,
       name VARCHAR (20),
       age INT ,
       is_marriged boolean  -- show create table ClassCharger: tinyint(1)

);

INSERT INTO ClassCharger (name,age,is_marriged) VALUES ("冰冰",12,0),
                                                       ("丹丹",14,0),
                                                       ("歪歪",22,0),
                                                       ("姗姗",20,0),
                                                       ("小雨",21,0);


----子表

CREATE TABLE Student(

       id INT PRIMARY KEY auto_increment,
       name VARCHAR (20),
       charger_id TINYINT,     --切记:作为外键一定要和关联主键的数据类型保持一致
       -- [ADD CONSTRAINT charger_fk_stu]FOREIGN KEY (charger_id) REFERENCES ClassCharger(id)

) ENGINE=INNODB;

INSERT INTO Student(name,charger_id) VALUES ("alvin1",2),
                                            ("alvin2",4),
                                            ("alvin3",1),
                                            ("alvin4",3),
                                            ("alvin5",1),
                                            ("alvin6",3),
                                            ("alvin7",2);


DELETE FROM ClassCharger WHERE name="冰冰";
INSERT student (name,charger_id) VALUES ("yuan",1);
-- 删除居然成功,可是 alvin3显示还是有班主任id=1的冰冰的;

-----------增加外键和删除外键---------

ALTER TABLE student  ADD CONSTRAINT abc
                     FOREIGN KEY(charger_id)
                     REFERENCES  classcharger(id);


ALTER TABLE student DROP FOREIGN KEY abc;

猜你喜欢

转载自blog.csdn.net/qq_34861341/article/details/86105717