Linux服务器下创建和删除mysql数据库命令

admin2023-01-1812770

一、创建数据库( 默认字符集和排序规则)

    (1)创建数据库

mysql> CREATE DATABASE my_db1;  
Query OK, 1 row affected (0.00 sec)

   (2)因为my_db1已经存在,再次创建会报错

mysql> CREATE DATABASE my_db1;  
ERROR 1007 (HY000): Can't create database 'my_db1'; database exists

  (3)加上IF NOT EXISTS就算数据库已经存在,把原来的覆盖掉了

mysql> CREATE DATABASE IF NOT EXISTS my_db1;  
Query OK, 1 row affected, 1 warning (0.00 sec)

    创建数据库(自定义字符集和排序规则)

(1)查看mysql字符集

mysql> SHOW CHARACTER SET;  
+----------+-----------------------------+---------------------+--------+  
| Charset  | Description                 | Default collation   | Maxlen |  
+----------+-----------------------------+---------------------+--------+  
| big5     | Big5 Traditional Chinese    | big5_chinese_ci     |      2 |  
| dec8     | DEC West European           | dec8_swedish_ci     |      1 |  
| cp850    | DOS West European           | cp850_general_ci    |      1 |  
| hp8      | HP West European            | hp8_english_ci      |      1 |  
| koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    |      1 |  
| latin1   | cp1252 West European        | latin1_swedish_ci   |      1 |  
.......

(2)查看mysql排序规则

mysql> SHOW COLLATION;  
+--------------------------+----------+-----+---------+----------+---------+  
| Collation                | Charset  | Id  | Default | Compiled | Sortlen |  
+--------------------------+----------+-----+---------+----------+---------+  
| big5_chinese_ci          | big5     |   1 | Yes     | Yes      |       1 |  
| big5_bin                 | big5     |  84 |         | Yes      |       1 |  
| dec8_swedish_ci          | dec8     |   3 | Yes     | Yes      |       1 |  
| dec8_bin                 | dec8     |  69 |         | Yes      |       1 |  
| cp850_general_ci         | cp850    |   4 | Yes     | Yes      |       1 |  
| cp850_bin                | cp850    |  80 |         | Yes      |       1 |  
| hp8_english_ci           | hp8      |   6 | Yes     | Yes      |       1 |  
.................

(3)创建数据库包括字符集和排序规则

mysql> CREATE DATABASE IF NOT EXISTS hdu CHARACTER SET 'gbk' COLLATE 'gbk_chinese_ci';  
Query OK, 1 row affected (0.00 sec)

二、删除数据库

Drop :删除数据表或数据库,或删除数据表字段。

删除数据库:drop database 数据库名称

删除数据表:(表的结构、属性、索引也会被删除)

                 use 数据库名称

                 drop table 数据表1名称,数据表2名称


三、删除数据表

1. 清空表中的所有记录,可以使用下面的两种方法:

delete from table1
truncate table table1

备注:其中第二条记录中的table是可选的。

delete语句可以通过where对要删除的记录进行选择,而使用truncate table将删除表中的所有记录。因此,delete语句更灵活。

2. 如果要删除表中的部分记录(),只能使用delete语句。

删除某一行:Delete from 数据表名称 where 列名称=值;
删除所有行:Delete * from 数据表名称

如果delete不加where子句,那么它和truncate table是一样的,但它们有一点不同,那就是delete可以返回被删除的记录数,而truncate table返回的是0。

3. 如果要删除表中的列。Drop 

    use 数据库名称
    alter table 数据表名称
    drop column 字段名(列名称)

4. 关于自增字段:

 如果一个表中有自增字段,使用truncate table和没有WHERE子句的delete删除所有记录后,这个自增字段将起始值恢复成1.如果你不想这样做的话,可以在delete语句中加上永真的where,如where 1或where true。

delete from table1 where 1;

解析:上面的语句在执行时将扫描每一条记录。但它并不比较,因为这个where条件永远为true。这样做虽然可以保持自增的最大值,但由于它是扫描了所有的记录,因此,它的执行成本要比没有where子句的delete大得多。

5. delete和truncate table的最大区别是:

delete可以通过where语句选择要删除的记录,但执行得速度不快,而且还可以返回被删除的记录数;

而truncate table无法删除指定的记录,而且不能返回被删除的记录,但它执行得非常快。

6. 和标准的SQL语句不同:

delete支持order by和limit子句,通过这两个子句,我们可以更好地控制要删除的记录。如当我们只想删除where子句过滤出来的记录的一部分,可以使用limit,如果要删除后几条记录,可以通过order by和limit配合使用。

假设我们要删除users表中name等于"Mike"的前6条记录。可以使用如下的DELETE语句:

delete from users where name = 'Mike' limit 6;

注:一般MySQL并不确定删除的这6条记录是哪6条,为了更保险,我们可以使用ORDER BY对记录进行排序。

delete from users where name = 'Mike' order by id desc limit 6;

说明:TRUNCATE TABLE语句是一种快速、无日志记录的方法。TRUNCATE TABLE语句与不含有 WHERE 子句的 DELETE 语句在功能上相同。但是,TRUNCATE TABLE语句速度更快,并且使用更少的系统资源和事务日志资源。

以上三种删除数据方法的速度, drop> truncate > delete。


网友评论