设为首页 收藏本站
查看: 922|回复: 0

[经验分享] mysql中常用SQL语句

[复制链接]

尚未签到

发表于 2018-10-22 10:11:38 | 显示全部楼层 |阅读模式
DDL相关:  
#创建数据库
  
MariaDB [(none)]> CREATE DATABASE testdb;
  
Query OK, 1 row affected (0.00 sec)
  
#查看数据库
  
MariaDB [(none)]> SHOW DATABASES;
  
+--------------------+
  
| Database           |
  
+--------------------+
  
| information_schema |
  
| mysql              |
  
| performance_schema |
  
| test               |
  
| testdb             |
  
+--------------------+
  
5 rows in set (0.02 sec)
  

  
#使用testdb数据库,
  
MariaDB [(none)]> use testdb;
  
Database changed
  

  
SHOW CHARACTER SET;查看字符集
  
SHOW COLLATIONS;查看排序规则
  
创建表的三种方式:
  
(1) 直接创建;
  
CREATE TABLE [IF NOT EXISTS] tb_name (col1 datatype 修饰符, col2 datatype 修饰符) ENGINE=''
  
数据类型:
  
    字符:
  
    变长字符:VARCHAR(#), VARBINARY(#)
  
    定长字符: CHAR(#), BINARY(#)
  
    内建类型:ENUM, SET
  
    对象:TEXT, BLOB
  
    数值:
  
    精确数值:
  
      整型:INT
  
      TINYINT, SMALLINT, INT, MEDIUMINT, BIGINT
  
      十进制:DECIMAL
  
    近似数值:
  
      单精度: FLOAT
  
      双精度: DOUBLE
  
    日期时间型:
  
      日期:DATE
  
      时间:TIME
  
      日期时间:DATETIME
  
      时间戳:TIMESTAMP
  
      年份:YEAR(2), YEAR(4)
  
修饰符:
  
    所有类型适用:
  
    NOT NULL
  
    DEFAULT
  
    PRIMARY KEY
  
    UNIQUE KEY
  
    数值型适用:
  
    UNSIGNED
  
    AUTO_INCREMENT
  
CREATE TABLE [IF NOT EXISTS] 'tbl_name' (col1 type1, col2 type2, ...)
  
可选:col type1
  
    PRIMARY KEY(col1,...)#可以定义关联主键
  
    INDEX(col1, ...)  #以此字段为基础创建索引
  
    UNIQUE KEY(col1, ...)
  
    表选项:
  
    ENGINE [=] engine_name
  
    ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
  
(2) 通过查询现存的表创建;新表会被直接插入查询而来的数据;
  
    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
  
    [(create_definition,...)]
  
    [table_options]
  
    [partition_options]
  
    select_statement
  
(3) 通过复制现存的表的表结构创建;不复制数据;
  
    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
  
    { LIKE old_tbl_name | (LIKE old_tbl_name) }
  
#创建表students,定义id为无符号非空int型,并且id是主键,name是VARCHAR非空型,最多容纳20字符,age是无符号tinyint型
  
MariaDB [testdb]> CREATE TABLE students (id int UNSIGNED NOT NULL PRIMARY KEY, name VARCHAR(20) NOT NULL, age tinyint UNSIGNED);
  
Query OK, 0 rows affected (0.04 sec)
  

  
#查看表详细信息
  
MariaDB [testdb]> DESC students;
  
+-------+---------------------+------+-----+---------+-------+
  
| Field | Type                | Null | Key | Default | Extra |
  
+-------+---------------------+------+-----+---------+-------+
  
| id    | int(10) unsigned    | NO   | PRI | NULL    |       |
  
| name  | varchar(20)         | NO   |     | NULL    |       |
  
| age   | tinyint(3) unsigned | YES  |     | NULL    |       |
  
+-------+---------------------+------+-----+---------+-------+
  
3 rows in set (0.01 sec)
  
#定义联合主键---此次创建id和name组合起来为主键,这样只要求id+name和其他行不同即可
  
MariaDB [testdb]> CREATE TABLE tbl2 (id int UNSIGNED NOT NULL, name VARCHAR(20) NOT NULL, age tinyint UNSIGNED, PRIMARY KEY(id,name));
  
Query OK, 0 rows affected (0.00 sec)
  

  
MariaDB [testdb]> DESC tbl2;
  
+-------+---------------------+------+-----+---------+-------+
  
| Field | Type                | Null | Key | Default | Extra |
  
+-------+---------------------+------+-----+---------+-------+
  
| id    | int(10) unsigned    | NO   | PRI | NULL    |       |
  
| name  | varchar(20)         | NO   | PRI | NULL    |       |
  
| age   | tinyint(3) unsigned | YES  |     | NULL    |       |
  
+-------+---------------------+------+-----+---------+-------+
  
3 rows in set (0.00 sec)
  

  
#查看正规创建命令:\G使用竖向格式
  
MariaDB [testdb]> SHOW CREATE TABLE students\G;
  
*************************** 1. row ***************************
  
       Table: students
  
Create Table: CREATE TABLE `students` (
  
  `id` int(10) unsigned NOT NULL,
  
  `name` varchar(20) NOT NULL,
  
  `age` tinyint(3) unsigned DEFAULT NULL,
  
  PRIMARY KEY (`id`)
  
) ENGINE=InnoDB DEFAULT CHARSET=latin1
  
1 row in set (0.00 sec)
  

  
#查看表状态:
  
MariaDB [testdb]> SHOW TABLE STATUS LIKE 'students'\G;
  
*************************** 1. row ***************************
  
           Name: students
  
         Engine: InnoDB
  
        Version: 10
  
     Row_format: Compact    #compact表示使用紧致型存储
  
           Rows: 0
  
Avg_row_length: 0
  
    Data_length: 16384    #表中数据大小
  
Max_data_length: 0        #表的最大容量,此处0表示无上限
  
   Index_length: 0        #索引大小(字节为单位)
  
      Data_free: 10485760    #目前已分配但未被使用的空间
  
Auto_increment: NULL        #下一次该增长到数字几
  
    Create_time: 2015-10-27 21:57:09
  
    Update_time: NULL
  
     Check_time: NULL        #最近一次执行checktable命令或myisamchk根据检查表的时间
  
      Collation: latin1_swedish_ci    #排序规则
  
       Checksum: NULL    #校验和
  
Create_options:         #创建表时额外指明的选项
  
        Comment:
  
1 row in set (0.00 sec)
  

  
#删除表:
  
DROP TABLE [IF EXISTS] 'tbl_name';
  

  
修改表:
  
ALTER TABLE 'tbl_name'
  
    字段:
  
        添加字段:add
  
        ADD col1 data_type [FIRST|AFTER col_name]
  
        删除字段:drop
  
        修改字段:alter, change, modify
  
    索引:
  
        添加索引:add
  
        删除索引: drop
  
    表选项
  
        修改:
  
查看表上的索引:SHOW INDEXES FROM [db_name.]tbl_name;
  

  
#使用ADD在name段之后添加gender段,类型为枚举类型
  
MariaDB [testdb]> ALTER TABLE students ADD gender ENUM('m','f') AFTER name;
  
Query OK, 0 rows affected (0.02 sec)
  
Records: 0  Duplicates: 0  Warnings: 0
  

  
MariaDB [testdb]> DESC students;
  
+--------+---------------------+------+-----+---------+-------+
  
| Field  | Type                | Null | Key | Default | Extra |
  
+--------+---------------------+------+-----+---------+-------+
  
| id     | int(10) unsigned    | NO   | PRI | NULL    |       |
  
| name   | varchar(20)         | NO   |     | NULL    |       |
  
| gender | enum('m','f')       | YES  |     | NULL    |       |
  
| age    | tinyint(3) unsigned | YES  |     | NULL    |       |
  
+--------+---------------------+------+-----+---------+-------+
  
4 rows in set (0.00 sec)
  

  
使用CHANGE修改表,注意之前是主键修改时不需要指明主键,UNSIGNED用于修饰int类型,所以必须放在int后
  
MariaDB [testdb]> ALTER TABLE students CHANGE id sid int UNSIGNED NOT NULL PRIMARY KEY;
  
ERROR 1068 (42000): Multiple primary key defined
  
MariaDB [testdb]> ALTER TABLE students CHANGE id sid int UNSIGNED NOT NULL;
  
Query OK, 0 rows affected (0.02 sec)
  
Records: 0  Duplicates: 0  Warnings: 0
  

  
MariaDB [testdb]> DESC students;
  
+--------+---------------------+------+-----+---------+-------+
  
| Field  | Type                | Null | Key | Default | Extra |
  
+--------+---------------------+------+-----+---------+-------+
  
| sid    | int(10) unsigned    | NO   | PRI | NULL    |       |
  
| name   | varchar(20)         | NO   |     | NULL    |       |
  
| gender | enum('m','f')       | YES  |     | NULL    |       |
  
| age    | tinyint(3) unsigned | YES  |     | NULL    |       |
  
+--------+---------------------+------+-----+---------+-------+
  
4 rows in set (0.00 sec)
  

  
#增加唯一键:唯一约束保证在一个字段或者一组字段里的数据与表中其它行的数据相比是唯一的。
  
MariaDB [testdb]> ALTER TABLE students ADD UNIQUE KEY(name);
  
Query OK, 0 rows affected (0.22 sec)
  
Records: 0  Duplicates: 0  Warnings: 0
  

  
MariaDB [testdb]> DESC students;
  
+--------+---------------------+------+-----+---------+-------+
  
| Field  | Type                | Null | Key | Default | Extra |
  
+--------+---------------------+------+-----+---------+-------+
  
| sid    | int(10) unsigned    | NO   | PRI | NULL    |       |
  
| name   | varchar(20)         | NO   | UNI | NULL    |       |
  
| gender | enum('m','f')       | YES  |     | NULL    |       |
  
| age    | tinyint(3) unsigned | YES  |     | NULL    |       |
  
+--------+---------------------+------+-----+---------+-------+
  
4 rows in set (0.00 sec)
  
#添加索引:如果创建索引时没给名字,则索引名为字段名。
  
索引是特殊数据结构;定义在查找时作为查找条件的字段;
  
创建索引:
  
CREATE INDEX index_name ON tbl_name (index_col_name,...);
  
删除索引:
  
DROP INDEX index_name ON tbl_name;
  
在age字段添加一个索引
  
MariaDB [testdb]> ALTER TABLE students ADD INDEX(age);
  
Query OK, 0 rows affected (0.01 sec)
  
Records: 0  Duplicates: 0  Warnings: 0
  
#查看索引
  
MariaDB [testdb]> SHOW INDEXES FROM students\G;
  
*************************** 1. row ***************************
  
        Table: students
  
   Non_unique: 0
  
     Key_name: PRIMARY
  
Seq_in_index: 1
  
  Column_name: sid
  
    Collation: A
  
  Cardinality: 0
  
     Sub_part: NULL
  
       Packed: NULL
  
         Null:
  
   Index_type: BTREE
  
      Comment:
  
Index_comment:
  
*************************** 2. row ***************************
  
        Table: students
  
   Non_unique: 0
  
     Key_name: name
  
Seq_in_index: 1
  
  Column_name: name
  
    Collation: A
  
  Cardinality: 0
  
     Sub_part: NULL
  
       Packed: NULL
  
         Null:
  
   Index_type: BTREE
  
      Comment:
  
Index_comment:
  
*************************** 3. row ***************************
  
        Table: students
  
   Non_unique: 1
  
     Key_name: age
  
Seq_in_index: 1
  
  Column_name: age
  
    Collation: A
  
  Cardinality: 0
  
     Sub_part: NULL
  
       Packed: NULL
  
         Null: YES
  
   Index_type: BTREE
  
      Comment:
  
Index_comment:
  
3 rows in set (0.00 sec)
  
#删除索引:(索引一旦不使用应该即刻删除,否则会影响数据库性能)
  
DROP INDEX name ON students;
  
查看是否删除成功:
  
MariaDB [testdb]> SHOW INDEX FROM students\G;
  
*************************** 1. row ***************************
  
        Table: students
  
   Non_unique: 0
  
     Key_name: PRIMARY
  
Seq_in_index: 1
  
  Column_name: sid
  
    Collation: A
  
  Cardinality: 0
  
     Sub_part: NULL
  
       Packed: NULL
  
         Null:
  
   Index_type: BTREE
  
      Comment:
  
Index_comment:
  
1 row in set (0.00 sec)
  

  
#删除字段:
  
MariaDB [testdb]> ALTER TABLE students DROP age;



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-624838-1-1.html 上篇帖子: 关系数据库SQL语言简介 下篇帖子: vsftpd server
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表